当从库实例与主库实例使用不同端口,或者配置了延迟复制从库(不需要检查延迟时间)时,需要用 dsn 方式手工指定需要检测复制延迟的从库信息。
- MySQL 版本:8.0.22
- pt-online-schema-change 版本:3.0.6
1. 主库创建 dsn 表
代码语言:javascript复制CREATE TABLE test.dsns (
`id` int(11) NOT NULL AUTO_INCREMENT,
`parent_id` int(11) DEFAULT NULL,
`dsn` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
);
2. 插入需要检查的从库信息
代码语言:javascript复制INSERT INTO test.dsns(dsn) VALUES ("h=172.18.3.221,P=18251");
INSERT INTO test.dsns(dsn) VALUES ("h=172.18.3.46,P=18255");
3. 使用 recursion-method 的 dsn 方法执行 pt-online-schema-change
代码语言:javascript复制pt-online-schema-change
--host="172.18.3.162"
--port=18251
--user="wxy"
--password="123456"
--charset="utf8mb4"
--chunk-size=10000
--recursion-method=dsn=t=test.dsns
--check-interval=10s
--max-lag=60s
--nocheck-replication-filters
--nocheck-unique-key-change
--no-check-alter
--critical-load="Threads_running=512"
--max-load="Threads_running=256"
D="test",t="t1"
--alter="add column type smallint default 1 not null comment '类型,1为小视频,2为频道视频';"
--progress=time,30
--execute