linux – MySQL Master – Master Broken

前端之家收集整理的这篇文章主要介绍了linux – MySQL Master – Master Broken前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我继承了一个MysqL主系统,我注意到了第二个主设备(从现在开始称它为slave,因为它在’slave’机器上运行)停止了它的db更新.
我看到了

主:

Slave_IO_Running: Yes
Slave_sql_Running: Yes

奴隶:(我被截断的错误)

Slave_IO_Running: Yes
Slave_sql_Running: No
Last_Errno: 1062
Last_Error: Error 'Duplicate entry '3' for key 'PRIMARY'' on [...]

我不知道是什么导致它处理,因为我们不能在那里复制.重要的是恢复正常运作;

现在我已经停止了奴隶;在主人和停止奴隶;在Slave上,因为我看到如果我在Slave上更改记录,那么更改Do Do Propagated to Master正在使用中.

我如何能:
强制从主站到从站同步一切,而不影响主站上的数据?希望像往常一样有奴隶皮卡复制?

UPDATE
确定我尝试删除奴隶上的所有表格然后它在错误部分抱怨“表格”不存在.所以我做了一个没有Master的数据转储,并确保我在Secondary(slave)中只有空表.
我开始奴隶;在奴隶但现在它抱怨血腥的alter table语句,例如:

Last_Errno: 1060
Last_Error: Error 'Duplicate column name [...] Query: 'ALTER TABLE [...]

如何跳过fracking alter语句我只是想复制血腥数据并用它来完成,我的表已经有了很多变化已经FFS现在它抱怨几周前复制后发生的变化

如何重置日志或其他内容

优秀
为什么会这样开始? “辅助”正在传播到“主要”. “主要”不会传播到“次要”.
但是我尝试做的任何修复都将它保持在相同的状态Yes-Yes Yes-No with Last_Error.
我想在那个时候服务器被从网络中删除了,是否会以某种方式混淆MysqL

解决方法

首先,您需要了解MysqL复制仅同步CHANGES.清空表(或删除它们)将不会再次复制数据.您必须使用一组一致的数据文件启动从站.

重新种子奴隶的粗略过程如下:(不要按照这些说明)

>获取数据的一致快照.
>将快照复制到从属设备.
>重新配置并启动从站.

如果您无法忍受停机时间,那么有两种方法可以实现此目的.

>如果您的数据足够小,您可以MysqLdump包括数据在内的所有内容,then these instructions are good.如果您有多个数据库,请务必阅读本文,因为我不打算在此处复制这些注意事项.但是如果你只有1个数据库,基本步骤是:

>在主服务器上,像这样备份数据库MysqLdump -u root -e -q –single-transaction –master-data database_name
>将此备份导入您的从属设备.
>查看备份文件的开头以获取主日志名称和位置.
>在MysqL shell中的slave上运行类似的东西,但是使用步骤#3中的信息进行更新:START SLAVE UNTIL MASTER_LOG_FILE =’bin.000029′,MASTER_LOG_POS = 651322976;

>如果您的数据库对于MysqL转储来说太大,那么您将需要使用操作系统的卷快照功能对表进行快照.这将暂停你的MysqL服务器几秒钟,所以最好在几小时后完成它可能不会打扰任何人.

>在MysqL shell中的master上,对所有表执行写锁定,以使用具有写锁定的刷新表来使它们保持一致.这将有效地暂停服务器.>不要退出MysqL shell,否则你将失去锁定.>在另一个OS shell中,获取MysqL数据卷的快照.>返回MysqL shell:SHOW MASTER STATUS获取当前日志位置,然后UNLOCK TABLES释放锁定.服务器现已取消暂停.>访问快照并将MysqL数据文件复制到从属服务器.>在MysqL shell中的slave上运行类似的东西,但是使用步骤#4中的信息进行更新:START SLAVE UNTIL MASTER_LOG_FILE =’bin.000029′,MASTER_LOG_POS = 651322976;

原文链接:https://www.f2er.com/linux/395681.html

猜你在找的Linux相关文章