(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半同步复制高可用集群(Centos7)