暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

使用Clone技术搭建MySQL8.0主从同步

使用Clone技术搭建MySQL8.0主从同步

环境描述:

Mater: 192.168.100.202 port:3307 doner 捐赠者

Slave: 192.168.100.203 port:3307 recipient 接受者

第一步:两台机器MySQL分别进行初始化安装

详细步骤见【Linux系统同时安装MySQL5.7和MySQL8.0】

第二步:安装同步插件

2.1doner节点192.168.100.202相关操作

–创建用户

create user ‘donor_user’@‘192.168.100.203’ identified by ‘password’;
Query OK, 0 rows affected (0.00 sec)

grant backup_admin on . to ‘donor_user’@‘192.168.100.203’;
Query OK, 0 rows affected (0.01 sec)

–安装clone插件

install plugin clone soname ‘mysql_clone.so’;
Query OK, 0 rows affected (0.01 sec)

2.2recipient节点192.168.100.203相关操作

–创建用户(也可以不创建用户,用root直接操作)

mysql> create user ‘recipient_user’@‘192.168.100.203’ identified by ‘password’;
mysql> grant clone_admin on . to ‘recipient_user’@‘192.168.100.203’;

–安装clone插件
install plugin clone soname ‘mysql_clone.so’;

–设置参数clone_valid_donor_list

set global clone_valid_donor_list=‘192.168.100.202:3307’;
Query OK, 0 rows affected (0.00 sec)

–换成recipient_user’@‘192.168.100.203’ 用户登陆,执行clone语句

[root@node2 bin]# mysql80 -urecipient_user -ppassword -P3307 -h192.168.100.203

mysql> clone instance from ‘donor_user’@‘192.168.100.202’:3307 identified by ‘password’;
Query OK, 0 rows affected (1.29 sec)

mysql> Restarting mysqld;
ERROR 2013 (HY000): Lost connection to MySQL server during query
No connection. Trying to reconnect…

查看数据目录出现如下文件: #clone #ib_16384_0.dblwr #ib_16384_1.dblwr #innodb_temp

cd /usr/local/mysql80/data/
[root@node2 data]# ll
total 188856
-rw-r-----. 1 mysql mysql 56 Aug 26 23:56 auto.cnf
-rw-------. 1 mysql mysql 1676 Aug 26 23:56 ca-key.pem
-rw-r–r--. 1 mysql mysql 1112 Aug 26 23:56 ca.pem
-rw-r–r--. 1 mysql mysql 1112 Aug 26 23:56 client-cert.pem
-rw-------. 1 mysql mysql 1676 Aug 26 23:56 client-key.pem
drwxr-x—. 2 mysql mysql 72 Sep 11 20:09 #clone
-rw-r-----. 1 mysql mysql 5839 Sep 11 20:13 error.log
-rw-r-----. 1 mysql mysql 196608 Sep 11 20:11 #ib_16384_0.dblwr
-rw-r-----. 1 mysql mysql 8585216 Aug 26 23:56 #ib_16384_1.dblwr
-rw-r-----. 1 mysql mysql 5942 Sep 11 20:09 ib_buffer_pool
-rw-r-----. 1 mysql mysql 12582912 Sep 11 20:09 ibdata1
-rw-r-----. 1 mysql mysql 50331648 Sep 11 20:11 ib_logfile0
-rw-r-----. 1 mysql mysql 50331648 Sep 11 20:09 ib_logfile1
-rw-r-----. 1 mysql mysql 12582912 Sep 11 20:09 ibtmp1
drwxr-x—. 2 mysql mysql 187 Sep 11 20:09 #innodb_temp
drwxr-x—. 2 mysql mysql 143 Aug 26 23:56 mysql
-rw-r-----. 1 mysql mysql 5 Sep 11 20:09 mysqld.pid
-rw-r-----. 1 mysql mysql 25165824 Sep 11 20:09 mysql.ibd
drwxr-x—. 2 mysql mysql 64 Sep 11 20:09 performance_schema
-rw-------. 1 mysql mysql 1680 Aug 26 23:56 private_key.pem
-rw-r–r--. 1 mysql mysql 452 Aug 26 23:56 public_key.pem
-rw-r–r--. 1 mysql mysql 1112 Aug 26 23:56 server-cert.pem
-rw-------. 1 mysql mysql 1676 Aug 26 23:56 server-key.pem
drwxr-x—. 2 mysql mysql 28 Sep 11 20:09 sys
-rw-r-----. 1 mysql mysql 16777216 Sep 11 20:11 undo_001
-rw-r-----. 1 mysql mysql 16777216 Sep 11 20:11 undo_002

等待clone主库192.168.100.202数据…

通过查询两张表来监控一下克隆的进度和结果状态:

–查看clone进度和状态

mysql> SELECT * FROM performance_schema.clone_progress;
±-----±----------±----------±---------------------------±---------------------------±--------±---------±---------±---------±-----------±--------------+
| ID | STAGE | STATE | BEGIN_TIME | END_TIME | THREADS | ESTIMATE | DATA | NETWORK | DATA_SPEED | NETWORK_SPEED |
±-----±----------±----------±---------------------------±---------------------------±--------±---------±---------±---------±-----------±--------------+
| 1 | DROP DATA | Completed | 2024-09-11 20:09:13.550624 | 2024-09-11 20:09:13.748953 | 1 | 0 | 0 | 0 | 0 | 0 |
| 1 | FILE COPY | Completed | 2024-09-11 20:09:13.749120 | 2024-09-11 20:09:14.178993 | 1 | 71423798 | 71423798 | 71435636 | 0 | 0 |
| 1 | PAGE COPY | Completed | 2024-09-11 20:09:14.179243 | 2024-09-11 20:09:14.190915 | 1 | 0 | 0 | 99 | 0 | 0 |
| 1 | REDO COPY | Completed | 2024-09-11 20:09:14.191140 | 2024-09-11 20:09:14.202456 | 1 | 4096 | 4096 | 4493 | 0 | 0 |
| 1 | FILE SYNC | Completed | 2024-09-11 20:09:14.202713 | 2024-09-11 20:09:14.677099 | 1 | 0 | 0 | 0 | 0 | 0 |
| 1 | RESTART | Completed | 2024-09-11 20:09:14.677099 | 2024-09-11 20:09:18.076112 | 0 | 0 | 0 | 0 | 0 | 0 |
| 1 | RECOVERY | Completed | 2024-09-11 20:09:18.076112 | 2024-09-11 20:09:18.882049 | 0 | 0 | 0 | 0 | 0 | 0 |
±-----±----------±----------±---------------------------±---------------------------±--------±---------±---------±---------±-----------±--------------+
7 rows in set (0.00 sec)

mysql> SELECT * FROM performance_schema.clone_status\G
*************************** 1. row ***************************
ID: 1
PID: 0
STATE: Completed
BEGIN_TIME: 2024-09-11 20:09:13.392
END_TIME: 2024-09-11 20:09:18.882
SOURCE: 192.168.100.202:3307
DESTINATION: LOCAL INSTANCE
ERROR_NO: 0
ERROR_MESSAGE:
BINLOG_FILE: mysql-bin.000004
BINLOG_POSITION: 757
GTID_EXECUTED: f12da88e-60a3-11ef-a1d1-005056296686:1-5
1 row in set (0.00 sec)

第三步: 搭建主从复制

–在主库202上建立复制账号:

create user ‘repl’@’%’ identified with mysql_native_password by ‘repl’;

mysql> GRANT REPLICATION SLAVE ON . TO ‘repl’@’%’;
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

–在从库203上进行复制步骤的完成:

change master to master_host=‘192.168.100.202’,master_port=3307,master_user=‘repl’,master_password=‘repl’,master_auto_position=1;
Query OK, 0 rows affected, 2 warnings (0.00 sec)

start slave;
Query OK, 0 rows affected (0.00 sec)

show slave status\G

至此远程从库通过clone插件的方式搭建成功了,非常简单也非常快速,不需要mysqldump也不需要xtrabackup,在线搭建成功,非常快。

使用clone技术搭建主从需要注意如下几点

MySQL版本大于等于8.0.17且不支持跨版本
两台机器具有相同的操作系统OS
两台MySQL实例具体相同的innodb_page_size和innodb_data_file_path(ibdata文件名)
同一时刻仅仅允许有一个克隆任务存在recipient
需要设置变量 clone_valid_donor_list、max_allowed_packet 大于2M
doner的undo表空间文件名称不能重复
不会克隆my.cnf文件、不会克隆binlog
仅仅支持innodb引擎

最后修改时间:2024-09-11 16:41:40
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论