根据 Percona 的文章 MySQL checkpoint age may freeze it: https://www.percona.com/blog/2011/04/04/innodb-flushing-theory-and-solutions/
我该如何计算呢?如何确保 134 mb 的 innodb_log_file_size 对我来说足够了,或者我需要增加它?
这是 SHOW ENGINE INNODB STATUS 中的 LOG 部分,但正确的公式是什么?(以及如何获得兆字节与 innodb_log_file_size 进行比较)
---
LOG
---
Log sequence number 26361002986468
Log buffer assigned up to 26361002986468
Log buffer completed up to 26361002986148
Log written up to 26361002986148
Log flushed up to 26361002902700
Added dirty pages up to 26361002986148
Pages flushed up to 26360959010673
Last checkpoint at 26360958543063
7934296064 log i/o's done, 669.00 log i/o's/second
谢谢。
PS 我们正在考虑是否应该将 innodb_capacity_io 从默认的 200 增加到 500 或 1000。(我们有足够的 iops 可用)
这些序列号必然是大的、单调递增的数字。它们不是日志中的字节偏移量。如果您对十六进制转储感兴趣,您可能会在日志中找到该数字。(我不。)
Percona 博客虽然不错,但已有十年历史。大型日志不再像以前那样延迟重启。
考虑这个来判断是否增加(或减少)log_file_size:
InnoDB 日志轮换之间的分钟数 =
Uptime / 60 * innodb_log_file_size / Innodb_os_log_written
60 分钟是一个很好的目标,但它不是一个精确的目标。
从 5.6.8 开始,可以动态更改;一定也要改变
my.cnf
。innodb_log_files_in_group
传统上是 2。我建议您使用 2,除非您使用的是不再需要的 MariaDB 的新版本。