mysqlをマスター・スレイブ構成にして冗長化を図るときには以下のような設定を行います。
マスター側の設定
/etc/my.cnfに以下を追加し再起動
server-id = 1 log-bin = /var/lib/mysql/mysql-bin
レプリケーション用のユーザを作成し、replication slave権限を追加
CREATE USER 'repl'@'(スレーブのIP)' IDENTIFIED BY 'repl'; GRANT REPLICATION SLAVE ON *.* TO repl@'(スレーブのIP)';
スレーブ設定のためマスターの状態を控える
SHOW MASTER STATUS; +------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+-------------------+ | mysql-bin.000002 | 120 | | | | +------------------+----------+--------------+------------------+-------------------+ 1 row in set (0.00 sec)
スレーブ側の設定
/etc/my.cnfに以下を追加して再起動
server-id = 2 read_only
mysqlを起動しマスターサーバの設定を行う
CHANGE MASTER TO MASTER_HOST = '(マスタのIP)' , MASTER_USER = 'repl' , MASTER_PASSWORD = 'repl' , MASTER_PORT = 3306, MASTER_LOG_FILE = '(バイナリログのファイル名)' , MASTER_LOG_POS = (バイナリログのポジション);
スレーブをstartする
START SLAVE;
slaveがmasterと接続できているか確認
SHOW SLAVE STATUS\G; →slave_IO_State: Waiting for master to send event ならOK