生产mysql问题解决记录

起因

今天生产排查发MySQL主从同步有问题;
查看mysql的错误日志发现如下错误;
在这里插入图片描述
经过排查发现是因为备份导致的服务器的丢包;最终导致,keepalive的vip的漂移;
而应用中对某个表使用了先删除,后新增的模式;从而导致的冲突;而当前冲突的表是quartz的表,非业务表;从而想到两个办法;1 忽略quartz的表,不同步;2.keepalive配置超时时间超过容器需要备份的时间;

配置表不同步

replicate-wild-ignore-table 同 replication-ignore-table 功能一样,但是可以加通配符
replicate-wild-ignore-table=manager.qrtz_%
replicate-wild-ignore-table=manager_test.qrtz_%
replicate-wild-ignore-table=manager.sys_quartz_job_log
replicate-wild-ignore-table=manager.c_%

主从错误恢复

mysql主从同步过程中,如果出现一条语句同步失败报错了,那后面的语句也肯定不能同步成功了。例如,主库有一条数据,而从库并没有这一条数据,然而,在主库执行了删除这一条数据的操作,那么从库没有这么一条数据就肯定删除不了,从而报错了。在此时的从数据库的数据同步就失败了,因此后面的同步语句就无法继续执行。

(1)在从数据库中,使用SET全局sql_slave_skip_counter来跳过事件,跳过这一个错误,然后执行从下一个事件组开始。

stop slave;
set global sql_slave_skip_counter=1;
start slave;

(2)在从数据库中,重新连上主数据库。这种操作会直接跳过中间的那些同步语句,可能会导致一些数据未同步过去的问题,但这种操作也是最后的绝招。最好就是令从数据库与主数据库的数据结构和数据都一致了之后,再来恢复主从同步的操作。

stop slave;
change master to master_host='192.168.17.130',master_port=3306,master_user='masterbackup',master_password='123456',master_log_file='master-bin.000001',master_log_pos=2050;
start slave;

问题

dba:(none)> start slave;ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository
解决

dba:(none)> reset slave;
dba:(none)> change master to ......
dba:(none)> start slave;

show slave status ; 可以查看同步日志的开始的位置
在这里插入图片描述

binlog查看命令
mysql命令

show master logs

show binlog events in 'mysql-bin.000120' from 52447031 limit 10

binlog命令

mysqlbinlog --no-defaults --database=test --start-datetime="2022-03-15 09:00:00" --stop-datetime="2022-03-17 20:00:00" mysql-bin.000001   |more

在Statement模式下,直接记录SQL比较直观。在Row模式下,使用binlog_rows_query_log_events参数也可以记录SQL。参数的默认为值为FALSE,如果为true的情况下,会通过Rows Query Event来记录SQL。

在my.cnf中添加以下配置,来开启row模式下的SQL记录:

binlog-rows-query-log_events=1
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值