Edited at

MySQL互換のPercona-Serverで準同期レプリケーションを作る

More than 3 years have passed since last update.

自分用のメモなので説明など端折って完全に手順のみです。


準備


パッケージのインストール(マスター、スレーブともに)

$ sudo rpm -Uvh http://www.percona.com/redir/downloads/percona-release/percona-release-0.0-1.x86_64.rpm

$ sudo yum install Percona-Server-server-56 Percona-Server-client-56 Percona-Server-shared-56 Percona-Server-shared-compat percona-toolkit xtrabackup -y


準同期レプリケーション向けmy.cnfの設定

マスター側のmy.cnf設定(抜粋)

[mysqld]

# Replication
server-id=101 # この数値は適当に
plugin-load=rpl_semi_sync_master=semisync_master.so
rpl_semi_sync_master_enabled=1
rpl_semi_sync_master_timeout=500

スレーブ側のmy.cnf設定(抜粋)

[mysqld]

# Replication
server-id=102 # この数値は適当に
plugin-load=rpl_semi_sync_slave=semisync_slave.so
rpl_semi_sync_slave_enabled=1


pecona-serverの起動(マスター、スレーブともに)

$ sudo /etc/init.d/mysql start


準同期レプリケーション作成


マスター側操作

レプリケーション専用アカウントを作成、更新をロック、バイナリログ進行位置を取得する。

レプリケーション専用アカウント名はここでは repuser 、パスワードを repuserpassword123 、接続許可ホストを 192.* とする。

# mysql -u root -p

GRANT REPLICATION SLAVE ON *.* TO `repuser`@'192.%' IDENTIFIED BY 'repuserpassword123';

FLUSH PRIVILEGES;
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS\G; -- 'File'と'Position'を記録しておく
-- このコンソールはこのままにしておく(*exitしない*)

マスター側の全てのテーブルをdumpしてスレーブにscpする。

$ mysqldump -u root -p --events --all-databases > all_db_dump.sql

$ scp all_db_dump.sql ユーザ名@スレーブ側のIP:


スレーブ側操作

マスターからscpされたall_db_dump.sqlを食わせる。

$ mysql -u root -p < all_db_dump.sql

マスター情報を設定する。binログファイル名はマスター側操作でおこなったSHOW MASTER STATUS;で表示された File の値、 ログファイルのポジションPosition の値を指定する。

# mysql -u root -p

CHANGE MASTER TO  

MASTER_HOST = 'マスター側のIP',
MASTER_USER = 'repuser',
MASTER_PASSWORD = 'repuserpassword123' ,
MASTER_PORT = 3306,
MASTER_LOG_FILE = 'binログファイル名' , -- 'File'
MASTER_LOG_POS = ログファイルのポジション; -- 'Posistion'

レプリケーションを開始する。

START SLAVE;

SHOW SLAVE STATUS\G;
-- 以下の状況になっていればOK
-- Slave_IO_Running: Yes
-- Slave_SQL_Running: Yes


マスター側操作

SHOW MASTER STATUS\G を行ったコンソールで更新のロックを解除する。

UNLOCK TABLES;

FLUSH PRIVILEGES;


SSDに最適化された(と言われている)Percona-Serverを知るためのリソースとか

http://blog.father.gedow.net/category/hardware/iodrive/

http://ijin.github.io/blog/2015/03/27/serverfesta-2015-spring/

http://www.slideshare.net/ttkzw/svfes2

http://www.slideshare.net/GedowFather/welcome-to-iodrive-world

http://yakst.com/ja/posts/61


ioDriveを使ううえで考慮すべき(なのか?)ポイント


  • I/Oのスレッドとか

innodb_read_io_threads=いくつにする?

innodb_write_io_threads=いくつにする?
innodb_adaptive_flushing_method=keep_average
innodb_adaptive_flushing=true