同步本地和远程网站

时间:2012-08-10 16:43:41

标签: php mysql algorithm database-design synchronization

我正在尝试开发一个网站,它有两个部分:互联网上的本地部分和远程部分。

用户每天更新本地网站,远程网站应该通过本地部分进行自我同步(或者可以由用户手动完成)。

该网站包含一个mysql数据库,其中包含4或5个表格,一些图像作为文件。

现在我正在寻找了解这个图片或行是新系统的最佳方法,所以你应该插入它或者它已被修改,所以更新它。

我在考虑timestamp和随机md5作为每个数据库和另一个数据库中的字段来保存文件名。因此,检查它们,如果有一件事(时间戳或随机md5)发生了变化,请更新这些行。

这是一个好方法,还是有更简单的方法来做到这一点?我想用Yii或CodeIgniter和Mysql数据库开发这个网站。

2 个答案:

答案 0 :(得分:4)

  1. 设置MySQL复制。
  2. 如果您的远程服务器无法连接到本地服务器,请打开常规日志并在远程服务器上定期重播。
  3. 如果您不能执行其中任何一项,请使用“ON UPDATE CURRENT_TIMESTAMP”创建TIMESTAMP类型的“last_modified”列。您无需直接更新此列,对该行的任何更改都将自动更新它。通过这种方式,您可以对已更改的行进行选择/转储,并创建一个脚本来更新远程主机上的这些行。

答案 1 :(得分:3)

对于文件,我会使用rsync

rsync -avz /www/development USERNAME@REMOTE_HOST:/www/production/

对于MySQL,我会创建一个更新SQL表的cron脚本。

mysqldump -al --password=LOCAL_PASS --add-drop-table DB_NAME TABLE_NAME | mysql -h REMOTE_HOST --password=REMOTE_PASS DB_NAME;

如果您想一次抓取单个记录,时间戳的想法就会起作用。然后你应该保留last_sync记录,并从表中选择*,其中日期> last_sync。

很多方法可以给这只猫上皮。