如何审核数据库中的更改?

yeotifhr  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(301)

如何正确跟踪典型mysql数据库中的状态?
i、 e.回答问题,例如表格中某一行的历史记录。
当它被改变的时候
改变了什么
是谁随时间改变的。
一位同事曾暗示我,“密钥交换”是用来解决这个问题的,但我有点困惑如何实现这种做法。

jjjwad0x

jjjwad0x1#

有很多方法可以做审计。虽然我不熟悉与数据库审计相关的密钥交换,但我熟悉以下方法:
mysql企业审计
https://www.mysql.com/products/enterprise/audit.html 有官方文件。有一个博客描述了企业审计的一些例子,可能对你有所帮助。https://scriptingmysql.wordpress.com/2014/03/14/installing-and-testing-the-mysql-enterprise-audit-plugin/
历史记录表
审核表的方法之一是创建与基表结构相似的历史表,并在将新数据写入基表之前放置触发器将旧数据写入该表。另外一个用于存储记录存档日期的日期/时间列也有助于查询。
例如, sale_order 这张table有一张table sale_order_history table。
审计表
一个审计表,包含action(即insert、update、delete)、archived(date/time)、archiver(导致此记录存档的人员)、tablename和clob/blob等列,用于将原始数据存储为json或二进制数据。这将是一个单一的表,其中来自多个表的存档数据将涌入其中。这张table会变大,要看变化的量。
将数据流传输到另一个数据库
我看到的另一个模型(但我自己没有看到)是将旧数据推入消息队列(例如rabbitmq)。队列的订户将数据写入与原始数据库分离的存档表。此方法保持原始数据库示例精简,但必须将创造性查询写入diff数据。应用层编写了审计,这让dba不高兴。

相关问题