MySQL Replication for 5.6

前に書いた MySQL Replication の焼き直しです。
バージョンを5.6で揃えることになったので、他のバージョンとの差異を気にする必要がない、はず。

  1. [マスター・スレーブ]
    それぞれ作る。
    mysql.comにリポジトリがあるので、これを使用する。
  2. [マスター・スレーブ]
    vi /etc/my.cnf
    で、以下を書き足す or コメントアウトを外す。
    server-idは重複しないよう気をつける。
    (第2オクテット~第4オクテットの9桁で被らないと思っている)

    [mysqld]
    log-bin=mysql-bin
    server-id=168001012
  3. [マスター]
    スレーブから接続するユーザを作成しておく。

    GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.0/255.255.255.0' IDENTIFIED BY 'repl_password';
  4. [マスター]
    ダンプ出力する。

    mysqldump -u root -p --all-databases --master-data --apply-slave-statements >> /tmp/sqldump_all_databases.sql

    [ –single-transaction ]がないと、
    始めのデータベースと最後のデータベースでダンプしてる間に更新されている場合が出てきたりするかも。
    でも、[ –master-data ]で、[ –lock-all-tables ]が自動的に追加されるからそれでイイのかな?

    [ –opt ]
    ※–opt はデフォルトでONなので、明示的に書く必要はない。
    自動的にセットされるオプション・・・

    [ –all-databases ]
    全てのデータベースを出力。

    [ –master-data ]
    ダンプファイルの先頭に「CHANGE MASTER TO…」を書き込む。
    自動的にセットされるオプション・・・
    (ただし、[ –single-transaction ]オプションが指定されている場合を除く)

    自動的に解除されるオプション・・・

    [ –apply-slave-statements ]
    ダンプファイルの先頭、「CHANGE MASTER TO…」文より前に「STOP SLAVE;」、
    末尾に「START SLAVE;」を書き込む。

  5. [スレーブ]
    マスターにあるダンプファイルを取得。

    scp -Cqp user@192.168.1.12:/tmp/sqldump_all_databases.sql /tmp/sqldump_all_databases.sql
  6. [スレーブ]
    [ –master-data ]オプションをつけていれば、「CHANGE MASTER TO…」文も同時にやってくれているはず。
    [ –apply-slave-statements ]オプションをつけていれば、自動的にSLAVEとしてスタートしているはず。

    mysql -u root -p < /tmp/sqldump_all_databases.sql
  7. [スレーブ]
    動作状況を確認しておく。

    show slave status;

    で、

    Slave_IO_Running: Yes
    Slave_SQL_Running: Yes

    が両方ともYesになっている事を確認。

    Slave_SQL_Running_State: Reading event from the relay log

    は、「差分読み込み中。
    よく見ると、

    Seconds_Behind_Master: 11771

    という表記もあって、マスターから遅れている秒数を表示してくれている。

    Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it

    は、「全ての差分読み込み完了。マスターのアップデート待ち」という状態。

これで、スレーブ出来上がる、はず。