MySQL5.7的多源复制方法

64次阅读
没有评论

共计 6769 个字符,预计需要花费 17 分钟才能阅读完成。

本篇内容主要讲解“MySQL5.7 的多源复制方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让丸趣 TV 小编来带大家学习“MySQL5.7 的多源复制方法”吧!

     5.7 多源复制 1.1  实验概要 1.1.1  实验假设

本实验假设已经完成操作系统和 MySQL 安装部署。

1.1.2  实验目的

MySQL5.7 的多源复制技术搭建部署,然后简单测试。

1.1.3  环境信息

操作系统

MySQL 版本

服务器地址

服务器角色

Centos7

5.7.18

192.168.102.23

source 1

Centos7

5.7.18

192.168.102.24

source 2

Centos7

5.7.18

192.168.102.25

target

1.1.4  实验规划

服务器地址

服务器角色

MySQL 库

账户

192.168.102.23

source 1

emily

repl23

192.168.102.24

source 2

evelyn

repl24

192.168.102.25

target

 

 

source 1.emily — target

source 2.evelyn — target

username:

source 1:repl23

source 2:repl24

1.2  实验操作 1.2.1  源端备份数据库

分别从 source1 和 source2 分别备份出 emily 和 evelyn 库,然后分别 copy 到 target 中。其中操作步骤如下:

source 1:

## 备份

[root@dsm-db-102023 11:26:50 /root]

#mysqldump -uroot –pmysql –single-transaction
 –master-data=2 –databases emily /root/dump/emily.sql

## 传输

[root@dsm-db-102023 11:34:38 /root/dump]

#scp /root/dump/emily.sql
 root@192.168.102.25:/root/dump/

source 2:

## 备份

[root@test-mysql-10224 11:19:47 /root]

#mysqldump -uroot -pmysql
 –single-transaction –master-data=2 –databases evelyn
 /root/dump/evelyn.sql

## 传输

[root@dsm-db-102023 11:34:38 /root/dump]

#scp /root/dump/emily.sql
 root@192.168.102.25:/root/dump/

1.2.2  创建同步账户

分别在 source1 和 source2 中创建同步账户 repl23、repl24

source1

root@192.168.102.23:3306
 [emily] create user repl23 identified by repl

root@192.168.102.23:3306
 [(none)] grant replication slave on *.* to repl23 @ %

source2

root@192.168.102.24:3306
 [evelyn] create user repl24 identified by repl

root@192.168.102.24:3306
 [evelyn] grant replication slave on *.* to repl24 @ %

1.2.3  目标端恢复数据库

## 恢复 evelyn 库

root@192.168.102.25:3306
 [(none)] reset master

[root@dsm-db-102025 14:01:24 /root/dump]

#mysql -uroot -pmysql evelyn.sql

## 查看 gtid_purged

root@192.168.102.25:3306 [(none)] show
 global variables like %gtid_purged%

+—————+——————————————+

| Variable_name | Value  |

+—————+——————————————+

| gtid_purged  |
 921a9068-24d2-11e7-99b5-005056b59593:1-287,

bd783f44-258f-11e7-914b-005056b5d312:1-28071
 |

+—————+——————————————+

 

## 恢复 emily 库

root@192.168.102.25:3306
 [(none)] reset master

[root@dsm-db-102025 14:21:22 /root/dump]

#mysql -uroot -pmysql
 /root/dump/emily.sql;

## 设置 source1 和 source2 的 gtid_purged

root@192.168.102.25:3306 [(none)] show
 variables like %gtid_purged%

+—————+——————————————+

| Variable_name | Value  |

+—————+——————————————+

| gtid_purged  | 7937ac78-3c39-11e7-b59e-005056b5d25f:1-4
 |

+—————+——————————————+

## set global gtid_purged= 921a9068-24d2-11e7-99b5-005056b59593:1-287,bd783f44-258f-11e7-914b-005056b5d312:1-28071,7937ac78-3c39-11e7-b59e-005056b5d25f:1-4

 

root@192.168.102.25:3306
 [(none)] reset master;

Query OK, 0 rows affected (0.01 sec)

 

root@192.168.102.25:3306 [(none)] set
 global
 gtid_purged= 921a9068-24d2-11e7-99b5-005056b59593:1-287,bd783f44-258f-11e7-914b-005056b5d312:1-28071,7937ac78-3c39-11e7-b59e-005056b5d25f:1-4

Query OK, 0 rows affected (0.00 sec)

 

root@192.168.102.25:3306 [(none)] show
 variables like %gtid_purged%

+—————+————————————————————————————————————————————+

| Variable_name | Value   |

+—————+————————————————————————————————————————————+

| gtid_purged  |
 7937ac78-3c39-11e7-b59e-005056b5d25f:1-4,

921a9068-24d2-11e7-99b5-005056b59593:1-287,

bd783f44-258f-11e7-914b-005056b5d312:1-28071
 |

+—————+————————————————————————————————————————————+

1 row in set (0.01 sec)

 

root@192.168.102.25:3306 [(none)]

1.2.4  修改 MySQL 存储方式

修改 MySQL 存储 master-info 和 relay-info 的方式,即从文件存储改为表存储

## 在线修改

STOP SLAVE;

SET GLOBAL master_info_repository =
  TABLE

SET GLOBAL relay_log_info_repository =
  TABLE

## 修改配置文件

[mysqld]

master_info_repository=TABLE

relay_log_info_repository=TABLE

1.2.5  同步操作

?  change master

登录 slave 进行同步操作,分别 change master 到两台 master 主机,多源复制需要标注

FOR CHANNEL‘CHANNEL_NAME’区分

##source
 1

root@192.168.102.25:3306
 [(none)] CHANGE MASTER TO
 MASTER_HOST= 192.168.102.23 ,MASTER_USER= repl23 ,
 MASTER_PASSWORD= repl ,master_auto_position=1 FOR CHANNEL repl23

##source
 2

root@192.168.102.25:3306
 [(none)] CHANGE MASTER TO
 MASTER_HOST= 192.168.102.24 ,MASTER_USER= repl24 ,
 MASTER_PASSWORD= repl ,master_auto_position=1 FOR CHANNEL repl24

?  启动 slave

启动所有同步: start slave;

启动单个同步: start slave for channel‘channel_name’;

## 启动 source 1

root@192.168.102.25:3306
 [(none)] start slave for channel repl23

## 启动 source 2

root@192.168.102.25:3306
 [(none)] start slave for channel repl24

?  检查 slave 状态

检查所有 slave: show slave status\G;

检查单个 slave: show slave status for chennel‘channel_name’\G;

## source 1

##source 1

root@192.168.102.23:3306
 [emily] insert into emily(id,name)values(2, evelyn

Query OK, 1 row affected (0.00 sec)

 

root@192.168.102.23:3306
 [emily] select * from emily;

+——+——–+

| id 
 | name  |

+——+——–+


 1 | emily  |


 2 | evelyn |

+——+——–+

2 rows in set (0.00 sec)

 

##target 验证

 

root@192.168.102.25:3306
 [emily] select * from emily;

+——+——–+

| id 
 | name  |

+——+——–+


 1 | emily  |


 2 | evelyn |

+——+——–+

2 rows in set (0.00 sec)

 

## source 2

root@192.168.102.24:3306
 [evelyn] insert into evelyn(id,name)values(2, emily

Query OK, 1 row affected (1.00 sec)

 

root@192.168.102.24:3306
 [evelyn] select * from evelyn;

+——+——–+

| id 
 | name  |

+——+——–+


 1 | evelyn |


 2 | emily  |

+——+——–+

2 rows in set (0.00 sec)

## target 端

root@192.168.102.25:3306
 [evelyn] select * from evelyn;

+——+——–+

| id 
 | name  |

+——+——–+


 1 | evelyn |


 2 | emily  |

+——+——–+

2 rows in set (0.00 sec)

1.2.7  监控

select * from performance_schema.replication_connection_status\G;

##GTID

STOP
 SLAVE FOR CHANNEL‘CHANNEL_NAME’;

SET
 SESSION GTID_NEXT=’’;

BEGIN;COMMIT;

SET
 SESSION GTID_NEXT=’AUTOMATIC’;

START
 SLAVE FOR CHANNEL‘CHANNEL_NAME’;

## binlog+position

stop slave sql_thread FOR
 CHANNEL‘CHANNEL_NAME’;;

set global
 sql_slave_skip_counter=1;

start slave sql_thread FOR
 CHANNEL‘CHANNEL_NAME’;;

 

 

##

root@192.168.102.25:3306
 [(none)] set session
 gtid_next= bd783f44-258f-11e7-914b-005056b5d312:28083

Query
 OK, 0 rows affected (0.00 sec)

 

root@192.168.102.25:3306
 [(none)] begin;commit;

Query
 OK, 0 rows affected (0.00 sec)

 

root@192.168.102.25:3306
 [(none)] set session gtid_next=automatic;

Query
 OK, 0 rows affected (0.00 sec)

 

root@192.168.102.25:3306
 [(none)] start slave for channel repl24

Query
 OK, 0 rows affected (0.00 sec)

1.2.9   遇见错误

1、  Last_IO_Error: Relay log write failure: could not queue event from
 master  ##repl24

Last_IO_Error: Fatal error: Failed
 to run after_read_event hook 
 ##repl23

stop slave

start slave

最后发现是开启一个源开启了半同步复制,一个源没有开题半同步复制。

2、  清除 slave 信息

reset slave

## 创建多源复制过程中,发现有一个 slave 没有 channel_name,使用如下语句清除 slave 信息

reset slave all for channel

3、  root@192.168.102.24:3306 [evelyn] uninstall plugin
 rpl_semi_sync_master;

Query OK, 0 rows affected (0.01 sec)

root@192.168.102.24:3306 [evelyn] uninstall plugin
 rpl_semi_sync_slave;

Query OK, 0 rows affected (0.00
 sec) 

到此,相信大家对“MySQL5.7 的多源复制方法”有了更深的了解,不妨来实际操作一番吧!这里是丸趣 TV 网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-01发表,共计6769字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)