您的位置:68399皇家赌场 > 虚拟主机 > MySQL搭建类别之多实例

MySQL搭建类别之多实例

发布时间:2019-11-24 03:14编辑:虚拟主机浏览(109)

    今天转换服务器,要做数据库迁移,将数据库内的数码从服务器A迁移到劳动器B。由于数据量非常的大,直接做dump耗费时间太长,故而选取如下方式处理:首先,在服务器B上设置了与服务器A同版本的MySQL,甘休MySQL服务,将安装后的data目录删除;然后,服务器A锁住全体表,从服务器A将全体data目录和数据文件直到拷贝到服务器B上,校正服务器B上MySQL的my.cnf文件中的datadir指向新的data目录。最终,运营服务器B上的MySQL服务。结果运转退步,报出 “不可能运维MySQL服务”至极,查看错误日志,开采标题陈述如下:InnoDB: Error: log file ./ib_logfile0 is of different size 0 63963136 bytesInnoDB: than specified in the .cnf file 0 6291456 bytes!这段新闻的情趣是日记文件比my.cnf中设置的日志文件分配的定额要大,服务无法运转。原因是日记文件从服务器A复制而来,在服务器A上的my.cnf中国和东瀛记分配的定额要比服务器B上的my.cnf日志分配的定额大,总计日志文件大小:63963136/=61M,6291456/=6M,怪不得吧?将服务器B上的my.cnf中的innodb_log_file_size的参数设置为61M,再度运行mysql,运维成功。小结须求注意事项:1.修正datadir为新的data目录。2.客观改良innodb_log_file_size的值为实在迁移过来的日志文件大小。3.字符集/私下认可引擎的改换,要与迁移前统生龙活虎。

    # /usr/local/mysql/bin/mysqladmin--defaults-file=/usr/local/mysqla/my.cnf shutdown

    socket = /data/mysqldata/mysqld.sock #基于实际填写目录

    # /usr/bin/mysql_install_db --user=mysql--datadir=/data/lib/mysqlb

    relay_log_recovery = 1

    # ps -ef|grep mysql

    tmp_table_size = 64M

    # cd /usr/local/mysqlb/

    innodb_print_all_deadlocks = 1

    # chkconfig --add mysqlb

    #MySQL读入缓冲区的大小

    #skip-networking

    #这些参数在大器晚成从头初阶化时将要参加my.cnf里,借使已经创办了表,再修改,运营MySQL会报错。最棒为8K

    重新编写翻译在此以前,要灭绝原本的缓存音讯及对象文件,如下:

    #当buffer_pool的值一点都不小的时候为1,超小的装置为8

    # cd /usr/local/mysqla/

    innodb_sort_buffer_size = 16M

    mysql 3361 2828 25 13:13 pts/1 00:00:00 /usr/local/mysqlb/bin/mysqld--basedir=/usr/local/mysqlb --datadir=/data/lib/mysqlb --plugin-dir=/usr/local/mysqlb/lib/plugin--user=mysql --log-error=/data/lib/mysqlb/mysql.err--pid-file=/data/lib/mysqlb/mysql.pid --socket=/data/lib/mysqlb/mysql.sock--port=3307

    innodb_lock_wait_timeout = 30

    key_buffer_size =256M

    #innodb_flush_method = O_DIRECT-不通过系统缓存直接存入磁盘,

    源码包是最灵敏的安装包,可定制编写翻译一些门道参数,可设置到任何路线,因而可在大器晚成台服务器搭建多个MySQL实例。本例安装两个MySQL实例,步骤如下:

    innodb_file_format_max = Barracuda

    if test -r "$basedir/my.cnf"

    interactive_timeout = 1200

    datadir =/data/lib/mysqlb

    socket = /data/mysqldata/mysqld.sock

    生龙活虎. 接纳源码包安装MySQL完成多实例

    innodb_buffer_pool_load_at_startup = 1

    # /usr/local/mysqlb/bin/mysql --help|grep '/my.cnf'

    innodb_log_group_home_dir = /data/mysqldata

    skip-external-locking

    innodb_large_prefix = 1

    2. 创办系统数据库

    [root@001 ~]# cd /usr/local/

    1. 预备干活

    3、解压mysql,创设软连接并修改属组:

    假诺参数文件已安顿好,端口分别为3306、3307,basedir分别为/usr/local/mysqla、/usr/local/mysqlb,datadir分别为/data/lib/mysqla、/data/lib/mysqlb。

    #开启gtid,必需着力全开

    # vi /etc/rc.d/init.d/mysqld_m

    innodb_thread_concurrency = 8

    运营MySQL实例,要求为datadir目录设置科学的权限,不然实例运营战败;这一步缺省应该已经安装,检查一下,若未安装,则经过如下命令设置。

    #MySQL数据库及表(仅MyISAM)帮助符号链接(symbolic link),即数据库或表能够储存在my.cnf中钦点datadir之外的分区或目录。

    平等设置多个MySQL实例,步骤如下:

    #bind-address = 127.0.0.1 bind-address后边增添远程访谈IP地址或然禁掉那句话就能够让远程机登录拜候了

    ――拷贝服务文件

    log-error = /data/mysqldata/error.log #借助真实情况填写

    # rm /etc/rc.d/init.d/mysql

    slave_skip_errors = ddl_exist_errors

    # cp /usr/local/mysql/support-files/mysql.server/etc/rc.d/init.d/mysqla

    #表示记录下并未有运用索引的查询

    /etc/my.cnf /etc/mysql/my.cnf /usr/local/mysqlb/my.cnf ~/.my.cnf

    [mysqld]

    extra_args="-e$datadir/my.cnf"

    master_info_repository = TABLE

    default_storage_engine = InnoDB

    log_slow_slave_statements = 1

    root 2828 13474 0 13:13 pts/1 00:00:00 /bin/sh/usr/local/mysqlb/bin/mysqld_safe --user=mysql

    ########innodb settings########

    RPM包的公文布局是固定的,无法校正,因而后生可畏台服务器平常只可以设置三个MySQL实例。但大家了解,无论何种措施,MySQL实例都以由此调用mysqld_safe命令来运行的,而mysqld_safe命令可透过--defaults-file参数来显式钦命三个参数文件,由此等同可在生龙活虎台服务器安装、运维八个MySQL实例,只可是要对劳动运转文件做一些调治,上面就来品尝一下那一个艺术。

    #undo日志回滚段默感觉128

    # scripts/mysql_install_db --user=mysql--basedir=/usr/local/mysqlb --datadir=/data/lib/mysqlb

    #数量缓冲区buffer pool大小,提议利用物理内部存款和储蓄器的 70%

    # chkconfig --add mysqla

    #relay-log日志记录的是从服务器I/O线程将主服务器的二进制日志读取过来记录到从服务器当和姑件,然后SQL线程会读取relay-log日志的开始和结果并选拔到从服务器

    3. 安排参数文件

    #==========================================================================================================================================================================

    log_error =/data/lib/mysqlb/mysql.err

    skip_name_resolve = 1 #其大器晚成参数是禁绝域名深入剖析的(当然,也包罗主机名卡塔 尔(英语:State of Qatar)。非常多童鞋会好奇,那背后的法规是如何,什么状态下打开这些参数相比较切合。

    # service mysqld_m start|stop 1

    #从服务器的更新是不是写入二进制日志

    # cp mysql mysqla

    innodb_strict_mode = 1

    socket =/data/lib/mysqla/mysql.sock

    read_buffer_size = 16M

    mysqladmin = /usr/bin/mysqladmin

    #不仅次设定值的SQL即被记录到慢查询日志

    ――拷贝服务文件

    slow_query_log = 1

    fi

    ########semi sync replication settings########

    mysqld_multi与安装包类型非亲非故,所以不管源码包、二进制包,依旧RPM包都自带了那么些程序脚本,假设MySQL已成功安装。

    binlog_format = mixed

    drwxr-xr-x 12 root root 4096 Sep 27 14:37 mysqlb

    log_slow_admin_statements = 1

    mysqld_pid=`ps --user=mysql -f|grep "$libexecdir/mysqld--defaults-file=$my_cnf"|awk '{print $2}'`

    tmpdir = /tmp

    | basedir |/usr |

    #innodb独享表空间,有一点点众多,瑕疵会形成单个表文件过大

    #mysqld_pid=`pidof $libexecdir/mysqld`

    #当每举办n次事务提交之后,MySQL将扩充一遍fsync之类的磁盘同步指令来将binlog_cache中的数据强制写入磁盘。设置为零是让系统自行决定

    slow-query-log-file = /data/lib/mysqlb/mysql-slow.log

    plugin_load

    "rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"

    loose_rpl_semi_sync_master_enabled = 1

    loose_rpl_semi_sync_slave_enabled = 1

    loose_rpl_semi_sync_master_timeout = 5000

    #表示转储每种bp instance LRU上最热的page的比例。通过安装该参数可以收缩转储的page数。

    innodb_buffer_pool_dump_pct = 40

    #刷脏的历程N-1

    innodb_page_cleaners = 4

    innodb_undo_log_truncate = 1

    innodb_max_undo_log_size = 2G

    #决定回笼(减弱)undo log的频率.undo log空间在它的回滚段还未获取释放从前不会缩短,

    innodb_purge_rseg_truncate_frequency = 128

    log_timestamps=system

    #该参数基于MySQL5.7 Group Replication组复制的,未有选拔不要设置

    #show_compatibility_56=on

    #========================================================================

    #多少个着重的参数配置和表达

    #innodb_log_file_size = 4G :做试验能够变动的小点,线上情状推荐用4G,早先5.5和#5.1等版本之所以官方给的值非常的小,是因为太大后有bug,将来bug已经修复

    #innodb_undo_logs = 128和innodb_undo_tablespaces = 3提出在安装早前就规定好该值,后续更正比较辛苦

    #[mysqld],[mysqld-5.7]这种tag表明了上边包车型的士配备在怎么版本下才生效,[mysqld]下均生效

    #autocommit,那么些参数在5.5.X以后才有,安装5.6.X的时候要小心先把该参数注释掉,等装置落成后,再行张开, 5.7.X#不用预先注释

    #datadir, innodb_log_group_home_dir, innodb_undo_directory应当要留意她的权力是 mysql:mysql

    #========================================================================

    [root@001 mysql]# ./bin/mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysqldata --initialize

    初阶化完毕后需记下下初始化密码

    图片 1

    [root@001 mysqldata]# grep 'password' /data/mysqldata/error.log #例市场价格形如上海教室,这里因为安插文件钦命了日志路线

    5、将mysql的劳动脚本放到系统服务中,并布署情形变量让系统能够一直动用mysql的相关命令

    [root@001 mysql]# bin/mysql_ssl_rsa_setup #生成sll密匙可选步骤,详见:

    [root@001 mysql]# cp support-files/mysql.server /etc/init.d/mysqld

    [root@test-1 mysql]# ldconfig

    [root@001 mysql]# echo "PATH=$PATH:/usr/local/mysql/bin" > /etc/profile.d/mysql.sh

    [root@001 mysql]# source /etc/profile.d/mysql.sh

    [root@test-1 mysql]# chkconfig mysqld on

    5、运行并登入改良密码

    [root@001 mysqldata]# service mysqld start

    图片 2

    登录成功但需矫正密码才可实行此外操作

    图片 3

    [root@001 ~]# mysql -uroot -p # 第三回登入 -p 前边不可能直接输入密码

    Enter password: #填入上边记录下的密码

       

    mysql> set password ='123456'

    到此设置收尾!!!

    附上mysql 5.6.36安装:

    http://www.cnblogs.com/imweihao/p/7156754.html

    将mysqld_multi.server文件拷贝到/etc/rc.d/init.d/目录下,并改个轻便点的名字

    ########basic settings########

    # mysql --socket=/data/lib/mysqlb/mysql.sock

    [root@001 ~]# useradd -g mysql -r -s /sbin/nologin -M -d /data/mysqldata mysql

    # tar -zxvf mysql-5.5.17.tar.gz

    max_connections = 800 ## MySQL的最明斯克接数,假如服务器的现身连接诉求量非常的大,提出调高此值,以充实互相连接数量,当然那建构在机器能帮助的情况下,因为只要连接数更加的多,介于MySQL会为种种连接提供连接缓冲区,就能够支付越多的内部存款和储蓄器,所以要适于调解该值,无法盲目提升设值。能够过'conn%'通配符查看当前状态的一连数量,以仲裁该值的高低。

    innodb_lock_wait_timeout = 50

    #innodb_file_per_table = 1

    1. 安顿参数文件

    server-id = 11

    (端口:3307,安装目录:/usr/local/mysqlb,数据文件目录:/data/lib/mysqlb卡塔 尔(英语:State of Qatar)

    #运维时load缓冲池,急迅预热缓冲池,将buffer pool的原委(文件页的目录卡塔尔dump到文件中,然后急迅load到buffer pool中。幸免了数据库的预热进程,升高了选择访谈的性情

    4. 开发银行实例

    log_error = /data/mysqldata/error.log #听新闻说实况填写路线

    back_log =50

    #要扶持符号链接,须要在布局中装置symbolic-links=1(较新的本子为暗许开启)

    ――拷贝解压后的mysql,生成如下八个公文夹,以用作多少个实例的安装目录

    [root@001 ~]# tar -zxvf mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz -C /usr/local/

    # scripts/mysql_install_db --user=mysql--datadir=/data/lib/mysqlb

    #==========================================================================================================================================================================

    怎么着技能在豆蔻梢头台服务器上搭建、运营八个MySQL实例,其关键在于如何为各种实例分配独立的参数文件,以下是二种常用的多实例方案,分别来学学、熟稔一下。

    user = mysql

    为了便利,如故要将其修改为劳动管理办法,实行如下修正操作。

    [root@001 ~]# groupadd mysql

    log_error =/data/lib/mysqla/mysql.err

    port = 3306

    MySQL running (30326) [ OK ]

    #=========================================================================================================================================================================

    ――运转服务

    #===================================================================================================================================================

    # cp -R mysql mysqla

    #笔录管理语句

    ――增添服务

    #决定是还是不是利用独立purge线程

    #skip-networking

    innodb_buffer_pool_dump_at_shutdown = 1

    l 5:找到'status',将得到mysqld进度的一声令下pidof替换为ps

    join_buffer_size = 128M

    # service mysql stop

    配置文件来自于网络,原版的书文者依据真实情况纠正并注释,具体参数自行改进

    5. 改变为服务管理章程

    #日志组所在的门径,默认为data的home目录;

    thread_cache_size =8

    autocommit = 1 #设置autocommit=0,则客户将平昔处在有些事务中,直到推行一条commit提交或rollback语句才会终止前段时间政工重新最早二个新的事务。set autocommit=0的裨益是在每每开启事务的情景下,减>少一遍begin的相互作用。

    ――安装注重包

    #innodb_undo_directory = /data/mysqldata

    sync-binlog = 1

    innodb_purge_threads = 1

    innodb_log_file_size = 64M

    read_rnd_buffer_size = 8M

    # chkconfig --add mysqla

    #该值设置过小将导致单个记录超越限定后写入数据库失利,且继续记录写入也将停业

    ――运维、关闭实例

    #敞开后会将兼具的死锁记录到error_log中

    # vi /etc/rc.d/init.d/mysqla

    #==========================================================================================================================================================================

    ――查看进程

    innodb_io_capacity_max = 8000

    Starting MySQL.. [ OK ]

    log_slave_updates = 1

    innodb_flush_log_at_trx_commit = 1

    innodb_undo_logs = 128

    # /usr/bin/mysqladmin --defaults-file=/etc/myb.cnf shutdown

    #这么些参数调控着innodb数据文件及redo log的开荒、刷写方式,

    # mysql --socket=/data/lib/mysqla/mysql.sock

    relay_log_info_repository = TABLE

    ――加多服务

    #运行时dump缓冲池

    --------------- -----------------

    [root@001 local]# cd mysql

    binlog_format = row

    [root@001 mysql]# chown -R mysql:mysql .

    innodb_lock_wait_timeout = 50

    #mysql在闭馆一个互为的连年此前所要等待的秒数

    3. 不足之处

    character_set_server=utf8mb4 #utf8mb4编码是utf8编码的超集,宽容utf8,并且能积累4字节的神采字符。选拔utf8mb4编码的低价是:存款和储蓄与获取数据的时候,不用再考虑表情字符的编码与解码难点。

    | Variable_name | Value |

    #将master.info和relay.info保存在表中

    1. 计划专业

    ########log settings########

    3. 布置参数文件

    #半同台复制

    三. 接纳RPM包安装MySQL实现多实例

    #innodb_flush_neighbors = 1

    # /usr/local/mysql/bin/mysqld_safe--defaults-file=/usr/local/mysqla/my.cnf &

    #MySQL在达成某个join(连接卡塔尔国必要的时候,为了收缩加入join的"被驱动表"的读取次数以进步品质,须求采纳到join buffer来支援完毕join操作当join buffer 太小,MySQL不会将该buffer存入磁盘文件而是先将join buffer中的结果与必要join的表实行操作,然后清空join buffer中的数据,继续将盈余的结果集写入次buffer中

    fi

    #事情等待获取财富等待的最长日子,超过这几个日子还没分配到能源则会回去应用战败,默许50s

    备考:此处的1、2独家表示参数配置文件中的[mysqld1]、[mysqld2],对应着几个MySQL实例;若此处不输入要操作的段体系,则缺省运维、关闭全数[mysqld]段。

    wait_timeout = 600

    ――改过服务运维文件

    binlog_gtid_simple_recovery = 1

    ――创造系统数据库及系统表

    slow_query_log_file = /data/mysqldata/slow.log

    --------------- -------

    #==================================================================================================================================================

    max_allowed_packet =1M

    long_query_time = 6

    innodb_log_buffer_size = 8M

    innodb_lru_scan_depth = 2000

    datadir=/data/lib/mysqlb

    innodb_file_format = Barracuda

    # /usr/local/mysql/bin/mysqladmin--defaults-file=/usr/local/mysqlb/my.cnf shutdown

    sort_buffer_size = 8M

    # make clean

    4、更正配置文件及开头化:

    read_buffer_size =1M

    #改为ON时,允许单列索引最大略达3072。不然最大为767

    mysql 2805 2270 113:13 pts/1 00:00:00 /usr/local/mysqla/bin/mysqld--basedir=/usr/local/mysqla --datadir=/data/lib/mysqla--plugin-dir=/usr/local/mysqla/lib/plugin --user=mysql--log-error=/data/lib/mysqla/mysql.err --pid-file=/data/lib/mysqla/mysql.pid--socket=/data/lib/mysqla/mysql.sock --port=3306

    max_allowed_packet = 64M

    pid-file =/data/lib/mysqlb/mysql.pid

    #敞开复制从库复制的慢查询的日志

    # make

    innodb_io_capacity = 4000

    1 row in set (0.00 sec)

    CentOS 6.9上安装Mysql 5.7.18 安装

    datadir=/data/lib/mysqla

       

    mysqlb 0:off 1:off 2:on 3:on 4:on 5:on 6:off

    #==========================================================================================================================================================================

    skip-name-resolve

    innodb_buffer_pool_instances = 8

    log-bin =/data/lib/mysqla/mysql-bin

    #开启轻易gtid,开启此项会晋级mysql试行复苏的性质

    else

    gtid_mode = on

    --------------- -------

    #MySQL的相继读缓冲区大小

    根据同等的法子,为第叁个MySQL实例调治服务运行文件。

    sync_binlog = 5

    # /usr/local/mysql/bin/mysqld_safe--defaults-file=/usr/local/mysqlb/my.cnf &

    #innodb_page_size = 16K

    server-id = 3306

    expire_logs_days = 90

    ――若要关闭服务,可施行如下命令

    #mysql在关闭二个非交互作用的连年在此之前所要等待的秒数

    myisam_sort_buffer_size = 64M

    #MySQL的随机读缓冲区大小

    # groupadd -g 497 mysql

    #在innodb中拍卖客商查询后,其结果在内部存款和储蓄器空间的缓冲池已经产生变化,不过还没记录到磁盘。这种页面称为脏页,将脏页记录到磁盘的经过称为刷脏

    四. 采用mysqld_multi工具达成多实例

    log_bin = bin.log

    # scripts/mysql_install_db --user=mysql--basedir=/usr/local/mysqla --datadir=/data/lib/mysqla

    #支撑符号链接,正是能够透过软连接的办法,管理其余目录的数据库,最棒不要开启,当三个磁盘或分区空间相当不够时,能够展开该参数将数据存款和储蓄到其余的磁盘或分区。

    # tar zxvf mysql-5.5.17-linux2.6-x86_64.tar.gz -C /usr/local/

    innodb_log_buffer_size = 64M

    为了使每种MySQL实例具备二个独门的参数文件,只好采纳第一个缺省参数文件,将要参数文件寄放到各实例自身的设置目录下(basedir卡塔尔。别的,还需确认保证不设有第2个参数文件,因为它的事先等第较高,若存在则会覆盖前边的参数文件设置。

    [root@001 ~]# chmod -R 770 /data/mysqldata

    本文由68399皇家赌场发布于虚拟主机,转载请注明出处:MySQL搭建类别之多实例

    关键词: LNM mysql 脚本 详解 之家