MySQL 8.0因关闭Gtid 引发从库故障

来源:这里教程网 时间:2026-03-01 16:06:35 作者:

前期,由于业务变更原因在线修改主从的GITD由ON到OFF,后面发从库一旦start slave 就出现crash的情况,具体日志如下:

09:00:22 UTC - mysqld got signal 11 ;
Most likely, you have hit a bug, but this error can also be caused by malfunctioning hardware.
Thread pointer: 0x7f9e440008f0
Attempting backtrace. You can use the following information to find out
where mysqld died. If you see no messages after this, something went
terribly wrong...
stack_bottom = 7fa0c51ef098 thread_stack 0x30000
/usr/local/mysql/bin/mysqld(my_print_stacktrace(unsigned char const*, unsigned long)+0x2e) [0x1f40a3e]
/usr/local/mysql/bin/mysqld(handle_fatal_signal+0x323) [0xfd02b3]
/lib64/libpthread.so.0(+0xf5d0) [0x7fa0dce3f5d0]
/usr/local/mysql/bin/mysqld(ha_federated::rnd_pos(unsigned char*, unsigned char*)+0x2f) [0x23ffdcf]
/usr/local/mysql/bin/mysqld(handler::ha_rnd_pos(unsigned char*, unsigned char*)+0x16b) [0x10d734b]
/usr/local/mysql/bin/mysqld(Rows_log_event::do_index_scan_and_update(Relay_log_info const*)+0x100) [0x1b5ff60]
/usr/local/mysql/bin/mysqld(Rows_log_event::do_apply_event(Relay_log_info const*)+0x1426) [0x1b6ef46]
/usr/local/mysql/bin/mysqld(Log_event::apply_event(Relay_log_info*)+0x8d) [0x1b630dd]
/usr/local/mysql/bin/mysqld() [0x1bcd164]
/usr/local/mysql/bin/mysqld() [0x1bdc99a]
/usr/local/mysql/bin/mysqld(handle_slave_sql+0x2a41) [0x1bdfb41]
/usr/local/mysql/bin/mysqld() [0x245661c]
/lib64/libpthread.so.0(+0x7dd5) [0x7fa0dce37dd5]
/lib64/libc.so.6(clone+0x6d) [0x7fa0daf1dead]

后续查看相关信息,无法定位引发故障的具体原因。判断可能是从库环境损坏,立即重新初始化从库,导入主库导入数据,start slave,出现一样的错误,判断问题出在 主库端。查看主库信息

show variables ‘%gtid%’
show master status\G;

发现 gtid_purged,gtid_executed 仍然有值。想到清空该配置信息。由于系统公告上线不久,数据量还不是特别庞大。主库端执行:

reset master;

备库端执行:

reset slave all;

重置主库的所有binlog 信息,顺便清空了上述提到的gtid 配置信息。由于执行reset master 会清空所有的日志信息,如果已经存储多个从库或者数据量较大的情况建议评估后执行。在做好相关备份操作后执行 主库reset 操作。重新搭建从库

start slave;

从库没有再出现之前的错误信息。

相关推荐