同步本地数据库和实时站点数据库

时间:2019-02-27 21:11:27

标签: php mysql synchronize

我有一个本地网站,用户每天都在其中向Mysql DB添加项目。现在,我要制作该站点的实时版本。

但是我不想将项目添加到两个数据库中,而是只添加到本地数据库中。并同步远程数据库。

本地站点使用XAMPP。而且我也不认为复制是我想要的方式。

我正在寻找一种完成此任务的PHP方法。

目前,我不知道如何实现这一目标。

关于如何执行此操作的任何想法?

2 个答案:

答案 0 :(得分:0)

最快的方法是使用MySQL,但是如果您想严格使用PHP,那么如果您希望实时数据仅反映本地数据(例如,您可以并删除所有数据并重新拉出数据)。由于此解决方案使用PHP,因此您将不得不遍历每个单独的表。您可以运行使用PDO或MySQLi的PHP脚本,但是您将需要以下两种删除策略之一:

1)TRUNCATESELECT FROM(快速,但具有潜在的安全风险),这是更大的风险,因为对TRUNCATE的MySQL权限是{{ 1}}和DROP。不是您希望普通数据库用户可以访问的命令。这是将其实现的SQL:

ALTER

TRUNCATE live_database_name.table_name

2)INSERT INTO live_database_name.table_name SELECT * FROM local_database_name.table_nameDELETE FROM速度越慢,您拥有的数据越多,但更安全)。此解决方案速度较慢,因为您必须遍历表中的每个条目,而不是删除并重新创建表。但是,SELECT FROM被视为授予数据库用户的更安全权限,因为他们不能DELETE整个表。这是您需要完成的步骤:

DROP

DELETE FROM live_database_name.table_name

答案 1 :(得分:0)

如果您不想设置复制方案,为什么不只使用(2或3个)cron作业,转储本地/转储远程/使用本地转储更新远程。不,那不是实现此目的的最佳方法,但是它可以工作...

仅用(2),转储本地/使用本地转储进行远程更新,每天@ 1:00 AM转储,以及!:15AM更新

0 1 * * * mysqldump --host="localhost" --user="user" --password="password" database_name > backup_name.sql

15 1 * * * mysql --host="remote_host" --user="user" --password="password" --port="3306" database_name < backup_name.sql