【问题标题】:keep 2 mysql dbs identical on two machines在两台机器上保持 2 个 mysql dbs 相同
【发布时间】:2013-08-11 18:37:20
【问题描述】:

我在两台机器上有两个 mysql 数据库。假设第一个是生产数据库,第二个是相同的克隆。我的 php 应用程序默认使用生产数据库。但我需要同时让两个数据库相同。这意味着我需要解决生产数据库不可用的情况(例如连接错误),所以我只需手动设置第二个,我的应用程序就可以照常运行。我想让它“抗故障”。

我该怎么做?我想每分钟都进行一次转储,但是当 db 包含许多数据时,这不是一个好的解决方案......

【问题讨论】:

标签: php mysql database


【解决方案1】:

这些答案假定无论出于何种原因,标准复制都不适合您:

以下选项是众所周知的手动数据同步的现有方法,并且当组合成脚本语言(如 bash 等)时,对于 cronjob 需要一些逻辑来将特定表指定为需要,保证在生产箱上根据负载等运行它们是安全的。

选项 1:pt-table-sync

Percona MySQL 工具包中的pt-table-sync 工具允许在现有复制方案中按需进行主-主、主-从同步。或者你可以用它来同步两个没有任何关系的服务器。

Docs here from Percona

按照示例,单向同步。

pt-table-sync --execute h=sourcehost1,u=msandbox,p=msandbox h=desthost d=yourdb t=yourtables

另外还有以下功能:

  1. 试运行模式 (--dry-run) - 程序将连接、计划同步、分析冲突并告诉您它将如何解决同步。这是确保您以正确方式使用这一强大工具的关键。
  2. 冲突分析 - 查看数据如何比较 - 将其反馈到您的脚本中以发现潜在问题,或者如果没有差异则不执行同步以节省时间。

据我了解,主从关系不一定存在 - 但如果确实存在,同步会更有效,因为可以使用更有效的校验和算法来比较数据。

选项 2:使用 XtraDb 进行热/流式备份 或者,您可以在其主机 streaming 模式下使用免费的 Percona XtraBackup 之类的东西来保持备份文件同步,并根据需要恢复到您的开发盒。

XtraBackup 为所有版本的 Percona Server 进行 MySQL 热备份, MySQL、MariaDB 和 Drizzle。它执行流式传输、压缩和 增量 MySQL 备份。

选项 C:LVM 快照 由于短暂的锁定/IO 问题,如果您需要以任何频率获取 LVM 快照,则它们可能不是生产设备的最佳选择,但尽管如此,请继续:MySQL Backups Using LVM Snapshots

所有这些工具都可以单向或双向移动数据 - 因此彻底了解如何使用它们对于避免数据丢失至关重要。

【讨论】:

    猜你喜欢
    • 2021-03-13
    • 2021-03-24
    • 1970-01-01
    • 1970-01-01
    • 2015-11-17
    • 2021-12-13
    • 1970-01-01
    • 1970-01-01
    • 2016-11-05
    相关资源
    最近更新 更多