mysql (mariadb)#

(2026.1.26更新)

mariadbがパフォーマンスの限界を訴えているので,innodb周りの設定を見直す.

 1 25 06:50:39  mariadbd[1716]: 2026-01-25  6:50:39 0 [Note] InnoDB: Pending IO count
 1 25 06:50:39  mariadbd[1716]: -------------------
 1 25 06:50:39  mariadbd[1716]: Capacity      : 90585908
 1 25 06:50:39  mariadbd[1716]: Max Age(Sync) : 80819529
 1 25 06:50:39  mariadbd[1716]: Max Age(Async): 70717088
 1 25 06:50:39  mariadbd[1716]: Current Age   : 80149628 : 99%
 1 25 06:50:39  mariadbd[1716]: -------------------
 1 25 06:50:39  mariadbd[1716]: 2026-01-25  6:50:39 0 [Note] InnoDB: LSN age parameters
 1 25 06:50:39  mariadbd[1716]: -------------------
 1 25 06:50:39  mariadbd[1716]: Flush Sync  LSN: 3071207603073
 1 25 06:50:39  mariadbd[1716]: Flush ASync LSN: 3071207731584
 1 25 06:50:39  mariadbd[1716]: Checkpoint  LSN: 3071127581956
 1 25 06:50:39  mariadbd[1716]: System LSN     : 3071207731584
 1 25 06:50:39  mariadbd[1716]: -------------------
 1 25 06:50:39  mariadbd[1716]: 2026-01-25  6:50:39 0 [Note] InnoDB: LSN flush parameters
 1 25 06:50:39  mariadbd[1716]: -------------------
 1 25 06:50:39  mariadbd[1716]: Dirty Pages: 21806 : 1%
 1 25 06:50:39  mariadbd[1716]: Free Pages : 1522423
 1 25 06:50:39  mariadbd[1716]: LRU Pages  : 554249
 1 25 06:50:39  mariadbd[1716]: -------------------
 1 25 06:50:39  mariadbd[1716]: 2026-01-25  6:50:39 0 [Note] InnoDB: Buffer Pool pages
 1 25 06:50:39  mariadbd[1716]: 2026-01-25  6:50:39 0 [Note] InnoDB: Long wait (5 seconds) for double-write buffer flush.
 1 25 06:49:37  mariadbd[1716]: -------------------
 1 25 06:49:37  mariadbd[1716]: Flush Slot  - first_free: 128 reserved:  0
 1 25 06:49:37  mariadbd[1716]: Active Slot - first_free: 128 reserved:  128
 1 25 06:49:37  mariadbd[1716]: Batch running : true
 1 25 06:49:37  mariadbd[1716]: -------------------
 1 25 06:49:37  mariadbd[1716]: 2026-01-25  6:49:37 0 [Note] InnoDB: Double Write State
 1 25 06:49:37  mariadbd[1716]: -------------------
 1 25 06:49:37  mariadbd[1716]: Pending Write: 1
 1 25 06:49:37  mariadbd[1716]: Pending Read : 0
 1 25 06:49:37  mariadbd[1716]: -------------------
 1 25 06:49:37  mariadbd[1716]: 2026-01-25  6:49:37 0 [Note] InnoDB: Pending IO count
 1 25 06:49:37  mariadbd[1716]: -------------------
 1 25 06:49:37  mariadbd[1716]: Capacity      : 90585908
 1 25 06:49:37  mariadbd[1716]: Max Age(Sync) : 80819529
 1 25 06:49:37  mariadbd[1716]: Max Age(Async): 70717088
 1 25 06:49:37  mariadbd[1716]: Current Age   : 80257224 : 99%
 1 25 06:49:37  mariadbd[1716]: -------------------
 1 25 06:49:37  mariadbd[1716]: 2026-01-25  6:49:37 0 [Note] InnoDB: LSN age parameters
 1 25 06:49:37  mariadbd[1716]: -------------------
 1 25 06:49:37  mariadbd[1716]: Flush Sync  LSN: 3071197070369
 1 25 06:49:37  mariadbd[1716]: Flush ASync LSN: 3071197796760
 1 25 06:49:37  mariadbd[1716]: Checkpoint  LSN: 3071117539536
 1 25 06:49:37  mariadbd[1716]: System LSN     : 3071197796760

おそらくinnodb_buffer_pool_size = 32Gにしたせいでlogファオルのキャパシティーが足りていないと思われる./etc/mysql/mariadb.conf.d/50-server.cnfのInnoDBの箇所を下記のように修正

# * InnoDB
#

# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
# Read the manual for more InnoDB related options. There are many!
# Most important is to give InnoDB 80 % of the system RAM for buffer use:
# https://mariadb.com/kb/en/innodb-system-variables/#innodb_buffer_pool_size
# innodb_buffer_pool_size = 8G
# 書き込み遅延が発生しているためメモリ使用量を増やす
innodb_buffer_pool_size = 32G

#
#HDD の負荷を下げるため下記を実施
#https://docs.netapp.com/ja-jp/ontap-apps-dbs/mysql/mysql-innodb_flush_log_at_trx_commit.html
innodb_flush_log_at_trx_commit = 2

# Redoログサイズを拡張
innodb_log_file_size = 8G

# HDD RAID10 の実効性能に合わせる
innodb_io_capacity = 600
innodb_io_capacity_max = 1000

# HDDなので、近隣のダーティページをまとめて書き出す設定を有効にする
innodb_flush_neighbors = 1

# 一度に書き出すページ数を増やして効率を上げる
innodb_write_io_threads = 8
innodb_read_io_threads = 8

としてmariadbを再起動.再起動に時間がかかるのでtmuxのような環境で実行した方が良いだろう.

sudo systemctl restart mariadb

再起動後にload average が70近く上がるが,すぐに落ち着くのでとりあえずは様子見.