こんにちは、今日は久々に鳥よしの出番です。
(ブログ書くのが嫌で雲隠れしているわけではありません。)
今日はMySQL5.5系でレプリケーションしたときのメモを書いていこうと思います。
あれ? JMeterの話は? と思う方もいるかもしれません。
(前回までの記事)
パフォーマンス計測用のJavaアプリ「JMeter」で負荷テストをしてみる。その1
パフォーマンス計測用のJavaアプリ「JMeter」で負荷テストをしてみる。その2
いや、いないと思います。
なので一気に本題に入ります。(えっ)
この話はマスター用とスレーブ用のMySQLが用意されており、
マスターからエクスポートされたダンプデータがスレーブにインポートされている前提で進めます。
【マスター側】
1.現在のステータスを確認
mysqlにログインし、以下のコマンドでbin-logのファイル名とPositionを確認
SHOW MASTER STATUS;
2.my.cnfの設定
my.cnfの[mysqld]セクションで以下を設定
log-bin
server-id=<スレーブより小さな一意の数値>
設定後、mysql再起動
3.アカウントの作成
mysqlにログインし、以下のようなGRANT文を実行
GRANT REPLICATION SLAVE ON *.* TO '<pre>[code]'@'[xxx.xx.% 等接続を許可するアドレス(スレーブのアドレス)]' IDENTIFIED BY '[パスワード]';
【スレーブ側】
1.my.cnfの設定
my.cnfの[mysqld]セクションで以下を設定
log-bin
server-id=<マスターより大きな一意の数値>
******* 寄り道
5.5以前はmy.cnfで以下の設定を行っていましたが、5.5からはCHANGE MASTER TOで指定するようになりました。
master-host=[xxx.xx.xx.xxx マスターのアドレス] master-port=[ポート番号] master-user=master-password=[パスワード]</pre> <p style="padding-left: 30px">あと、僕の場合はレプリケーションしたくないテーブルがあったのと、<br /> バイナリログのローテーションサイズを自身で指定したかったため、以下の設定を追記しました。</p> <p style="padding-left: 30px">(レプリケーションしたくないテーブルを複数指定する場合はこんな感じで)</p> <pre>[code] replicate-ignore-table=[DB名].[レプリケーションしたくないテーブル名1] replicate-ignore-table=[DB名].[レプリケーションしたくないテーブル名2] max_binlog_size = 400M
*******
設定後、mysql再起動
2.レプリケーションの開始
mysqlにログインし、以下のようなコマンドでマスターを指定。
CHANGE MASTER TO MASTER_HOST='[xxx.xx.xx.xxx マスターのアドレス]', MASTER_USER='<pre>[code]', MASTER_PASSWORD='[パスワード]', MASTER_LOG_FILE='[マスター側で確認したbin-logのファイル名]', MASTER_LOG_POS=[マスター側で確認したPosition];
以下のコマンドでレプリケーションを開始する。
START SLAVE;
3.レプリケーションが正常に行われているかの確認
mysqlにログインし、以下のコマンドでステータスを確認する。
SHOW SLAVE STATUSG
何回か実行して、Slave_IO_RunningとSlave_SQL_Runningがyesになっていて
エラーが出ていないことと、場合によってはポジションが進んでいることを確認します。
以上で簡単なレプリケーションが行えます。
LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。