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を使用して同期を行う

関連記事:

お気軽にご相談ください

お見積りへ お問い合わせへ
▲