2023.12.16 Saturday
やたら増えるログの闇に対する防衛術2023[MySQL]
本エントリは闇の魔術に対する防衛術 Advent Calendar 2023の16日目とMySQL Advent Calendar 2023 16日目のクロスエントリです。
1.プロローグ
兵隊「隊長! 今度採用したアプリケーション、バックエンドはMySQLですが、最新のMySQL 8.0を使っているらしく、やたらエラーログにWarningを出すんです」
隊長「なーにー、やっちまったなぁ」
2.防衛術:エラーログのフィルタリング
隊長「男は黙ってlog_error_suppression_list」
MySQL 8.0.13からlog_error_suppression_listがサポートされました。
これはdepricatedに対するWarningエラーのように「いわれなくてもわかってるよ〜」というエラー出力を抑制するのに便利です。具体的な設定などは、以下のマニュアルや技術ドキュメントをご参照ください。
5.4.2.5 優先度ベースのエラーログのフィルタリング (log_filter_internal)
第155回エラーログのフィルタリング(MySQL道普請便り)
3.起承「転」結
兵隊「隊長! 実は昔から使っているMySQLがあるんですが、なんかバイナリログの量がすごく増えててですね。この前ディスクフルを起こしたんですよ。これって生成量自体減らせないんですかねぇ」
隊長「最近のMySQL(5.7以降)はバイナリログのフォーマットのデフォルトが行単位だからなぁ(binlog_format=row)。いたしかたない。。。。いや、条件さえあえば、いくつか対策はあるゾ」
3.1 binlog-row-imageをデフォルトのfullから、minimalまたはnoblobにする。
MySQL 行ベースレプリケーションでは、各行変更イベントに 2 つのイメージ、つまり「前」イメージ (更新される行を検索するときにこれらのカラムが照合される) と「後」イメージ (変更を含む) が含まれます。
MySQL 5.6からはbinlog-row-image指定が使え、下記マニュアルにある条件さえあえば、minimalにしてバイナリログの量の削減が期待できます。
17.1.6.4 バイナリロギングのオプションと変数:binlog-row-image
3.2 binlog_transaction_compressionを使う
MySQL 8.0.20からbinlog_transaction_compressionを使ったMySQLバイナリログの圧縮が利用できます。
設定と効果については、以下の技術ブログが参考になります。
第207回binlog_transaction_compressionを使ったMySQLバイナリログの圧縮について(MySQL道普請便り)
では、十分なディスク容量を確保しつつ、突撃〜
1.プロローグ
兵隊「隊長! 今度採用したアプリケーション、バックエンドはMySQLですが、最新のMySQL 8.0を使っているらしく、やたらエラーログにWarningを出すんです」
隊長「なーにー、やっちまったなぁ」
2.防衛術:エラーログのフィルタリング
隊長「男は黙ってlog_error_suppression_list」
MySQL 8.0.13からlog_error_suppression_listがサポートされました。
これはdepricatedに対するWarningエラーのように「いわれなくてもわかってるよ〜」というエラー出力を抑制するのに便利です。具体的な設定などは、以下のマニュアルや技術ドキュメントをご参照ください。
5.4.2.5 優先度ベースのエラーログのフィルタリング (log_filter_internal)
第155回エラーログのフィルタリング(MySQL道普請便り)
3.起承「転」結
兵隊「隊長! 実は昔から使っているMySQLがあるんですが、なんかバイナリログの量がすごく増えててですね。この前ディスクフルを起こしたんですよ。これって生成量自体減らせないんですかねぇ」
隊長「最近のMySQL(5.7以降)はバイナリログのフォーマットのデフォルトが行単位だからなぁ(binlog_format=row)。いたしかたない。。。。いや、条件さえあえば、いくつか対策はあるゾ」
3.1 binlog-row-imageをデフォルトのfullから、minimalまたはnoblobにする。
MySQL 行ベースレプリケーションでは、各行変更イベントに 2 つのイメージ、つまり「前」イメージ (更新される行を検索するときにこれらのカラムが照合される) と「後」イメージ (変更を含む) が含まれます。
MySQL 5.6からはbinlog-row-image指定が使え、下記マニュアルにある条件さえあえば、minimalにしてバイナリログの量の削減が期待できます。
17.1.6.4 バイナリロギングのオプションと変数:binlog-row-image
3.2 binlog_transaction_compressionを使う
MySQL 8.0.20からbinlog_transaction_compressionを使ったMySQLバイナリログの圧縮が利用できます。
設定と効果については、以下の技術ブログが参考になります。
第207回binlog_transaction_compressionを使ったMySQLバイナリログの圧縮について(MySQL道普請便り)
では、十分なディスク容量を確保しつつ、突撃〜
JUGEMテーマ:コンピュータ