« 田口さん(@百式)、赤松さん(@サイドフィード)ウノウに訪問オフィス | メイン | マルチウィンドウ環境をよくするソフトウェアたち »

LVM + XFSで高速簡単 MySQLバックアップ
このエントリーをはてなブックマークに追加 このエントリーをlivedoorクリップに追加

こんにちは satoです。

Slaveサーバを運用している場合、MySQLのバックアップファイルが
必要になる場面は少ないです。

しかし、プログラムのバグなどで、データベースレコードの内容が
おかしくなってしまい、収集がつかなくり、巻き戻しをする場合などに
バックアップファイルがあると、とても便利です。

ということで、LVMのスナップショット機能でMySQLの
バックアップにチャレンジしてみました。

■前提条件
パーティションはこのような感じです
-----------------------
sda1 boot
-----------------------
sda2 xfs(linuxが入っている)
-----------------------
sda3 ここに作る
-----------------------

■構築時

fdisk /dev/sda
n #新しくパーティションを作成
3 #作成するパーティション番号
enter #パーティションのスタート位置(デフォルト値)
enter #パーティションの終了位置(デフォルト値)
t #パーティションのタイプを変更
3 #変更するパーティション番号
8e #Linux-LVMを選択
w #書き込み & 終了

pvcreate /dev/hda3 #物理ボリュームを作成
vgcreate vg1 /dev/hda3 #ボリュームグループを作成.
lvcreate -L 20G -n lv1 vg1 #論理ボリュームを作成
mkfs.xfs /dev/vg1/lv1 #xfsで初期化
mount /dev/vg1/lv1 /var/lib/mysql #マウント
(起動時にマウントはfstabとかに書き込む)


■バックアップ作成時



hotbackup.sh
-------------------
yes | lvremove -f /dev/vg1/lv1_snap #スナップショットを削除
sync #discにフラッシュ
sync
mysql -u username < hotbackup.sql(*1) #スナップショットを取る
mount -o ro,nouuid /dev/vg1/lv1_snap /mnt/snap #スナップショットマウント
nice cp /mnt/snap /misc/他サーバ/backups #コピー
umount /mnt/snap #スナップショットアンマウント
yes | lvremove -f /dev/vg1/lv1_snap #スナップショットを削除

hotbackup.sql
-------------------
FLUSH TABLES WITH READ LOCK; #テーブルロック
#system xfs_freeze -f /var/lib/mysql(*2) #書き込みを停止
system lvcreate -s -L 10g -n lv1_snap /dev/vg1/lv1 #スナップショット作成
#system xfs_freeze -u /var/lib/mysql #書き込み再開
UNLOCK TABLES; #テーブルアンロック
exit

hotbackup.sh を cronとかに登録

(*1)
パスワードは引数で渡さずにホームディレクトリ内にある .my.cnf
などに書いておくようにする
http://dev.mysql.com/doc/refman/4.1/ja/connecting.html

(*2)
xfs_freeze をしてスナップショットをしたいのですが
なぜか応答が無くなってしまう。
http://marc.theaimsgroup.com/?l=linux-lvm&m=111014382900031&w=2
ということらしい。
これでデータが壊れないかは要検証
10回ほど実験してみましたが、壊れていなかったです。

もうちょっといろいろ試してみて、問題なさそうでしたら、
小さなプロジェクトから実運用してみたいと思います。

参考サイト
http://www.linux.or.jp/JF/JFdocs/LVM-HOWTO.html
http://www.h7.dion.ne.jp/~matsu/feature/uzumi/admin_memo/lvm_xfs.html
http://pantora.net/pages/linux/lvm

トラックバック

このエントリーのトラックバックURL:
http://www.unoh.net/mt32/mt-tb.cgi/319

コメント

xfsのスナップショット→LVMのスナップショット修正しました。
指摘してくださってありがとうございます。

コメントを投稿


画像の中に見える文字を入力してください。