mysql冗長化

Yuya Sato 12views 更新:2016年10月12日

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

ログイン / 新規登録してコメントする

このソースコードをストックして後で利用したり、作業に利用したソースコードをまとめることができます。

こちらもお役に立つかもしれません