2026年5月21日
2026年5月21日
Percona Toolkitで本番MySQLを安全に変更する方法
はじめに
本記事では、Percona Toolkitを利用して本番のMySQLデータベースを安全に更新する方法について解説します。オンラインDDL(Data Definition Language)機能を使用することで、パフォーマンスへの影響を最小限に抑えながらテーブル構造の変更を行います。
症状・背景
- テーブルのスキーマ変更が必要な場合
- 新しい制約やインデックスの追加が必要な場合
- カラムタイプの変更が必要な場合
- SQLリネーム操作を実行する必要がある場合
手順・設定方法
ステップ1: Percona Toolkitのインストール
# Percona ToolkitはGitHubからダウンロードできます
sudo yum install -y git perl-DBI perl-DBD:mysql # CentOSの場合
sudo apt-get install -y git libdbi-perl libdbd-mysql-perl # Ubuntuの場合
# Percona Toolkitをクローンします
git clone https://github.com/percona/percona-toolkit.git /usr/local/src/
# Percona Toolkitのパスを通す
export PATH=/usr/local/src/percona-toolkit:$PATH
ステップ2: Online DDL操作の準備
# MySQLクライアントを起動します
mysql -u root -p
# システム変数を設定します
SET GLOBAL innodb_lock_wait_timeout = 50;
SET GLOBAL innodb_online_alter_log_max_size = 134217728;
# テーブルのスキーマ変更操作を準備します
pt-online-schema-change --alter "ADD COLUMN new_column INT" \
--execute \
--host=localhost \
--user=root \
--password=your_password \
--table your_database.your_table
ステップ3: テストと監視
# Online DDL操作が完了した後、テーブルの健全性を確認します
CHECK TABLE your_database.your_table;
# インデックスや制約の追加テスト
pt-online-schema-change --alter "ADD INDEX idx_new_column (new_column)" \
--execute \
--host=localhost \
--user=root \
--password=your_password \
--table your_database.your_table
# パフォーマンスモニタリング
SHOW PROCESSLIST;
ステップ4: 実践/トラブルシュート/監視
# 本番環境での変更を完了後、再びパフォーマンスをチェックします
pt-stalk --sql "SELECT * FROM your_database.your_table" \
--user=root --password=your_password \
--interval 10s
注意事項
- バックアップ: 前提として十分なバックアップが確保されていることを確認してください。
- パフォーマンス影響: Online DDLはパフォーマンスに影響を与える可能性があるため、実施前にモニタリングを行ってください。
- セキュリティ上の注意: パスワードを明示的に記載しないでください。環境変数やファイルから参照してください。
- アップタイムの確保: Online DDLはダウンタイムを減らすことができますが、完全な無停止操作にはなりません。
まとめ
1. Percona Toolkitのインストール: Percona Toolkitをインストールし、必要なパッケージを揃えます。
2. Online DDL操作の準備: スキーマ変更やインデックス追加のために必要な設定を行います。
3. テストと監視: 操作が完了した後はテーブルの健全性を確認します。
4. 実践/トラブルシュート/監視: パフォーマンスモニタリングを行い、問題がないことを確認します。
関連記事: