yuu_nkjm blog
2011-08-09(Tue) [長年日記]
[LVM][Linux] LVMのスナップショットを使ったデータの整合性を考慮した同期バックアップ
データの整合性を考慮した同期バックアップ
データベースのデータの様な大きなデータ群をバックアップするとき,単にコピーをするだけでは,コピー中にバックアップ対象の状態が変わってしまい,データ群の整合性がなくなってしまうことがある.
このケースで,LVMのスナップショット機能が役に立ちそうだった.@IT:LVMによる自動バックアップ・システムの構築(2/3)を読んで,自分が理解した内容をメモする.
LVMのスナップショット
LVMのスナップショット機能を使うことで,スナップショットを作成した時のデータへのアクセスポイントを作ることができる.LVMのスナップショットは,その時のデータを格納するというよりは,データへのポインタとスナップショット作成後に変更されたデータの元データを格納することで,スナップショットを作成した時の全データへのアクセスを可能とする.
イメージとしては,(1)全ファイルへのポインタのコピーが作成される,(2)そのポインタが指し示すデータに変更が加えられるときは,その元データをスナップショット領域にコピーし,ポインタの指し先をスナップショット領域にコピーされたデータに向ける,ということをする.
LVMのスナップショットを使ったバックアップ手順
具体的なバックアップ手順としては,以下を想定している.こうすればうまく行くのでは?というだけで,未検証.
- 整合性を取りたいデータを所持するサービス(例: mysql)に停止を依頼する.
/etc/init.d/mysqld stop
- スナップショットを取得する.スナップショットの作成には,同一(?)ボリュームグループ内に空いている論理ボリューム(LV)が必要になる.スナップショットを破棄するまでに,snapshotがあふれるとsnapshotが無効になる.スナップショットを使ったバックアップ中にスナップショット領域があふれないような量を割り当てる.
lvcreate --snapshot --size=30G --name snap0 /dev/volgrp0/lv0
- スナップショットを取得すれば,サービスを動かしはじめてよいので,サービスを再起動する.
/etc/init.d/mysqld start
- スナップショットを使って,どこかのデバイスにバックアップを取る.作成したスナップショットは通常のデバイスと同様に扱えるので,そのままdumpしてもいいし,マウントして,cp -aするなりpdumpfsするなりすれば良いとおもう.
mount -t auto /dev/volgrp0/snap0 /mnt/snap0 cp -a /mnt/snap0 /backup/
- 使い終わったスナップショットを破棄する.
lvremove /dev/volgrp0/lv0 --force
参考ページ
- https://www.google.co.jp/ ×114
- https://www.google.com/ ×6
- https://www.google.co.jp/ ×2
- http://hootsuite.com/dashboard ×1
- http://www.askapache.com/ ×1
- http://ja.android.luna.tv/android/Search.aspx?q=lv... ×1
- https://www.google.com/search ×1
- lvm スナップショット ×7 / LVM スナップショット ×5 / lvm snapshot ×4 / スナップショット 整合性 ×3 / LVM バックアップ 整合性 ×3 / lvm スナップショット バックアップ ×3 / lvm スナップショット kvm バックアップ ×3 / KVM スナップショット バックアップ ×2 / LVM スナップショット 整合性 ×2 / スナップショット バックアップ ×2 / lvm スナップショット sync ×2 / LVM スナップショット バックアップ ×1 / スナップショット データ ×1 / LVM Linux スナップショット バックアップ対象 ×1 / linux LVM スナップショット ×1 / "LVMスナップショットとは" ×1 / LVM・スナップショット ×1 / SQLite ×1 / Linux LVM バックアップ ×1 / スナップショット データベース 整合性 ×1 / LVM windows ×1 / LMVスナップショット リブート ×1 / kvm*lvm*バックアップ ×1 / kvm lvm snapshot ×1 / LVM スナップショット sync ×1 / lvm 整合性 チェック ×1 / lvm 確認 スナップショット kvm ×1 / kvm スナップショット バックアップ ×1 / centos lvmスナップショット 機能停止 ×1 / ipad データ バックアップ snapshot ×1 / LVM スナップショット 複製 ×1 / mysql cp バックアップ 整合 ×1 / lvm スナップショット 整合性 ×1 / UNIX スナップショット 整合性 ×1 / KVM LVM バックアップ ×1 / kvm lvm そのまま ×1 / Linux スナップショット ×1 / linux lvm snapshot 整合性 ×1 / LVM スナップショット スクリプト ×1 / lvcreate -s スナップショット ×1 / python binding lvm snapshot ×1 / LVMスナップショット 理解 ×1 / お名前.com SnapShot バックアップ ×1 / snapshot 更新 あふれた ×1 / lvm snapshotのsnapshot ×1 / lvm snapshot バックアップ ×1 / LVM スナップショット 同期 ×1 / lvm アプリケーション 整合性 ×1 / サン スナップショット ×1 / kvm lvm dump ×1 / lvm スナップショット rsync ×1 / LVM スナップショット領域 ×1 / lvm snapshot backup ×1 / snapshot データ ×1 / Java Google カレンダー バックアップ ×1 / LVM 同期 ×1 / kvm バックアップ スナップショット ×1 / linux lvm snapshot ×1 / lvm スナップショット dump 自動化 ×1 / lvm linux バックアップ イメージ ×1 / linux LVM スナップショット dump ×1 / LVM データ アクセス 関数 C言語 ×1 / KVM バックアップ snapshot ×1