重复标题:MySQL 复制工作正常,但 mytop 仍然显示一个线程“等待主发送事件”。这几天一直这样,现在是280000秒。但是复制就好了。
我可以看到另一个正在执行复制工作的线程,现在它位于“从属已读取所有中继日志;正在等待从属 I/O 线程对其进行更新”但它一直在运行查询,我可以验证从站只是通过查看数据是最新的。
我可以终止这个进程吗?
我最近不得不重新设置复制,这涉及创建一个新的复制用户,所以我不确定这是否是导致这个“幽灵复制过程”的原因。
你不敢杀死那个进程。为什么 ?
运行此查询
SELECT COUNT(1) FROM information_schema.processlist WHERE user='system user';
Run Code Online (Sandbox Code Playgroud)
答案必须是两个。为什么 ?
2 个线程上的标准 MySQL 复制功能:1) IO 线程,2) SQL 线程。在我的旧帖子中 MySQL 是否支持复制所有数据库?,我解释了两个线程之间的共生关系。
当你运行时SHOW SLAVE STATUS\G
,你会看到三行:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Seconds_Behind_Master: 0
这是健康复制过程的标志。如果Slave_IO_Running
或Slave_IO_Running
是No
,则复制没有运行是因为六 (6) 个原因之一:
STOP SLAVE;
,这会关闭 IO 线程和 SQL 线程STOP SLAVE IO_THREAD;
,这会关闭 IO 线程STOP SLAVE SQL_THREAD;
,这会关闭 SQL 线程当这些情况中的任何一个出现时,Seconds_Behind_Master
是NULL
。号码280000
呢?这只是 IO 线程运行的时间长度(超过 82 小时)。没关系。这不是一个幽灵进程。复制需要一个 IO 线程从 Master 的二进制日志中读取二进制日志事件。
总之,您的 IO 线程已启动超过 82 小时。不要搞乱复制。