MySQLのデュアルマスターの設定方法

MySQLにおいて、デュアルマスター構成はデュアルマスターレプリケーション、双方向レプリケーションとも呼ばれ、データベースの読込み分離と高可用性を実現します。デュアルマスター構成では、二つのMySQLサーバがどちらも読込みおよび書込み要求を受け付け、そのデータは互いに同期されます。

MySQLのデュアルマスター構成を設定するには、次の手順を実行する必要があります。

  1. 主サーバーAを配置:
  2. masterサーバAのconfigファイル(通常はmy.cnf)に以下の設定項目を追加します。
    server-id=1
    log-bin=mysql-bin
    binlog-do-db=database_nameここで、server-idはサーバのユニークな識別子で、任意の整数にすることができます。log-binはバイナリログの名前を指定します。binlog-do-dbはレプリケートするデータベース名を指定します。
  3. 構成を反映させるため、プライマリー サーバ A を再起動します。
  4. プライマリサーバーBを配置する:
  5. 主サーバBの設定ファイルに以下を追加:
    server-id=2
    log-bin=mysql-bin
    binlog-do-db=DB名
  6. 主サーバBを再起動してください。
  7. マスタ-スレーブレプリケーションを構成します。
  8. 主サーバAのMySQLコマンドラインインターフェースにログインし、次のコマンドを実行してレプリケーション用のユーザを作成します。“`
    CREATE USER ‘replication’@’%’ IDENTIFIED BY ‘password’;
    GRANT REPLICATION SLAVE ON *.* TO ‘replication’@’%’;
    FLUSH PRIVILEGES;
    “`

    ここで、replicationはユーザ名、passwordはパスワードです。

  9. 主サーバAで以下のコマンドを実行し、バイナリログの位置情報を取得してください:
    SHOW MASTER STATUS;FileとPositionの値を控えてください。
  10. MySQLコマンドラインインターフェイスにマスターサーバーBにログインして、次のコマンドを実行してマスタースレーブ関係を設定します:CHANGE MASTER TO
    MASTER_HOST = ‘master_server_ip’
    MASTER_USER = ‘replication’
    MASTER_PASSWORD = ‘password’
    MASTER_LOG_FILE = ‘master_log_file_name’
    MASTER_LOG_POS = master_log_position

    ここで、master_server_ip はマスターサーバーAの IP アドレス、master_log_file_name と master_log_position は、マスターサーバーA で取得されたファイル名とポジションの値です。

  11. スレーブ複製を開始する:
    START SLAVE;次のコマンドを使用して複製ステータスを確認できます:
    SHOW SLAVE STATUS\G;

    Slave_IO_RunningとSlave_SQL_Runningの値がどちらもYesの場合、複製は正常に起動されています。

  12. リードアンドライトレプリケーションを設定する
  13. アプリでは、読み込み操作はマスターサーバーA、書き込み操作はマスターサーバーBを指す。

主Aと主Bは配置後、互いに主と従となり、双方 replication が実行できます。片方のサーバー障害時に片方がサービスを継続し、データベースの可用性を確保します。また、読書きを異なるサーバーで行うことで、データベースのパフォーマンスを向上させます。

bannerAds