・リレーログを別の物理ディスクに置いてパフォーマンス向上を期待したい(か、ディスクが一杯で逃がしたい)
等、既にできているレプリケーションスレーブのリレーログの名前と場所を変える方法。MySQL 5.5.10 で実施。
1. スレーブのMySQLを止める。
変更前にMySQLのデータディレクトリを丸ごとバックアップして、危急の場合に備えることをお勧めする。
2. my.cnf の変更
変更箇所は relay-log relay-log-index の2カ所
relay-log=old-name-relay-binなどという感じになっているのを
relay-log-index=old-name-relay-bin
relay-log=/var/mysql/relaylog/new-name-relay-binと変更。フルパス名で、拡張子を取り除いたファイル名を記述する。
relay-log-index=/var/mysql/relaylog/new-name-relay-bin
3. 既存のリレーログを新しい場所へ移動
デフォルトではデータディレクトリにリレーログとリレーログインデックスが置かれているので、これを新しい場所へ移動する。場所だけでなく名前も変える場合は、ファイル名も変更しておく。ファイル名の一括変更は rename コマンドが便利。
# cd ~mysql/var4. リレーログインデックスの内容を変更
# mv old-name-relay-bin.* /var/mysql/relaylog/
# cd /var/mysql/relaylog
# rename old-name new-name old-name-relay-bin.*
リレーログインデックスには、現在のリレーログの一覧が入っている。これを新しい場所と名前に書き換える。
# vi /var/mysql/relaylog/relay-bin.indexこんな内容になっているので、vi で置換して保存。
--
./old-name-relay-bin.000229
./old-name-relay-bin.000230
./old-name-relay-bin.000231
:
(viで置換):%s;./old-name-;/var/mysql/relaylog/new-name-;g5. relay-log.info の内容を変更
--
/var/mysql/relaylog/new-name-relay-bin.000229
/var/mysql/relaylog/new-name-relay-bin.000230
/var/mysql/relaylog/new-name-relay-bin.000231
--
:wq
データディレクトリにある relay-log.info には、スレーブがリレーログの情報を書き込んでいる。ここにもリレーログのパス名が書かれているので、書き換える。
# vi ~mysql/var/relay-log.info6. MySQL を起動。
--
./old-name-relay-bin.000230
369057398
(略)
--
↓
--
/var/mysql/relaylog/new-name-relay-bin.000230
369057398
(略)
SHOW SLAVE STATUS\G でスレーブのステータスを確認してみて、エラーが出ずLogPosが進めばOK。
タグ:MySQL
▼レンタルサーバー・VPS比較表を見る▼