MariaDB / MySQL:获取InnoDB表

时间:2015-06-10 10:44:21

标签: mysql innodb mariadb information-schema

如何在InnoDB表上获得可靠的校验和?我想要像MyISAM那样的CHECKSUM TABLE foo QUICK;,它需要快速。我正在开发一种工具来可靠地监控并迅速对数据库中的更改做出反应。

InnoDB表格不会更新UPDATE_TIME中的information_schema.TABLES,而且我无权向表中添加自动更新的last_update列,因此我可以{{1 }}。无论如何,它不适用于删除。此外,我对只有全秒精度的时间戳引入的竞争条件不满意。

我已经看到了使用MAX(last_update)中的NUM_ROWSMODIFIED_COUNTER作为校验和的建议,但在我对MariaDB 10.0的测试中,这些值在{{1}上未更改}查询。

3 个答案:

答案 0 :(得分:0)

每次客户端写入InnoDB时,日志序列号都会增加。

mysql> pager grep "Log sequence number"
PAGER set to 'grep "Log sequence number"'
mysql> show engine innodb status\G
Log sequence number 243755747560
1 row in set (0.00 sec)

要知道修改了哪个表,您可以扫描REDO日志。请参阅REDO日志文件格式https://www.sba-research.org/wp-content/uploads/publications/WSDF2012_InnoDB.pdf

的说明

答案 1 :(得分:0)

另一种方法:打开binlog。所有的变化都归于它。监控它。

答案 2 :(得分:0)

MODIFIED_COUNTER在UPDATE上没有变化是MySQL和MariaDB中的一个错误。报告为http://bugs.mysql.com/bug.php?id=77301我想我会等待修复,因为它很好地解决了我的问题。

相关问题