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

レプリケーション用ユーザーの作成

mysql> GRANT REPLICATION SLAVE ON *.* TO repl@'10.6.25.0/255.255.255.0' IDENTIFIED BY 'qa55wd';

マスタの設定

バイナリログとserver_idをセットする。

[mysqld]
log-bin
server-id=10

再起動必要。

マスタのバックアップ取得とポジションの確認

  1. 何らかの方法で更新がされない状態を作り出す。(サービス止めるなど)
  2. SHOW MASTER STATUS;でバイナリログの位置情報を確認
  3. mysqldump等でバックアップ
  4. サービス再開 (バックアップと位置情報が確認できれば再開しても大丈夫なはず)
mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_do_db | Binlog_ignore_db |
+------------------+----------+--------------+------------------+
| mymaster-bin.001 | 359      |              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

スレーブの設定

  1. バックアップからDBを作成
  2. my.cnfにスレーブの設定
[mysqld]
server-id=11
#master-host=mymaster
#master-user=repl
#master-password=qa55wd
  1. CHANGE MASTER TO で同期設定
mysql> CHANGE MASTER TO
    -> MASTER_HOST = 'mymaster',
    -> MASTER_USER = 'repl',
    -> MASTER_PASSWORD = 'qa55wd',
    -> MASTER_LOG_FILE = 'mymaster-bin.001',
    -> MASTER_LOG_POS = 359;
Query OK, 0 rows affected (0.06 sec)
  1. START SLAVEでスレーブスタート
mysql> START SLAVE;
Query OK, 0 rows affected (0.01 sec)