LoginSignup
4
3

More than 5 years have passed since last update.

MySQLのレプリケーション設定

Posted at

設定ファイルの編集〜レプリケーション用ユーザの作成まで

こちらの内容になります。

Masterステータスの確認

Master側のMySQLを起動して、Masterになっているか確認します。

mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000002 |      271 |              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

Slaveの設定

Slave側をSlaveと認識させるために、Masterの情報を登録します。
この時、MASTER_LOG_FILE=MasterのFile、MASTER_LOG_POS=MasterのPositionを入力します。

mysql> CHANGE MASTER TO
     -> MASTER_HOST='192.168.10.1',
     -> MASTER_USER='repl',
     -> MASTER_PASSWORD='slavepass',
     -> MASTER_LOG_FILE='mysql-bin.000002',
     -> MASTER_LOG_POS=271;

エラー無く設定できたら、Slaveとして起動します。

mysql> START SLAVE;
mysql> SHOW SLAVE STATUS\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.10.1
                  Master_User: repl
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000002
          Read_Master_Log_Pos: 271
               Relay_Log_File: db-koryo-relay-bin.000002
                Relay_Log_Pos: 417
        Relay_Master_Log_File: mysql-bin.000002
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 271
              Relay_Log_Space: 576
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
              Master_SSL_Cert: 
            Master_SSL_Cipher: 
               Master_SSL_Key: 
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 0
               Last_SQL_Error: 
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 1
1 row in set (0.00 sec)

Slave_IO_Running: と Slave_SQL_Running: が両方とも YES になっていると、スレーブは問題なく動作しています。

マスターのバイナリログの削除

マスターサーバでは、バイナリログ(mysql-bin.xxxxxxx)が増え続けるので、削除する必要があります。こちらが参考になると思います。

その他注意点

MySQLレプリケーションの注意点 - glxsのお気楽日記:MySQLの標準機能を使用したレプリケーション中に実行してはいけないSQLについて。

障害時復旧手順

  1. STOP SLAVE
  2. RESET SLAVE
  3. 改めてCHANGE MASTER TO文発行
  4. START SLAVE

知識

同期の種類

MySQLレプリケーション再入門 - Qiita

マスターからスレーブにデータを複製する処理において、準同期、非同期の2種類の同期方式があります。

  • 準同期:マスターでデータの更新が行われ、スレーブでも更新が行われた通知を受け取って同期の完了と判断します。
  • 非同期:準同期とは違い、スレーブでも更新が行われたか?の判定は行われません。文字通りの非同期での実行になります。

第8回 MySQLのレプリケーション構成:MySQLをチューニング,そしてスケールアップ/スケールアウトへ|gihyo.jp … 技術評論社

MySQLのレプリケーションでは,デフォルトでは非同期型となっています。MySQL 5.5以降では,プラグインをインストールすることで同期型と非同期型の中間に当たる準同期型をサポートしています。

参考

4
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3