Mysql 5.7多源复制

来源:互联网 发布:域名查询腾讯 编辑:程序博客网 时间:2024/06/05 11:05

汇聚数据:尤其是在分库分表的一些场景中,数据集中统计分析操作可以在1台从库服务器上实现。
节省成本:数据集中存放可避免服务器等软硬件资源浪费,5.7之前1主1从或者1主多从的方案需要为每个主机都安置一台备机;5.7推出多源复制之后,可以将多个从库进行合并,至于是合并存放在高端还是低端服务器上,取决于分析、统计等业务在整体业务中的优先级、繁忙程度等因素。
集中备份:方便在一台服务器备份所有已收到的数据库数据。
异地灾备:将从库放在距离远的地方,可用于异地备份项目。

Master1:10.0.80.199
Master2:10.0.80.200
Slave:10.0.80.201

#每台mysql 服务器都需要加#my.cnf要加两个参数才可以在GTID多源复制master-info-repository=TABLErelay-log-info-repository=TABLE#从库启用enhanced multi-threaded slave (多线程复制)slave-parallel-type=LOGICAL_CLOCK#复制并发数设置slave-parallel-workers=8relay_log_recovery=ONlog-slave-updates = ON#复制的库,只接受下面两种数据库,这两种数据来源不同的通道,不指定默认备份全部库replicate-do-db = master1replicate-do-db = master2#不复制的库replicate-ignore-db = mysqlreplicate-ignore-db = information_schemareplicate-ignore-db = performance_schemareplicate-ignore-db = sys#GTID模式(使用GTID就可以不用记录备份位置点)gtid-mode=onenforce-gtid-consistency

[master1]#mysql>grant replication slave on *.* to 'root'@'10.0.80.201' identified by '123456';[master2]#mysql>grant replication slave on *.* to 'root'@'10.0.80.201' identified by '123456';#导出[master1]#mysqldump -uroot -p123456 --master-data=2 --single-transaction --databases  --add-drop-database  master1  >master1.sql#导入[slave]#mysql -uroot -p  <./master1.sql#分别找出Master1和Master2的binlog位置和Pos位置[slave]#cat master1.sql |grep "CHANGE MASTER"-- CHANGE MASTER TO MASTER_LOG_FILE='Master_1-bin.000001', MASTER_LOG_POS=1539;#Binlog模式[slave]#mysql> change master to master_host='10.0.80.199',master_user='root',master_password='123456',master_port=3306,master_log_file='Master_1-bin.000001',master_log_pos=1539 for channel 'master1';#GTID模式配置,(推荐使用GTID模式)[slave]#mysql> change master to master_host='10.0.80.200',master_user='root',master_password='123456',master_port=3306,master_auto_position=1 for channel 'master2';#启动slave[slave]#mysql>start slave for channel "master1";[slave]#mysql>start slave for channel "master2";#两个通道一起起动了[slave]#mysql> start slave;


#显示通道状态

 [slave]#mysql>SHOW SLAVE STATUS FOR CHANNEL 'master1'
#停止批定通道的IO_THREAD
 [slave]#mysql> stop slave io_thread  for channel 'master1';




主库设置从库跳过错误设置:解决方案: 让从库跳过这一步操作,继续执行其它的操作方法一: 命令行实现,跳过这一步;[slave]#mysql> stop slave;[slave]#mysql> set global sql_slave_skip_counter =1;[slave]#mysql> start slave;方法二: 配置文件中,指定忽略的错误;vi my.cnf#添加可忽略错误状态slave-skip-errors = 1032,1062,1007sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES




0 0
原创粉丝点击