1

我在一个 mysql 服务器中有两个数据库database_masterdatabase_backup.
我想database_backup复制插入或更新的所有新数据database_master
但是是否有一些数据被删除了database_master,数据database_backup仍然会保留。

我们如何在 MySQL 中做到这一点?

4

2 回答 2

1

您可以在 database_master 表上为插入和更新语句使用触发器。在触发器中,您可以将数据插入到 database_backup 表中。

但是,请注意,这不会是异步的。两个表中的插入(或更新)将一起成为一个事务。如果出现问题,两者都将被回滚(在某些情况下这是一件好事)。

database_master 上的删除不会影响 database_backup。

于 2013-07-23T17:28:19.123 回答
1

为了清楚起见,我认为您想要复制,而不是复制记录的删除。这不能通过本机复制(既不是基于行也不是基于语句)来完成。主要原因是如果在主数据库上删除一行然后插入一行,新行可能会获得旧行的主键。在副本数据库上,这将导致密钥冲突。

但是,要进行某种 hack 审计日志记录,您可以在从属 mysql 服务器上为每个实际 DB 表创建一个日志记录表。例如,如果您有一个表foo,您将创建一个相应的foo_logging表。日志记录表将包含原始的每一列,以及一个单独的自动递增主键。然后,您将在原始表上放置一个触发器,以将任何新记录或更新记录的副本插入到相应的日志记录表中。

于 2012-08-30T19:02:15.513 回答