自分用のメモなので説明など端折って完全に手順のみです。
準備
パッケージのインストール(マスター、スレーブともに)
$ 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を知るためのリソースとか
ioDriveを使ううえで考慮すべき(なのか?)ポイント
- I/Oのスレッドとか
innodb_read_io_threads=いくつにする?
innodb_write_io_threads=いくつにする?
innodb_adaptive_flushing_method=keep_average
innodb_adaptive_flushing=true
- numa方面
- binlogのdisk flush