打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
stop slave 卡住模拟
userphoto

2023.06.13 湖南

关注
目录
​ ​1.主库数据准备​​
​ ​2.从库停止复制stop slave,只开启io thread​​
​ ​3.在主库上执行大事务​​
​ ​4.开启复制start slave sql_thread,等待2s,接着stop slave​​
上一篇文章​​stop slave卡住​​,初步介绍了stop slave的问题现象以及一些原因。
本文介演示遇到大事务时,从库stop slave会卡住。
MySQL测试集群:一主一从。
主库、从库执行操作如下。
1.主库数据准备
首先,新建表
CREATE TABLE `apple_test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`a` int(11) NOT NULL DEFAULT '0' COMMENT 'a',
`b` int(11) NOT NULL DEFAULT '0' COMMENT 'b',
`updated_ts` timestamp(6) NOT NULL DEFAULT '0000-00-00 00:00:00.000000' ON UPDATE CURRENT_TIMESTAMP(6),
`created_ts` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) COMMENT '创建时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
1.
2.
3.
4.
5.
6.
7.
8.
首先插入一条记录
> insert into apple_test(`a`, `b`) values(1,1);
1.
接着反复执行如下SQL,直到数量达到8388608
> insert into apple_test(a, b) select a,b from apple_test;
1.
查看数量
> select count(*) from apple_test;
+----------+
| count(*) |
+----------+
| 8388608 |
+----------+
1 row in set (1.87 sec)
1.
2.
3.
4.
5.
6.
7.
2.从库停止复制stop slave,只开启io thread
等数据复制完成后,查看数量
select count(*) from apple_test;
+----------+
| count(*) |
+----------+
| 16777216 |
+----------+
1 row in set (2.92 sec)
1.
2.
3.
4.
5.
6.
7.
大事务执行耗时,实际上,是SQL线程执行时的耗时。
这里接着只开启io 线程,让后续relay log先复制到从库。
stop slave;start slave io_thread;
1.
3.在主库上执行大事务
再次执行
> insert into apple_test(a, b) select a,b from apple_test limit 8388608;
Query OK, 8388608 rows affected (1 min 20.68 sec)
Records: 8388608 Duplicates: 0 Warnings: 0
1.
2.
3.
查看数量
select count(*) from apple_test;
+----------+
| count(*) |
+----------+
| 16777216 |
+----------+
1 row in set (5.53 sec)
1.
2.
3.
4.
5.
6.
7.
4.开启复制start slave sql_thread,等待2s,接着stop slave
启动sql线程,开始执行事务,接着等待2s,stop slave停止复制。
> start slave sql_thread;select sleep(2);stop slave;
Query OK, 0 rows affected (0.02 sec)
+----------+
| sleep(2) |
+----------+
| 0 |
+----------+
1 row in set (2.01 sec)
Query OK, 0 rows affected (25.95 sec)
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
可以看到,stop slave后卡住了一段时间,长度与事务大小有关,这里是约26s.
查看数量
select count(*) from apple_test;
+----------+
| count(*) |
+----------+
| 16777216 |
+----------+
1 row in set (2.92 sec)
1.
2.
3.
4.
5.
6.
7.
可以看到,数据插入成功,大事务已经执行完成。
最后,start slave, stop slave都不会卡住。
> start slave;
Query OK, 0 rows affected (0.01 sec)
> stop slave;
Query OK, 0 rows affected (0.01 sec)
1.
2.
3.
4.
5.
综上,从库正在执行大事务时,stop slave会卡住,等大事务执行完成后,再次stop slave不会卡住。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
Mysql---Master-slave复制方案
error:1050
MySQL两主(多主)多从架构配置
查看mysql主从配置的状态及修正 slave不启动问题
Centos Mysql主从同步搭建步骤教程分享
高性能Mysql主从架构的复制原理及配置详解
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服