2011-12-12 81 views
0

我正在寻找一种有效的方法来保持多个数据库(在不同的服务器上)与master数据库(也在不同的服务器上)同步。请注意,我只需要单向同步(从主人到所有其他人)。设置本地数据库从主数据库更新

正如我在寻找我遇到了多种解决方案。

  • replication:这(从我读)是不可靠的,因为如果从服务器或暂时关闭或类似的东西,他们最终丢失的信息。 (请纠正我,如果我错了)
  • Injection:我也认为这是不可靠的,更不用说安全问题,因为你直接与从属数据库进行通信。

因为我不喜欢我所看到的,我决定把我自己的系统(最终不喜欢它要么)我的系统是使一个新的表名为ORDERS,并且将基本上认为可以翻译值作为“在表someTable中删除ID为32的项目”,并且在从属端他们将遵循这些指令中的每一个。

您认为最好的方法是什么?数据库非常小(最多有3000个条目),所以我想要一个非常简单的解决方案。谢谢

+0

它可能* [Memcache](http://php.net/manual/en/book.memcache.php)可能替代基于磁盘的数据库克隆。 –

+0

如果两个服务器都在unix上,那么你可以将数据库转储到文件'mysqldump -u USER -p PASSWORD DATABASE> filename.sql'然后使用file_get_contents或curl来检索文件,然后使用'mysqldump -u USER -p PASSWORD DATABASE < filename.sql'加载它或直接通过shell管道:'mysqldump --opt --compress --user = USERHERE --password = PWHERE --host = SOURCE.HOST.HERE SOURCE_DB_NAME | mysql --user = USERHERE --password = PWHERE --host = TARGET.HOST.HERE -D TARGET_DB_NAME -C TARGET_DB_NAME' –

+0

@LawrenceCherone这是我最后的手段(给定效率如何低效)但谢谢。 – vvMINOvv

回答

0

如果你使用mysql,只需使用主/从设置。不知道从哪里听到它是不可靠的,如果从属关闭。其中一个设置是复制日志历史记录要保留多长时间。如果主设备上设置为7天,则从设备可以关闭并且离线7天。当从站启动时,它开始从停止的复制日志中读取数据。追赶将需要一段时间,但你不会失去任何东西。

公司多年来一直在使用mysql复制,没有任何问题。我有一个主 - 主循环复制设置,每个主设备关闭。实际上,我在迁移过程中使用了位于该国另一端的服务器进行了三重主设置。

+0

有没有一种方法可以在从服务器上通知它正在更新?因为这些表有时会引用仅在主服务器 – vvMINOvv

+0

上可用的图像,以澄清@BrentBaisley,在我的主表上,我将拥有将具有类似“image.png”值的表的服务器可以运行php脚本在复制,这样的奴隶也可以下载参考图像?感谢您的一切 – vvMINOvv

+1

数据库可能不会使用来自文件系统的图像,它还会存储对它们的引用。您的Web服务器是“加载”图像的内容。如果你需要在两台服务器上都有图像,那么我会使用类似NFS的东西。另外,我管理的网站是bigstockphoto.com,这是关于图像的。 –