我有一个本地网站,用户每天都在其中向Mysql DB添加项目。现在,我要制作该站点的实时版本。
但是我不想将项目添加到两个数据库中,而是只添加到本地数据库中。并同步远程数据库。
本地站点使用XAMPP。而且我也不认为复制是我想要的方式。
我正在寻找一种完成此任务的PHP方法。
目前,我不知道如何实现这一目标。
关于如何执行此操作的任何想法?
答案 0 :(得分:0)
最快的方法是使用MySQL,但是如果您想严格使用PHP,那么如果您希望实时数据仅反映本地数据(例如,您可以并删除所有数据并重新拉出数据)。由于此解决方案使用PHP,因此您将不得不遍历每个单独的表。您可以运行使用PDO或MySQLi的PHP脚本,但是您将需要以下两种删除策略之一:
1)TRUNCATE
和SELECT 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_name
和DELETE 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