LVMスナップショット
概要
LVM スナップショットを利用したレプリケーション環境構築
マスター
全データベースのロック取得
code:sql
mysql > flush tables with read lock;
マスターのログポジションを取得してメモしておく
code:sql
mysql > show master status;
*************************** 1. row ***************************
File: mysql-bin.000004
Position: 407
Binlog_Do_DB:
Binlog_Ignore_DB:
Executed_Gtid_Set:
1 row in set (0.00 sec)
LVM スナップショット実行
別コンソールから実行(一度抜けると、read lock が外れるため)
code:shell
# lvcreate --snapshot --size 5G --name snap /dev/vg_clone/LogVol01
MySQL のロックを解除
code:sql
mysql > unlock tables;
LVM スナップショットマウント
code:shell
# mkdir /mnt/snap
# mount /dev/vg_clone/snap /mnt/snap
MySQL のデータをスレーブへ移動
code:shell
# rsync --progress -avh --exclude='.log' /mnt/snap/var/lib/mysql 192.168.122.231:/tmp
LVM スナップショットのアンマウント・削除
code:shell
# umount -l /mnt/snap
# lvremove -f /dev/vg_clone/snap
マウント解除を確認
code:shell
# df -h
スレーブ
mysqld 停止
mysqld データディレクトリのバックアップと削除
マスターからのデータを/var/lib 配下へ
所有者が異なる場合には合わせる
mysqld 起動
code:shell
# /etc/rc.d/init.d/mysqld start --skip-slave-start
レプリケーション開始
先程控えたログポジションの情報を記載
code:mysql
mysql> change master to master_host='192.168.122.230', master_port=3306, master_user='repl', master_password='replpass', master_log_file='mysql-bin.000004', master_log_pos=407;
mysql> start slave;
スレーブステータス確認
code:sql
mysql> show slave status \G
(snip)
Slave_IO_Running:Yes
Slave_SQL_Running:Yes