Php 增量MySQL

Php 增量MySQL,php,mysql,backup,Php,Mysql,Backup,我在同一个Linux机器上有两个MySQL数据库。它们不是超大的,但有些表包含大约500000行,每月增加大约40000行 我需要做的是每天编写一次从一个数据库到另一个数据库的部分备份。此部分备份是快照,除了备份之外,不会向其写入任何新数据。它只包含主数据库的一些表,并且从这些表中只包含一些字段 编写删除备份数据库的PHP脚本,然后使用所需的数据重新创建它以获得新的快照非常简单,但是我想知道是否有一种方法可以使用PHP增量执行此操作,并且只写入新的或更改的数据。您的数据库上有时间戳字段吗?使用带

我在同一个Linux机器上有两个MySQL数据库。它们不是超大的,但有些表包含大约500000行,每月增加大约40000行

我需要做的是每天编写一次从一个数据库到另一个数据库的部分备份。此部分备份是快照,除了备份之外,不会向其写入任何新数据。它只包含主数据库的一些表,并且从这些表中只包含一些字段


编写删除备份数据库的PHP脚本,然后使用所需的数据重新创建它以获得新的快照非常简单,但是我想知道是否有一种方法可以使用PHP增量执行此操作,并且只写入新的或更改的数据。

您的数据库上有时间戳字段吗?使用带有ON UPDATE CURRENT_timestamp子句的时间戳可以让您知道每行的修改时间。通过这种方式,您可以轻松地对时间戳大于给定值的行执行SELECT查询。

如果您要在这么多记录上检查新的或更改的数据,这将对机器造成沉重负担。每个记录都必须与另一个数据库中的记录进行比较。将对性能产生非常缓慢和巨大的影响

最好的方法是使用专门为此任务设计的软件进行备份。如果您真的想要一个PHP解决方案,我会在数据库中添加一个名为changes的新表。它将保存一个表名和键索引

然后在每个需要备份的表上添加触发器,该触发器将在changes表中输入一个新条目,该条目包含表名和键。然后您的PHP脚本可以查询此表以查找更改和新项,并且只查询这些更改和新项

不使用单独的表,您可以始终向现有表添加一个小的int列,称为lastAction或其他内容,并存储0表示无更改,1表示更新,2表示新记录

然后,您可以再次只查询所需的数据

请记住,具有两个数据库的PHP解决方案永远不可靠。您需要一个类似以下的结构:

1 Query record from old database
2 Update/insert record in new database
3 Mark old database record as completed.
很可能是在完成步骤2后,您失去了与旧数据库的连接,无法再将其设置为“已完成”。这将导致在下次运行时更新或添加记录


另一个问题可能是在第1步和第2步之间,有人再次更改记录。然后在备份中插入一个旧值,并将其标记为已完成。而最新更新将不再备份。

是否在同一台计算机上从一个数据库备份到另一个数据库?备份的目的是什么?