我在一个 mysql 服务器中有两个数据库database_master
,database_backup
.
我想database_backup
复制插入或更新的所有新数据database_master
。
但是是否有一些数据被删除了database_master
,数据database_backup
仍然会保留。
我们如何在 MySQL 中做到这一点?
我在一个 mysql 服务器中有两个数据库database_master
,database_backup
.
我想database_backup
复制插入或更新的所有新数据database_master
。
但是是否有一些数据被删除了database_master
,数据database_backup
仍然会保留。
我们如何在 MySQL 中做到这一点?
您可以在 database_master 表上为插入和更新语句使用触发器。在触发器中,您可以将数据插入到 database_backup 表中。
但是,请注意,这不会是异步的。两个表中的插入(或更新)将一起成为一个事务。如果出现问题,两者都将被回滚(在某些情况下这是一件好事)。
database_master 上的删除不会影响 database_backup。
为了清楚起见,我认为您想要复制,而不是复制记录的删除。这不能通过本机复制(既不是基于行也不是基于语句)来完成。主要原因是如果在主数据库上删除一行然后插入一行,新行可能会获得旧行的主键。在副本数据库上,这将导致密钥冲突。
但是,要进行某种 hack 审计日志记录,您可以在从属 mysql 服务器上为每个实际 DB 表创建一个日志记录表。例如,如果您有一个表foo
,您将创建一个相应的foo_logging
表。日志记录表将包含原始的每一列,以及一个单独的自动递增主键。然后,您将在原始表上放置一个触发器,以将任何新记录或更新记录的副本插入到相应的日志记录表中。