mysql的gtid主从复制,从库误操作更新操作,

发布时间:2024年01月11日

一:查看mysql的从库,发现sql进程状态 “no”.提示执行传输过来的binlog日志,执行失败,

二:查看主库对应的二进制日志的gtid地方。插入一些数据。

# mysqlbinlog --base64-output=decode-rows -v mysql-bin.000001 |grep -A 100 "560d72ff-b057-11ee-84ba-5254005c1b84:8"

三:从日志来看是写入错了,

1:第一种办法:跳过重复执行gtid事务 560d72ff-b057-11ee-84ba-5254005c1b84:8

从库执行操作

mysql> stop slave;

mysql> set @@session.gtid_next='560d72ff-b057-11ee-84ba-5254005c1b84:8';

mysql> start slave;

mysql> show slave status\G;

恢复正常了,

第二种办法。如果要保证这张表数据一致性,如果是删除或者更新操作,这表就会存在数据不一致问题,可以先备份这张表,从主库

从库删除操作

mysql> delete from userinfo where name='Jack08';

gtid的主从复制,是跟进gtid来判断是否数据一致,但是当前删除的数据是从库执行过的gtid事务,因为主节点不会判断出,主从数据是否不一致。因此这种现象就得恢复表。

1:从主库备份单表db1下的userinfo表。

# mysqldump -uadmin ?-p"hechunyang" -S /tmp/mysql_db01.sock db1 userinfo -R -E --triggers --set-gtid-purged=OFF --source-data=2 --single-transaction --max-allowed-packet=512M > ?/tmp/db1_userinfo.sql

2:拷贝到从库

mysql> stop slave;? ?#停止主从复制

mysql> set sql_log_bin=0;? #停止写入binlog开关,防止恢复表,出现写入binlog日志。

mysql> use db1
mysql> source db1_userinfo.sql;

mysql> set sql_log_bin=1;??

mysql> start slave;

3.查看主节点的gtid

总控,可以找到日志,看出是哪一张表被操作,如果是删除操作还是需要备份该表进行还原

文章来源:https://blog.csdn.net/fengge55/article/details/135534392
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。