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

问题描述 投票:0回答:2

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

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

本地站点使用XAMPP。此外,我不认为复制是我想要的方式。

我正在寻找一种PHP方式来完成这项任务。

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

有关如何做到这一点的任何想法?

php mysql synchronize
2个回答
0
投票

执行此操作的最快方法是使用MySQL,但如果您想严格使用PHP,如果您希望实时数据仅反映本地数据,那么有两种方法可以解决这个问题(即您可以删除所有数据)数据和重新拉动数据)。因为此解决方案是在PHP中,所以您必须遍历每个单独的表。您可以运行使用PDO或MySQLi的PHP脚本,但您需要以下两种删除策略之一:

1)TRUNCATESELECT FROM(快速,但有潜在的安全风险)这是一个更大的风险,因为TRUNCATE的MySQL权限是DROPALTER。不是您希望常规数据库用户有权访问的命令。这是将它拉下来的SQL:

TRUNCATE live_database_name.table_name

INSERT INTO live_database_name.table_name SELECT * FROM local_database_name.table_name

2)DELETE FROMSELECT FROM(你拥有的数据越多越安全,但更安全)。此解决方案较慢,因为您必须遍历表中的每个条目,而不是删除并重新创建表。但是,DELETE被视为给予数据库用户更安全的许可,因为他们不能DROP整个表。以下是您需要将其拉下来的内容:

DELETE FROM live_database_name.table_name

INSERT INTO live_database_name.table_name SELECT * FROM local_database_name.table_name


0
投票

如果您不想设置复制方案,为什么不使用(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
© www.soinside.com 2019 - 2024. All rights reserved.