|
A log excerpt that was originally posted in MDEV-27784 strongly suggests that the change buffer merge may cause an InnoDB log file overflow:
2022-10-24 23:20:16 0 [Note] InnoDB: FTS optimize thread exiting.
|
2022-10-24 23:20:16 0 [Note] InnoDB: to purge 5 transactions
|
2022-10-24 23:20:17 0 [Note] InnoDB: Starting shutdown...
|
2022-10-24 23:20:17 0 [Note] InnoDB: Dumping buffer pool(s) to /data/maria_data/ib_buffer_pool
|
2022-10-24 23:20:17 0 [Note] InnoDB: Restricted to 354860 pages due to innodb_buf_pool_dump_pct=25
|
2022-10-24 23:20:17 0 [Note] InnoDB: Buffer pool(s) dump completed at 221024 23:20:17
|
2022-10-24 23:57:37 0 [ERROR] InnoDB: The age of the last checkpoint is 966373838, which exceeds the log capacity 966365799.
|
2022-10-24 23:57:53 0 [ERROR] InnoDB: The age of the last checkpoint is 974973721, which exceeds the log capacity 966365799.
|
2022-10-24 23:58:09 0 [ERROR] InnoDB: The age of the last checkpoint is 983054253, which exceeds the log capacity 966365799.
|
2022-10-24 23:58:25 0 [ERROR] InnoDB: The age of the last checkpoint is 991661268, which exceeds the log capacity 966365799.
|
...
|
2022-10-25 2:02:57 0 [ERROR] InnoDB: The age of the last checkpoint is 4351924949, which exceeds the log capacity 966365799.
|
At this point, the server was forcibly killed, and it was unable to recover, because the last valid checkpoint had been overwritten 4½ times.
A design constraint is that before any buffer page latch is acquired in a mini-transaction that will write something, log_free_check() must be called. In the entire change buffer subsystem, only the function ibuf_remove_free_page() contains such a call, added in MDEV-13637.
|