Error number: MY-010873; Symbol: ER_INNODB_DIRTY_WATER_MARK_NOT_LOW; SQLSTATE: HY000
Message: InnoDB: innodb_max_dirty_pages_pct_lwm cannot be set higher than innodb_max_dirty_pages_pct. Setting innodb_max_dirty_pages_pct_lwm to %lf
Error number:MY-010873; Symbol: ER_INNODB_DIRTY_WATER_MARK_NOT_LOW; SQLSTATE: HY000
错误说明
MY-010873错误是There is a high probability that InnoDB’s dirty water mark is not low enough被报出来的一个MySQL错误。这个错误通常是InnoDB在数据flush到硬件存储设备时出现告警信息所将被报出来的。InnoDB检测到自身内存中的dirty page数量是超过系统设定的一个主阈值,但是又低于一个次阈值时会报出这个错误。
常见案例
这个错误在MySQL中通常发生在有大规模的I/O活动发生时,比如说文件系统在flush大量的page到硬件存储设备,这个时候,dirty page的数量会超过一个主阈值,但是又不足以达到次阈值,这个时候就会报出错误MY-010873。
解决方法
1.增加服务器上面的内存规模以减少OS在写入硬件存储设备时内存中dirty page的数量。
2.调整容量比率,将dirty page的数量减少到主阈值之下以防止MY-010873错误的出现。
3.通过调整log_checksums系统参数和磁盘配置参数来减少InnoDB需要flush的dirty page。
4.当SQL语句中发现问题时,可以检查MySQL的 Slow Query Log,寻找导致MY-010873错误的潜在问题。
5.当遇到MY-010873错误时,开发者可以检查操作系统的日志文件以确定数据是否存在损坏的可能性。