AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 459400
Accepted
Recct
Recct
Asked: 2012-12-20 09:24:44 +0800 CST2012-12-20 09:24:44 +0800 CST 2012-12-20 09:24:44 +0800 CST

MySQL 大师 - 大师坏了

  • 772

我继承了一个 Mysql master master 系统,我注意到第二个 master(从现在开始我们称它为 slave,因为它在“slave”机器上运行)停止更新它的数据库。我看见了

掌握:

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 [...]

考虑到我们无法在那里复制,我不知道是什么导致它处理。重要的是恢复正常运营;

现在我stop slave;在主服务器和stop slave;从服务器上,因为我看到如果我更改从服务器上的记录,更改会传播到正在使用中的主服务器。

我如何:在不影响主站数据的情况下强制同步从主站到从站的所有内容?然后希望像往常一样进行从属拾取复制?

更新 OK 我尝试删除从站上的所有表,然后它在该错误部分抱怨“表”不存在。所以我做了一个 Master 的无数据转储,并确保我在 Secondary(slave)中只有空表。我start slave;在奴隶上,但现在它在抱怨血腥的 alter table 语句,例如:

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

如何跳过 fracking alter statements 我只想复制该死的数据并完成它,我的表已经有了 FFS 的最新更改,现在它抱怨几周前复制后所做的更改

我如何重置日志或其他东西?

优秀 为什么会开始发生这种情况?“次要”正在传播到“主要”。“主要”不会传播到“次要”。但是我尝试做的任何修复都使它处于相同的状态 Yes-Yes Yes-No 和相同的 Last_Error。我认为大约在那个时候服务器被从网络上取下,这会以某种方式混淆 MySQL 吗?

linux
  • 1 1 个回答
  • 936 Views

1 个回答

  • Voted
  1. Best Answer
    longneck
    2012-12-20T11:03:16+08:002012-12-20T11:03:16+08:00

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

    重新播种您的奴隶的粗略过程如下:(不要遵循这些说明)

    1. 获取一致的数据快照。
    2. 将快照复制到从站。
    3. 重新配置并启动slave。

    如果您不能容忍停机时间,那么有两种方法可以做到这一点。

    • 如果您的数据足够小,您可以 mysqldump 包括数据在内的所有内容,那么这些说明很好。如果您有多个数据库,请务必阅读这篇文章,因为我不会在此处重复这些注意事项。但是如果你只有 1 个数据库,基本步骤是:

      1. 在 master 上,像这样备份你的数据库:mysqldump -u root -e -q --single-transaction --master-data database_name
      2. 将此备份导入您的奴隶。
      3. 查看备份文件的开头以获得主日志名称和位置。
      4. 在 mysql shell 的从服务器上,运行类似这样的东西,但使用步骤 #3 中的信息进行更新:START SLAVE UNTIL MASTER_LOG_FILE='bin.000029', MASTER_LOG_POS=651322976;


    • 如果您的数据库对于 mysql 转储来说太大了,那么您将需要使用操作系统的卷快照功能对您的表进行快照。这将使您的 MySQL 服务器暂停几秒钟,因此最好在下班后完成,因为这可能不会打扰任何人。

      1. 在 mysql shell 的 master 上,对所有表进行写锁定,以使用flush tables with write lock. 这将有效地暂停服务器。
      2. 不要退出 mysql shell,否则你会失去你的锁。
      3. 在另一个 OS shell 中,拍摄 mysql 数据卷的快照。
      4. 回到 mysql shell:SHOW MASTER STATUS获取当前日志位置,然后UNLOCK TABLES释放锁。服务器现在未暂停。
      5. 访问快照并将mysql数据文件复制到slave。
      6. 在 mysql shell 中的从服务器上,运行类似这样的程序,但使用步骤 #4 中的信息进行更新:START SLAVE UNTIL MASTER_LOG_FILE='bin.000029', MASTER_LOG_POS=651322976;
    • 1

相关问题

  • Linux 主机到主机迁移

  • 如何在 Linux 机器上找到有关硬件的详细信息?

  • 如何在 Linux 下监控每个进程的网络 I/O 使用情况?

  • 在 RHEL4 上修改 CUPS 中的现有打印机设置

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve