加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – MySQL Master – Master Broken

发布时间:2020-12-14 02:31:28 所属栏目:Linux 来源:网络整理
导读:我继承了一个Mysql主系统,我注意到了第二个主设备(从现在开始称它为slave,因为它在’slave’机器上运行)停止了它的db更新. 我看到了 主: Slave_IO_Running: YesSlave_SQL_Running: Yes 奴隶:(我被截断的错误) Slave_IO_Running: YesSlave_SQL_Running: NoLa
我继承了一个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;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读