同步本地数据库和现场数据库

Synchronize local database and live site database

我有一个本地网站,用户每天在其中向 Mysql 数据库添加项目。现在我想制作网站的实时版本。

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

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

我正在寻找更多的 PHP 方法来完成这项任务。

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

知道怎么做吗?

最快的方法是使用 MySQL,但如果您想严格使用 PHP,如果您只希望实时数据反映本地数据(即您可以删除所有数据并重新提取数据)。因为此解决方案在 PHP、 中,所以您将不得不遍历每个人 table。您可以 运行 一个使用 PDO 或 MySQLi 的 PHP 脚本,但您将需要下面列出的两种删除策略之一:

1) TRUNCATESELECT FROM(速度快,但有 潜在的安全风险 )这是一个更大的风险,因为 MySQL 权限TRUNCATEDROPALTER。不是您希望普通数据库用户访问的命令。这是实现它的 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数据越多速度越慢,但更安全)。此解决方案较慢,因为您必须遍历 table 中的每个条目,而不是删除并重新创建 table。但是,DELETE 被视为给予数据库用户更安全的权限,因为他们不能 DROP 整个 table。以下是实现它所需的条件:

DELETE FROM live_database_name.table_name

INSERT INTO live_database_name.table_name SELECT * FROM local_database_name.table_name

如果您不想设置复制方案,为什么不只使用(2 个或 3 个)cron 作业,转储本地/转储远程/使用本地转储更新远程。不,这不是最好的方法,但它确实有效...

仅使用 (2),转储本地/使用本地转储更新远程,运行 每天@ 1:00AM 转储,以及 !: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