MySQL5.7 多源复制搭建过程之分库分表

 

目录

前言

多源复制的使用场景

一、多源复制搭建过程

1.1: master01主节点的服务器my.cnf配置

1.2: master02主节点的服务器my.cnf配置

1.3: node01从节点的服务器my.cnf配置

二、细节配置过程

2.1:在master01和master02的MySQL上创建复制账号

 2.1.1:主节点上查看创建的用户信息

2.2: 在node01的MySQL的数据上创建复制账号

 2.2.1:从节点上查看创建的用户信息

 2.3:在master01和master02中分别使用mysqldump备份出demo 和test 数据库,把传输到node01从节点

 2.3.1:master01上备份导出demo数据库

  2.3.2:master02上备份导出test数据库

2.3.3: 在node01从库上进行恢复操作,需要先创建数据库

这时候报错,说明GTID配置未配置。

2.4: 在从库上分别配置master01->node01 和master02->node01的同步过程

2.5:开启主从复制

2.6:最后一步很关键的步骤,重启从库的mysql服务

2.7:如何清除主从同步配置,从库执行

 

系列文章目录

MySQL 主从复制搭建过程_平凡的小旋风的博客-CSDN博客

MySQL5.7 主从复制GTID复制配置搭建过程_平凡的小旋风的博客-CSDN博客

MySQL主从同步之半同步复制配置_平凡的小旋风的博客-CSDN博客


前言

ec30b3cd1f5540df9aa7a8e10ace631c.png

 

多源复制的使用场景

  1. 需要对各个业务部门的数据进行数据分析,这时候可以使用多源复制,把各个主数据库的数据复制到统一的数据库中。
  2. 在软件开发的时候,使用到了分库分表的情况下,为了实现后期的数据统计功能,这时候可以使用多源复制。
  3. 想把多个数据库的数据同步到一台服务器,可以使用多源复制。

 

一、多源复制搭建过程

备注:master01 和 master02 是主库,node01是从库;两个主库服务器不能有相同的数据库名字,不然会在从库中出现数据覆盖的现象。

3台服务器之间的数据库参数配置要保证开启GTID复制功能(gtid_mode=on 和 enforce_gtid_consistency=on)

1.1: master01主节点的服务器my.cnf配置


[mysqld]
 
port=33306
datadir=/datah/data/mysqldata/mysql
socket=/var/lib/mysql/mysql.sock
 
symbolic-links=0
 
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
 
character-set-server=utf8
collation-server=utf8_general_ci
lower_case_table_names=1
init_connect='SET NAMES utf8'
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
max_connections=5000
wait_timeout=20000
max_user_connections=5000
max_allowed_packet=128M
thread_stack=262144
 
#skip-grant-tables

#多源复制-master01
###############  start  ####################

server-id=100
log-bin=mysql-bin
binlog_format=row

#开启GTID复制功能
gtid_mode=on
enforce_gtid_consistency=on


###############  end  ####################
 

1.2: master02主节点的服务器my.cnf配置


[mysqld]
 
port=33306
datadir=/datah/data/mysqldata/mysql
socket=/var/lib/mysql/mysql.sock
 
symbolic-links=0
 
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
 
character-set-server=utf8
collation-server=utf8_general_ci
lower_case_table_names=1
init_connect='SET NAMES utf8'
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
max_connections=5000
wait_timeout=20000
max_user_connections=5000
max_allowed_packet=128M
thread_stack=262144
 
#skip-grant-tables

#多源复制-master02
###############  start  ####################

server-id=101
log-bin=mysql-bin
binlog_format=row

#开启GTID复制功能
gtid_mode=on
enforce_gtid_consistency=on


###############  end  ####################
 

1.3: node01从节点的服务器my.cnf配置


[mysqld]
 
port=33306
datadir=/datah/data/mysqldata/mysql
socket=/var/lib/mysql/mysql.sock
 
symbolic-links=0
 
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
 
character-set-server=utf8
collation-server=utf8_general_ci
lower_case_table_names=1
init_connect='SET NAMES utf8'
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
max_connections=5000
wait_timeout=20000
max_user_connections=5000
max_allowed_packet=128M
thread_stack=262144
 
#skip-grant-tables

#多源复制-node01
###############  start  ####################

server-id=103
log-bin=mysql-bin
binlog_format=row

#开启GTID复制功能
gtid_mode=on
enforce_gtid_consistency=on

master_info_repository=TABLE
relay_log_info_repository=TABLE


###############  end  ####################

 

二、细节配置过程

2.1:在master01和master02的MySQL上创建复制账号

create user 'mysync'@'172.16.25.%' identified by 'Abc123456';
grant replication slave on *.* to 'mysync'@'172.16.25.%';
flush privileges;

a50493865d2142ce83d1f407d776f0a4.png

 2.1.1:主节点上查看创建的用户信息

use mysql;

select a.User,a.host from user as a;

407b8de209b2452183319c21b31c7ecc.png

 

2.2: 在node01的MySQL的数据上创建复制账号

create user 'mysqlrepl'@'172.16.25.%' identified by 'Abc123456';
grant replication slave on *.* to 'mysqlrepl'@'172.16.25.%';
flush privileges;

25a07afef1ae4de9bb4dd59a9d86944e.png

 2.2.1:从节点上查看创建的用户信息

use mysql;

select a.User,a.host from user as a;

8cd1798e7b3c478eaa796d95323066c5.png

 

 2.3:在master01和master02中分别使用mysqldump备份出demo 和test 数据库,把传输到node01从节点

ff0212abcdb04482ab8ab1490123eae0.png

 2.3.1:master01上备份导出demo数据库

mysqldump -uroot -pAbc123456 --master-data=2 --single-transaction --set-gtid-purged=off demo>/tmp/demo.dmp

cd /tmp/

scp /tmp/demo.dmp root@node01:/tmp/

9567833180514c659b2c70ccc9b7dd75.png

  2.3.2:master02上备份导出test数据库

mysqldump -uroot -pAbc123456 --master-data=2 --single-transaction --set-gtid-purged=off test>/tmp/test.dmp

cd /tmp/

scp /tmp/test.dmp root@node01:/tmp/

11fc6ef2f8544dbfa5021ec8b270dee4.png

2.3.3: 在node01从库上进行恢复操作,需要先创建数据库

ebc9873c38b34e9c83b045258181e5d5.png

mysql -uroot -pAbc123456 demo </tmp/demo.dmp

mysql -uroot -pAbc123456 test </tmp/test.dmp

这时候报错,说明GTID配置未配置。

ERROR 1840 (HY000) at line 24: @@GLOBAL.GTID_PURGED can only be set when @@GLOBAL.GTID_EXECUTED is empty.

提示:两主一从的架构基于MySQL5.7版本的GTID多源复制。

da9de86f861843628f1620fbecbf0029.png

解决办法:在dump导出时,添加--set-gtid-purged=off参数,避免将gtid信息导出

8f34c4cb64a4438781781c3554bfc5ad.png

2.4: 在从库上分别配置master01->node01 和master02->node01的同步过程

change master to master_host='172.16.25.205',
master_user='mysync',
master_password='Abc123456',
master_port=33306,
master_auto_position=1 for channel 'm1';

change master to master_host='172.16.25.206',
master_user='mysync',
master_password='Abc123456',
master_port=33306,
master_auto_position=1 for channel 'm2';

2.5:开启主从复制

start slave for channel 'm1';

start slave for channel 'm2';

2.6:最后一步很关键的步骤,重启从库的mysql服务

systemctl restart mysqld

b5d178e5289b4281b19f0189c6ffda51.png

 662aac5537db412a8b8ed45273d2aab2.png

 

 

 

2.7:如何清除主从同步配置,从库执行

reset slave all

 

 


 

系列文章目录

 

MySQL 主从复制搭建过程_平凡的小旋风的博客-CSDN博客

MySQL5.7 主从复制GTID复制配置搭建过程_平凡的小旋风的博客-CSDN博客

MySQL主从同步之半同步复制配置_平凡的小旋风的博客-CSDN博客

 


温馨提示:如果小编分享的对你有所帮助的话,麻烦点个赞,鼓励一下,小编也不容易。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

求知若渴,虚心若愚。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值