MySQL复制(四)--多源(主)复制

MySQL复制(四)--多源(主)复制,第1张

概述(一)多主复制概述 所谓多主复制,是将多个主库的数据复制到一个从库中。通常用于数据仓库整合数据,比如OLTP系统为了分散业务压力,对业务进行分库分表,当要对数据进行分析的时候,可以使用多主复制将数据整

 

 

(一)多主复制概述

所谓多主复制,是将多个主库的数据复制到一个从库中。通常用于数据仓库整合数据,比如olTP系统为了分散业务压力,对业务进行分库分表,当要对数据进行分析的时候,可以使用多主复制将数据整合到同一个数据库实例上,便于统一分析。MysqL从5.7版本开始支持多主复制。

本文通过搭建多主复制环境来了解MysqL多主复制的特点。

 

(二)基础环境

 主库1主库2从库
服务器IP地址192.168.10.11192.168.10.12192.168.10.13
MysqL版本5.7.245.7.245.7.24
待同步的数据库db1db2从库上创建空库db1和db2

 

(三)多主复制搭建

(3.1)创建用于复制的用户(主库执行)

在2个主数据库上创建用于复制的用户rep,用户需具有“replication slave”权限。每个数据库上复制账号可以不相同,这里为了测试方便,创建为相同的账号。

MysqL> grant replication slave on *.* to 'rep'@%' IDentifIEd by 123';

 

(3.2)参数修改(从库执行)

-- 重启数据库失效,建议配置在启动文件中MysqLSET GLOBAL master_info_repository = table';MysqLSET GLOBAL relay_log_info_repository ';

 

(3.3)主库创建测试数据,备库创建空数据库

主库1:

create database db1;MysqLuse db1MysqLtable test01 -> ( -> ID1 int not null auto_increment,-> name varchar(30),1)">-> primary key(ID1) );MysqLinsert into test01 values(1,a');

主库2:

db2;MysqL db2MysqL test02 -> ID2 (ID2) into test02 2,1)">b');

 

备库:

database db2;

 

(3.4)将主库数据手动同步到备库(从库执行)

在备库上执行远程导出 *** 作:

[root@slavedb ~]# MysqLdump -uroot -p123456 -h192.168.10.11  --master-data=2 --set-gtID-purged=OFF -P3306 db1 --single-transaction  > db1.sql[root@slavedb ~]# MysqLdump -uroot -p123456 -h192.12  --master-data=2 --set-gtID-purged=OFF -P3306 db2 --single-transaction  > db2.sql

 

在备库上执行导入 *** 作:

[root@slavedb ~]# MysqL -h192.13 -P3306 -uroot -p123456 db1 < /root/db1.sql [root@slavedb ~]# MysqL -h192.13 -P3306 -uroot -p123456 db2 < /root/db2.sql

 

(3.5)开启从库同步db1(从库执行)

STEP1:确认主库1导出到的日志位置

cat db1.sql |grep "CHANGE MASTER"|less-- CHANGE MASTER TO MASTER_LOG_file='master-bin.000029',MASTER_LOG_POS=1835;

STEP2:将主库1添加到复制环境

> change master to -> master_host=192.168.10.11,1)">-> master_port=3306-> master_user-> master_password-> master_log_filemaster-bin.000029-> master_log_pos1835 for channel ch1'
;query OK,1); Font-weight: bold">0 rows affected,2 warnings (0.02 sec)

STEP3:开启主库1的复制

> start slave 0 rows affected (0.00 sec)

 

(3.6)开启从库同步db2(从库执行)

STEP1:确认主库2导出到的日志位置

cat db2.sql |1419;

STEP2:将主库2添加到复制环境

change master to master_host=192.168.10.123306rep123=1419 for channel ch2';

STEP3:开启主库2的复制

MysqL> start slave ';

 

(3.7)测试数据复制是否正常

主库1:

11,1)">aa');

主库2:

22,1)">bb');

备库:

select from db1.test01;+---+------+| ID1 | name || 1 | a | 11 | aa 2 rows in set (0.00 sec)MysqL db2.test02;| ID2 2 | b 22 | bb 0.00 sec

数据复制正常。

 

(3.8)确认复制状态

>
show slave status \G*************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.10.11 Master_User: rep Master_Port: Connect_Retry: 60 Master_Log_file: master-bin.000029 Read_Master_Log_Pos: 1835 Relay_Log_file: slavedb-relay-bin-ch1.000002 Relay_Log_Pos: 321 Relay_Master_Log_file: master Slave_IO_Running: Yes Slave_sql_Running: Yes Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_table: Replicate_Ignore_table: Replicate_Wild_Do_table: Replicate_Wild_Ignore_table: Last_Errno: 0 Last_Error: Skip_Counter: Exec_Master_Log_Pos: Relay_Log_Space: 534 Until_Condition: None Until_Log_file: Until_Log_Pos: Master_SSL_Allowed: No Master_SSL_CA_file: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: Master_SSL_Verify_Server_Cert: No Last_IO_Errno: Last_IO_Error: Last_sql_Errno: Last_sql_Error: Replicate_Ignore_Server_IDs: Master_Server_ID: 1 Master_UUID: caa64a22-481a-11ea-b0f1-000c29fb6200 Master_Info_file: MysqL.slave_master_info sql_Delay: sql_Remaining_Delay: NulL Slave_sql_Running_State: Slave has read all relay log; waiting for more updates Master_Retry_Count: 86400 Master_Bind: Last_IO_Error_Timestamp: Last_sql_Error_Timestamp: Master_SSL_Crl: Master_SSL_Crlpath: RetrIEved_GtID_Set: Executed_GtID_Set: 8a885841-481c-bdc4-000c29840f0f:1-10-000c29fb6200:466040 auto_position: Replicate_Rewrite_DB: Channel_name: ch1 Master_TLS_Version: 2. row 10.121419-ch2.2 Replicate_Rewrite_DB: Channel_name: ch2 Master_TLS_Version: 0.00 sec)

 

【完成】

 

附录:

MysqL复制(replication)文档集合:

1.复制概述
2.基于二进制日志文件位置(binlog)配置复制
3.基于全局事物标识符(GTID)配置复制
4.多源复制
5.级联复制
6.半同步复制
7.延迟复制
8.复制过滤规则
9.对复制进行故障排除
10.故障切换
11.复制管理
总结

以上是内存溢出为你收集整理的MySQL复制(四)--多源(主)复制全部内容,希望文章能够帮你解决MySQL复制(四)--多源(主)复制所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1152445.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存