我有一个本地网站,用户每天都会在Mysql DB中添加项目。现在我想制作一个网站的实时版本。
但是,我想只添加到本地数据库,而不是向两个数据库添加项目。并同步远程数据库。
本地站点使用XAMPP。此外,我不认为复制是我想要的方式。
我正在寻找一种PHP方式来完成这项任务。
目前我不知道如何实现这一目标。
有关如何做到这一点的任何想法?
执行此操作的最快方法是使用MySQL,但如果您想严格使用PHP,如果您希望实时数据仅反映本地数据,那么有两种方法可以解决这个问题(即您可以删除所有数据)数据和重新拉动数据)。因为此解决方案是在PHP中,所以您必须遍历每个单独的表。您可以运行使用PDO或MySQLi的PHP脚本,但您需要以下两种删除策略之一:
1)TRUNCATE
和SELECT FROM
(快速,但有潜在的安全风险)这是一个更大的风险,因为TRUNCATE
的MySQL权限是DROP
和ALTER
。不是您希望常规数据库用户有权访问的命令。这是将它拉下来的SQL:
TRUNCATE live_database_name.table_name
INSERT INTO live_database_name.table_name SELECT * FROM local_database_name.table_name
2)DELETE FROM
和SELECT FROM
(你拥有的数据越多越安全,但更安全)。此解决方案较慢,因为您必须遍历表中的每个条目,而不是删除并重新创建表。但是,DELETE
被视为给予数据库用户更安全的许可,因为他们不能DROP
整个表。以下是您需要将其拉下来的内容:
DELETE FROM live_database_name.table_name
INSERT INTO live_database_name.table_name SELECT * FROM local_database_name.table_name
如果您不想设置复制方案,为什么不使用(2或3)cron作业,使用本地转储转储本地/转储远程/更新远程。不,这不是最好的方法,但它的工作原理......
使用just(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