mysql - inotify 在 InnoDB 文件上失败

标签 mysql innodb inotify

我用inotify监控mysql数据文件的变化,存储引擎是InnoDB。当实际更新 InnoDB 文件中的数据时,inotify 将始终无法捕获任何事件。然而,当我将相同表的存储转换为 MyISAM 存储引擎时,一切都很顺利。

对正在发生的事情有什么想法吗?

最佳答案

我可以很好地监控 InnoDB 表空间:

$ inotifywatch -v -t 60 -r /var/lib/mysql/data/*

. . .

Finished establishing watches, now collecting statistics.
Will listen for events for 60 seconds.
total  access  modify  close_nowrite  open  filename
21     12      0       4              5     /var/lib/mysql/data/test/
3      1       0       1              1     /var/lib/mysql/data/imdb/
3      1       0       1              1     /var/lib/mysql/data/performance_schema/
2      0       2       0              0     /var/lib/mysql/data/ibdata1
2      0       2       0              0     /var/lib/mysql/data/ib_logfile0
1      0       1       0              0     /var/lib/mysql/data/mysqld-bin.000017

我做了一些更多的测试,似乎当我有 innodb_flush_method=O_DIRECT,并且我使用一些像 INSERT 这样的 DML 来更改数据时,inotify 不会报告它。

但是当我禁用 O_DIRECT 并允许 InnoDB I/O 通过文件系统缓冲区时,inotify 会报告对 .ibd 文件的 DML 更改。


其他细节:

Linux distro: CentOS 6.5
Linux kernel version: 2.6.32
inotify version: 3.14
Filesystem for MySQL datadir: xfs

关于mysql - inotify 在 InnoDB 文件上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21709053/

相关文章:

mysql - Esqueleto 位于实体 ID 上

javascript - 如何避免普通文件中的 key ?

python - 无法导入 MySQLdb - python - Windows 8.1

mysql - 用于大表的 InnoDB 与 MyISAM Wordpress 博客

php如何正确使用inotify实例进行目录监控

php - facebook live search 使用 php jquery mysql,显示 5 个结果如何显示其余的?

mysql - 如何使用 Innodb 确保 MySQL 中的多个表列是唯一的(或重构我的表)?

MySQL:INSERT 被外键引用行的更新阻塞

linux - 使用 inotify 的正确方法是什么?

c - 将读取与 inotify 一起使用