MySQLレプリケーション

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

環境

  • FreeBSD 10.3
  • MySQL 5.7.13
  • マスターサーバ: master.domain.tld
  • スレーブサーバ: slave.domain.tld

Qiita「MySQL入門 レプリケーション編」を参考に、GTIDを使った非同期式で設定することに。

設定

  1. マスターサーバの /usr/local/etc/mysql/my.cnf を、次のように編集。
  2. マスターサーバを再起動。
  3. スレーブサーバの /usr/local/etc/mysql/my.cnf を、次のように編集。
  4. スレーブサーバを再起動。
  5. スレーブサーバの datadir 配下の auto.cnf を削除。
  6. マスターサーバにレプリケーション用ユーザを追加。REPLICATION SLAVE 権限を付与してユーザを作成する。
  7. スレーブサーバ側からマスターサーバのMySQLに接続できることを確認。 次のようなエラーが出る場合には、マスター側で接続許可の設定がうまくできていない。
  8. マスターサーバでコールドバックアップを取る。Warning回避のため、–triggers, –routines, –events を指定する。
  9. スレーブサーバにバックアップをリストアする。
    もし @@GLOBAL.GTID_PURGED can only be set when @@GLOBAL.GTID_EXECUTED is empty. というエラーが出たら、reset master してから再度リストア。
  10. スレーブサーバでレプリケーションを開始し、レプリケーションが正常に開始されたことを確認。
    show slave status で Slave_IO_State が「Connecting to master」以外なら正常。

以上で設定完了。のはず。

参考