首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >断从MySQL :如何修复从服务器中的MySQL复制(BINLOG)错误?

断从MySQL :如何修复从服务器中的MySQL复制(BINLOG)错误?
EN

Database Administration用户
提问于 2020-06-25 14:55:10
回答 2查看 1.9K关注 0票数 1

在我们开始之前,我可以给出一些版本的信息,

Ubuntu - 14.04,MySQL - 5.5

我已经用两个EC2 Ubuntu实例成功地配置了主从复制。我的主人在Ubuntu 14中,从服务器在Ubuntu 18中。复制成功,奴隶在过去3-4天中复制数据。但是,突然间,我的从站(Ubuntu 18)因查询错误而停止复制。

错误信息: Last_SQL_Error:对查询中的“主”键错误“重复条目”11379183。默认数据库:“测试”。查询:‘插入testTable (id、value1、value2、value3、value4、value5、value6)值(22、"5“、"429438”、"1592499300“、"1”、"8“、”1“)

Slave_IO_Running:是的,Slave_SQL_Running:不

我试过了,

停止从;设置全局SQL_SLAVE_SKIP_COUNTER=1;启动从;

它帮助了我一段时间。但是复制又被破坏了。

我们如何解决这种复制错误?有什么自动化的方法来修复坏掉的奴隶吗?

在MySQL 5.5中,基于GTID的复制可以吗?我认为GTID可以从MySQL版本5.6中获得吗?

EN

回答 2

Database Administration用户

发布于 2020-06-25 16:17:45

如何绕过所有重复的键错误

有两种方法可以绕过重复的关键错误。

方法#1 :在my.cnf

中配置它

将此行添加到[mysqld]组标题下的my.cnf

代码语言:javascript
复制
[mysqld]
slave-skip-errors=1062

然后重新启动mysql。

一旦复制开始,所有重复的键错误都将被绕过。一旦Seconds_Behind_Master为0,您就会陷入困境。然而,奴隶的数据与母版不同步.接下来你要做什么?

方法2:使用自动工具

我相信你没有时间跑

代码语言:javascript
复制
STOP SLAVE;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
START SLAVE;

一遍又一遍。如果自动化工具能为你做到这一点,那不是很好吗?这样的工具是存在的。它叫pt-slave-restart

你会这样运行它:

代码语言:javascript
复制
pt-slave-restart --error-numbers 1062

把这个放进crontab,每分钟都会响。

代码语言:javascript
复制
* * * * * pt-slave-restart --error-numbers 1062

更好的是,您可以创建一个服务器守护进程而不使用crontab。

代码语言:javascript
复制
pt-slave-restart --error-numbers 1062 --daemonize

并且您不需要重新启动mysqld。

无论哪种方式,pt-slave-restart都会一次又一次跳过该错误,直到Seconds_Behind_Master为0。当你结束了让奴隶被抓住,停止使用pt-slave-restart

但是,您仍然存在与方法1相同的问题:从服务器上的数据与主服务器的数据不同步。接下来你要做什么?

,好的,你接下来做什么?

您必须将奴隶上的数据与您的主同步。如果有一个实用程序可以为你做到这一点,那不是很好吗?这样的工具是存在的。事实上,有两个工具。他们被称为pt-table-checksumpt-table-sync

他们是做什么的?

使用pt-table-checksum检查MySQL复制完整性。如果您遇到主从之间有不同校验和的任何表,则“奴隶”上的这样一个表是不同步的。

您可以使用pt-table-sync同步MySQL表数据。

你可以跑

代码语言:javascript
复制
pt-table-sync --print > sync_file.txt

看看什么会改变(这就像真实事物的模拟一样)

然后你就跑

代码语言:javascript
复制
pt-table-sync --execute

执行实际同步。

请阅读PERCONA工具包文档.

总是负责任地处理PERCONA工具包!

注意:遗憾的是,使用MySQL 5.5和GTID绝对没有任何功能。

票数 0
EN

Database Administration用户

发布于 2020-06-27 15:25:04

如果主数据库不是那么大,我会重建它。您可以使用逻辑备份(如mysqldump ),也可以使用物理备份(如percona )--使用时间转储中的一个点,这样就可以安全地将从服务器重新定位为主程序。

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/269872

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档