MySQL高可用框架--组复制(group replication)搭建测试

一、框架搭建

      1.首先备份主库数据,有两种方法,冷备份和热备份。冷备份需要先停止master服务,sudo/etc/init.d/mysql stop,然后通过cp或者scp等命令将数据文件传输到指定文件夹,这里我选择在一台服务器上启动三个实例来搭建组复制,所以就用sudo cp -R /var/lib/mysql /home/piriineos/data/mysql/data1/来复制数据,需要注意的是,这里用root权限复制数据所以在目标地点的数据所有者是root,对mysql需要将数据文件改为mysql所有,sudo chown -R mysql /home/piriineos/data/mysql ,复制成功后还需要注意一点就是auto.cnf文件,用来保存根据sererid生成的server uuid,对组复制有用,用来唯一标识mysql实例,这里由于复制的master的文件,所以将uuid随便改几个数字以区别开来。

       热备份不需要停止服务,这在生产环境是必须的条件。这里我用mysqldump来转储数据,mysqldump对innodb表来说不影响服务,但是对于myisam表会用FTWRL来锁住所有表,导致服务停止。这里我就不备份系统表了,mysqldump --databases mgr--single-transaction --master-data=2 -uroot -p -h127.0.0.1>/home/piriineos/data/msater_backup.sql 。 然后在初始化一个新的数据库,mysql_install_db --basedir=/var/lib/mysql--datadir=/home/piriineos/data/mysql/data1/ --user=mysql,然后启动实例用source或者通道将备份的库导入到新实例的库中,不过在此之前需要将新的两个数据库配置一下配置文件。

       2.8.0的真正的配置文件并不是存储在/etc/mysql/my.cnf,可以将其打开发现!includedir /etc/mysql/mysql.conf.d/这么一句话,这是将这个文件里的内容include到my.cnf里,因而我将真正的配置文件复制两份到新的数据库那里,sudo cp /etc/mysql/mysql.conf.d/mysqld.cnf/home/piriineos/data/mysql/data1/ ,同样需要更改所有者,然后配置参数。

       首先是实例启动参数的配置:

       port            = 3307

       pid-file   =/tmp/mysql1.pid

       socket            =/tmp/mysql1.sock

       datadir           =/home/piriineos/data/mysql/data1/mysql

       log-error =/home/piriineos/data/mysql/error1.log

       server-id = 13307               #这个必须设置,不然会使用默认值

       然后是mysql运行参数的设置:

       innodb_buffer_pool_size = 1073741824   #我的机器总内存8G,系统运行占用3G,因而每个实例分配1G内存

       innodb_buffer_pool_instances = 1

       innodb_flush_log_at_trx_commit = 1

       sync_binlog = 1                      #跟上一个参数配合使用,在每次事务的提交阶段分别前后写入硬盘

       binlog_checksum = NONE    #组复制必须关闭

       open_files_limit = 65535

       thread_cache_size = 8

       transaction_isolation =READ-COMMITTED        

       然后是日志和gtid的参数设置:

       log_bin = mysql-bin      #避免使用默认服务器名

       binlog_format = row      #组复制必须

       slow_query_log = 1

       slow_query_log_file =/home/piriineos/data/mysql/data1/mysql/mysql-slow.log

       skip-slave-start = 1       

       log-slave-updates = 1     #必须

       gtid-mode = ON            #必须

       enforce-gtid-consistency = ON     #必须

       binlog_gtid_simple_recovery=1    #在5.7.17后建议开启,加快恢复速度

       master_info_repository=TABLE   #必须

       relay_log_info_repository=TABLE      #必须

       sync_relay_log = 1

       sync_master_info = 100

       sync_relay_log_info = 100

       relay-log-index = relay-log.index 

       relay-log = relay-log

       然后是组复制参数设置:

       transaction_write_set_extraction =XXHASH64  #唯一确定事务影响行的主键,必须开启

       loose-group_replication_group_name ='aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa' #唯一标识一个组

       loose-group_replication_ip_whitelist ='127.0.0.1/8'    #允许接入组的ip来源

       loose-group_replication_local_address ='127.0.0.1:33062' #用于组间通信的地址

       loose-group_replication_group_seeds ='127.0.0.1:33061,127.0.0.1:33062,127.0.0.1:33063'       #donor地址

       loose-group_replication_bootstrap_group =OFF  #引导节点设置

       loose-group_replication_single_primary_mode= true  #单主模式

       loose-group_replication_enforce_update_everywhere_checks= false

       loose-group_replication_start_on_boot =false     #避免重启自动自动组复制

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值