Yakstは、海外の役立つブログ記事などを人力で翻訳して公開するプロジェクトです。
約11年前投稿 修正あり

これが私の好きなMySQL 5.6の新機能。あなたの好きな機能は?

MySQL Performance Blogの翻訳。あらゆるレポートにInnoDBログファイルのサイズ変更手順を書き続けた筆者が好きなMySQL 5.6の新機能とは。

原文
Here's my favorite secret MySQL 5.6 feature. What's yours? (English)
原文ライセンス
CC BY-NC-SA
翻訳依頼者
D98ee74ffe0fafbdc83b23907dda3665
翻訳者
D98ee74ffe0fafbdc83b23907dda3665 doublemarket
原著者への翻訳報告
未報告


MySQL 5.6は、数々のパフォーマンスの改善は当然のことながらそれに限らず、たくさんの素晴らしい新機能がある。ところが、InnoDBの全文検索やオプティマイザ、パフォーマンススキーマの改善、GTIDなど広く話題に上る機能がある一方で、誰も話に出さないような小さな改善もいくつかある。

そういう機能の一つを…これから紹介しよう。

過去約7年に渡るPerconaでの仕事の中で、私のレポートのおよそ97.35%は以下のような手順を含んでいる。

InnoDBのトランザクションログファイルのサイズを変えるためには、以下の手順に従うこと。手順を順に実行しないと、サーバは起動しなくなるか、InnoDBが無効の状態で起動してエラーが記録される。

1. my.cnfの以下の変数を変更あるいは追加

    innodb_log_file_size = XXXM

2. MySQLサーバを停止
3. エラーログを確認し、停止に成功したことを確認
4. 古いログファイルを以下のコマンドで移動(この時点でログがどこにあるのか改めて確認)

    mv /var/lib/mysql/ib_logfile* /tmp/

5. MySQLサーバを起動。新しいトランザクションログファイルが作られるので、やや起動に時間がかかる。
6. MySQLサーバが起動したことを確認できたら、古いログファイルを削除。

    rm /tmp/ib_logfile*

時々、それは安全なのかとか本当にやる必要があるのかといった質問をされることもあるが、そういった警告は気にしない。多くの場合には、トランザクションログのサイズを増やすのは、InnoDBを使っているMySQLサーバではでき得る一番いいことだからだ。

秘密の機能

これからは、MySQL 5.6が動いているシステムでは、手順が以下のように短くなって、私の仕事(もちろんあなたのも)はとても楽になるだろう。

innodb_log_file_size(と一緒に推奨設定も入れる)を変更して、MySQLを再起動

InnoDBトランザクションログファイルサイズの自動変更 と私は呼んでいる。MySQLがどう反応するか知りたい?この通りだ。

2013-08-20 13:57:37 5048 [Warning] InnoDB: Resizing redo log from 2*3072 to 2*32768 pages, LSN=1626007
2013-08-20 13:57:37 5048 [Warning] InnoDB: Starting to delete and rewrite log files.
2013-08-20 13:57:37 5048 [Note] InnoDB: Setting log file ./ib_logfile101 size to 512 MB
InnoDB: Progress in MB: 100 200 300 400 500
2013-08-20 13:57:39 5048 [Note] InnoDB: Setting log file ./ib_logfile1 size to 512 MB
InnoDB: Progress in MB: 100 200 300 400 500
2013-08-20 13:57:41 5048 [Note] InnoDB: Renaming log file ./ib_logfile101 to ./ib_logfile0
2013-08-20 13:57:41 5048 [Warning] InnoDB: New log files created, LSN=1626007

(削除も新規作成も)両方動いた! このシンプルさはなかなかのものだ。あなたの一番好きなMySQL 5.6の機能を教えてくれ。心配するな。秘密にする必要はない。もちろん、その勇気があるならね。

次の記事
InnoDBログシーケンス番号(LSN)を進める方法
前の記事
Pythonスクリプトのパフォーマンス計測ガイド

Feed small 記事フィード

新着記事Twitterアカウント