2026年11月10日
2026年11月10日
MySQLのGTIDレプリケーションを設定する方法
はじめに
MySQLのGTID(Global Transaction ID)レプリケーションは、データベースの冗長性と可用性を向上させる重要な機能です。GTIDを使用することで、自動的にトランザクションの一貫性を保証し、手動での管理作業を最小限に抑えられます。
症状・背景
なぜMySQLのGTIDレプリケーションが必要なのか?
- マイグレーションやエラーリカバリのためにデータベース間で自動的に同期を行う必要がある場合
- 高可用性クラスタリングを構築する際に、トランザクションレベルでの一貫性を保つ必要がある場合
- 保守作業が簡素化され、管理コストが削減できる場合
手順・設定方法
ステップ1: GTIDモードの有効化
# GTIDを有効にする
mysql> SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'STRICT_TRANS_TABLES',''));
mysql> SET GLOBAL log_bin=1;
mysql> SET GLOBAL binlog_format='ROW';
mysql> FLUSH TABLES WITH READ LOCK;
mysql> STOP SLAVE;
mysql> UNLOCK TABLES;
# GTIDを初期化
mysql> RESET MASTER;
ステップ2: レプリケーターの設定
# レプリケーターのMySQLサーバーでGTIDモードを有効にする
mysql> CHANGE MASTER TO master_info_repository='TABLE', master_use_gtid=slave_pos;
# 一貫性のあるレプリケーション開始
mysql> START SLAVE;
ステップ3: GTIDを使用したバックアップとリカバリ
# バックアップ時にGTID情報を保存
mysql> FLUSH TABLES WITH READ LOCK;
mysql> SHOW MASTER STATUS;
# ここで得られたファイル名と位置を記録し、復元先のMySQLサーバーに適用する
ステップ4: 実践/トラブルシュート/監視
# GTIDレプリケーション状態の確認
mysql> SHOW SLAVE STATUS\G;
# 一貫性チェック
mysql> SELECT * FROM mysql.gtid_executed;
注意事項
- セキュリティ上の注意: GTID情報を不正に取得されると、データベースへのアクセスが可能になるため、ネットワークのセキュリティを強化すること。
- パフォーマンス/運用上の注意: トランザクションの遅延やI/O負荷増加がある場合があるため、適切な監視を行うこと。
まとめ
1. GTIDの有効化: GTIDモードを有効にし、レプリケーション設定を行います。
2. レプリケーターの設定: レプリケーター側でGTIDモードを有効にして、一貫性のあるレプリケーションを開始します。
3. バックアップとリカバリ: GTID情報を保存して、必要な時に復元先のMySQLサーバーに適用します。
4. 状態確認: GTIDレプリケーションの状態を定期的に確認し、問題が発生した場合は適切なトラブルシュートを行います。
関連記事:
- [MySQLのバックアップとリカバリ手法]
- [データベースの高可用性クラスタリング実現方法]
- [ネットワークセキュリティ強化手順]