2026年11月1日
2026年11月1日
MySQLのGTIDを使ってレプリケーションを管理する方法
はじめに
MySQLのGTID(Global Transaction Identifier)を使用することで、レプリケーション環境をより効率的かつ安定的に管理することができます。特に大規模なデータベース環境や高可用性要件のあるシステムでは、GTIDは重要な役割を果たします。
症状・背景
このテーマが必要になる主な場面:
- システムの拡張性向上
- レプリケーションエラーの軽減
- 高可用性環境の構築
- 複数サーバー間でのデータ同期
手順・設定方法
ステップ1: GTIDの有効化と初期設定
# GTIDモードを有効にする
mysql> SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
mysql> SET GLOBAL transaction_isolation='READ-COMMITTED';
mysql> SET GLOBAL log_bin_trust_function_creators=1;
mysql> SET GLOBAL binlog_format='ROW';
# GTIDを使用するための初期設定
mysql> SET GLOBAL gtid_mode=ON;
# データベース接続用にGTIDを有効にする
mysql> SET GTID_PURGED='';
ステップ2: スレーブサーバーの設定
# スレーブサーバーに接続し、初期化を行う
mysql> CHANGE MASTER TO master_host='<主マスターサーバ>', master_user='replica', master_password='password', master_use_gtid=slave_pos;
# スレーブサーバーを開始する
mysql> START SLAVE;
ステップ3: セカンダリの追加
# 新しいセカンダリサーバーに接続し、GTIDを使用して同期を行う
mysql> CHANGE MASTER TO master_host='<主マスターサーバ>', master_user='replica', master_password='password', master_use_gtid=slave_pos;
# セカンダリサーバーを開始する
mysql> START SLAVE;
ステップ4: 実践/トラブルシュート/監視
# レプリケーションステータスを確認する
mysql> SHOW SLAVE STATUS\G
# GTIDの使用状況を確認する
mysql> SELECT * FROM information_schema.GTID_EXECUTED;
# 一時的なエラーは以下のコマンドで再開可能
mysql> STOP SLAVE;
mysql> START SLAVE;
注意事項
- セキュリティ上の注意: master_userとmaster_passwordを厳重に管理してください。
- パフォーマンス/運用上の注意: レプリケーションの負荷が高まることに注意が必要です。
まとめ
1. GTIDの有効化: 主マスターサーバーでのGTIDモードを有効にする
2. 初期設定: GTIDを使用するために必要なパラメータを設定する
3. スレーブサーバーの設定: スレーブサーバーに接続し、GTIDを使用して同期を行う
4. セカンダリの追加: 新しいセカンダリサーバーに接続し、GTIDを使用して同期を行う
関連記事: