在两台机器上保持2个mysql dbs相同

pet*_*ter 5 php mysql database

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

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

cer*_*erd 2

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

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

选项 1:pt-table-sync

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

来自 Percona 的文档

按照示例,进行单向同步。

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

此外还存在以下功能:

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

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

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

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

选项 C:LVM 快照 如果由于短暂的锁定/IO 问题而需要以任何频率获取 LVM 快照,那么 LVM 快照可能不是生产环境的最佳选择,但尽管如此,您还是可以这样做:使用LVM 快照进行 MySQL 备份

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