同步本地和远程网站

Posted

技术标签:

【中文标题】同步本地和远程网站【英文标题】:synchronize local and remote web site 【发布时间】:2012-08-08 00:10:05 【问题描述】:

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

用户每天更新本地网站,远程网站应本地同步(或用户手动同步)。

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

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

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

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

【问题讨论】:

我想我不了解您要构建的本地/远程架构,但如果您希望允许用户通过应用程序更新数据库并希望远程数据库同步到这些更新,您可以考虑使用 MySQL 复制。 网站存在于大学研究实验室的本地网络中。因此研究人员全天更新站点信息并将远程网站与本地服务器同步。 【参考方案1】:
    设置 MySQL 复制。 如果您的远程服务器无法连接到本地服务器,请打开常规日志并在远程服务器上定期重播。 如果您不能执行其中任何一项,请创建一个 TIMESTAMP 类型的“last_modified”列,并使用“ON UPDATE CURRENT_TIMESTAMP”。您不需要直接更新此列,对行的任何更改都会自动更新它。有了这个,您可以选择/转储已更改的行,并创建一个脚本来更新远程主机上的这些行。

【讨论】:

【参考方案2】:

对于文件,我会使用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 记录,并从 date > last_sync 的表中选择 *。

给这只猫剥皮的方法有很多。

【讨论】:

哪种方式更有效?更快,使用更少的资源? 只更新修改过的数据需要更少的带宽,并且根据数据库的大小应该会更快。

以上是关于同步本地和远程网站的主要内容,如果未能解决你的问题,请参考以下文章

本地MySQL数据库怎么与远程MySQL数据库同步

rsync远程同步

rsync远程同步

rsync远程同步(实例!!!)

保持本地仓库和远程同步

Git branch 和fetch 指令总结:分支查看和远程分支同步