(5.5)mysql高可用系列——MySQL半同步复制(实践)

Posted gered

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(5.5)mysql高可用系列——MySQL半同步复制(实践)相关的知识,希望对你有一定的参考价值。

【1】配置my.cnf

【1.1】通用复制配置

#replication_new
log_bin=/mysql/log/3306/mysql-bin #开启binlog
log_bin_index=/mysql/log/3306/mysql-bin.index
binlog_format=row
binlog_rows_query_log_events=on
max_binlog_size=2048

bind-address=0.0.0.0
server_id=2013306
expire_logs_days=7    #超过7天的binlog清理
innodb_support_xa=1
binlog_cache_size=1M
log_bin_trust_function_creators=1    #同步存储过程、函数、触发器
innodb_flush_log_at_trx_commit=1
sync_binlog=1
transaction-isolation=read-committed

relay_log=/mysql/log/3306/relaylog/mysql-relay.log
log-slave-updates=1
read_only=1
slave-parallel-type=LOGICAL_CLOCK
slave-parallel-workers=4
master_info_repository=table #master_info 会记录到 mysql.slave_master_info
relay_log_info_repository=table #relay_log 会记录到,mysql.slave_relay_log_info
relay_log_recovery=1
slave_skip_errors=ddl_exist_errors
slave_preserve_commit_order=1

【1.2】半同步复制配置(5.7)

  两种办法

  【1.2.1】手动安装半同步复制插件(在mysql环境下,主从都安装)

    install plugin rpl_semi_sync_master soname ‘semisync_master.so‘;

    install plugin rpl_semi_sync_slave soname ‘semisync_slave.so‘;

    show plugins; -- 查看插件安装情况

      技术图片

 

  【1.2.2】写入配置文件(推荐使用,my.cnf)

    show variables like ‘plugin%‘; -- 查看插件路径

plugin_dir=/mysql/app/mysql/lib/plugin/
plugin_load=rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so
loose_rpl_semi_sync_master_enabled=1 #MySQL开启主的半同步复制(rpl_semi_sync_master_enabled)
loose_rpl_semi_sync_slave_enabled=1 #MySQL5.6开启从的半同步复制
loose_rpl_semi_sync_master_timeout=5000 #超时5秒,切回异步
rpl_semi_sync_master_wait_for_slave_count=1 #至少收到1个slave发会的ack
rpl_semi_sync_master_wait_point=AFTER_SYNC #MySQL 5.7的方法,AFTER_SYNC(default,增强半同步) & AFTER_COMMIT(传统半同步)

 

【3】进行初始化操作

#【1】在主库上 准备复制账户 
create user ‘rpl‘@‘192.168.1.%‘ identified by ‘123456‘;
grants replication on *.* to ‘rpl‘@‘192.168.1.*‘;
flush privileges;
select user,host from mysql.user;
 #【2】在主库上,设置读锁定有效。以便获取一个一致性的快照   
mysql下操作:(锁表,获取一致性)   
flush tables with read lock;

#【
3】在主库上 show master status;获取主库当前的二进制名和偏移量pos位置。  
 show master status;   
-- 查看到的日志名记录下来,比如:mysql-bin.000002 , postion: 881

#【
4】备份主库还原到从库   
逻辑方式:mysqldump。然后scp拷贝过去。然后登录上从库的mysql,直接把dump的文件加载进去即可。
物理方式:直接拷贝,备份删除从库原有data目录,然后把主库的data目录复制过去。
复制到从库后记得删除拷贝过来data
/下的auto.cnf,否则uuid会一样,导致无法复制。   
不管是物理还是逻辑方式,CP或者mysqldump完后,就都可以解锁主库了   
在主库的mysql登录下,使用命令,unlock tables;

 

以上是关于(5.5)mysql高可用系列——MySQL半同步复制(实践)的主要内容,如果未能解决你的问题,请参考以下文章

基于半同步复制的MHA高可用MySql集群架构搭建实战

MySQL半同步复制和MHA高可用架构设计

MHA-结合MySQL半同步复制高可用集群(Centos7)

Heartbeat+HAProxy+MySQL半复制高可用架构

mysql主从复制--mysql-5.5异步半同步配置

MySQL主从复制