MySQL使ってますか?
近年はMariaDBとかMongoDBとかNoSQLとかがでてきていろいろにぎやかになっているDB業界ですが以下前回と同文。
さて、今回は準同期レプリケーションです。当初はMySQL6.0からとかいわれてましたが5.5から入りましたね。
設定
まずは普通にレプリケーション組んで、設定ファイルにプラグイン読み込むのを記述するだけです。
マスター
マスターの設定は以下。
plugin-loadとrpl_semi〜〜〜の設定を忘れずに。
/etc/my.cnf
server-id=1
sync_binlog=1
log-bin=mysql-bin
plugin-load=rpl_semi_sync_master=semisync_master.so
rpl_semi_sync_master_enabled=1
rpl_semi_sync_master_timeout=10
MySQLを起動したら以下のコマンドでレプリケーション用のユーザを作っておきます。
GRANT REPLICATION SLAVE ON *.* TO 'slave-user'@'%' IDENTIFIED BY 'slave-password';
あとマスターのログのポジションとログファイル名を控えてください。
show master status;
スレーブ
スレーブの設定は以下。
こちらも同様。プラグインの読み込みと、スレーブなのでread_onlyを忘れずに。
/etc/my.cnf
server-id=2
sync_binlog=1
log-bin=mysql-bin
plugin-load=rpl_semi_sync_slave=semisync_slave.so
rpl_semi_sync_slave_enabled=1
read_only
設定してMySQLを起動したら以下のコマンドでマスターに接続します。
CHANGE MASTER TO MASTER_HOST = '[IPADDRESS]', MASTER_USER = '[USER]', MASTER_PASSWORD = '[PASSWORD]',MASTER_PORT=3306;
start slave;
これでレプリケーションが完了です。
確認してみましょう。
確認
確認は以下のコマンドでやります。
mysql> SHOW GLOBAL VARIABLES LIKE "rpl%";
+------------------------------------+-------+
| Variable_name | Value |
+------------------------------------+-------+
| rpl_recovery_rank | 0 |
| rpl_semi_sync_master_enabled | ON |
| rpl_semi_sync_master_timeout | 10 |
| rpl_semi_sync_master_trace_level | 32 |
| rpl_semi_sync_master_wait_no_slave | ON |
+------------------------------------+-------+
5 rows in set (0.01 sec)
mysql> SHOW GLOBAL VARIABLES LIKE "rpl%";
+---------------------------------+-------+
| Variable_name | Value |
+---------------------------------+-------+
| rpl_recovery_rank | 0 |
| rpl_semi_sync_slave_enabled | ON |
| rpl_semi_sync_slave_trace_level | 32 |
+---------------------------------+-------+
3 rows in set (0.00 sec)
mysql> SHOW STATUS LIKE 'Rpl_semi_sync%';
+----------------------------+-------+
| Variable_name | Value |
+----------------------------+-------+
| Rpl_semi_sync_slave_status | ON |
+----------------------------+-------+
1 row in set (0.00 sec)
では楽しい準同期ライフを!