バックアップ計画
バックアップを行う際には、そのタイミングや頻度など、運用上考慮すべき点が幾つかある
二つの指標
- RPO(Recovery Point Objective)
- 目標復旧時点、データの損失が許容される時間
- RTO(Recovery Time Objective)
- 目標復旧時間、業務停止が許容される時間
考える事
- When
- バックアップを行うタイミング(毎日、毎週...)
- Where
- バックアップ先(ハードディスク、磁気テープ..,)
- Who
- バックアップを行うユーザ権限(一般ユーザ、root...)
- What
- バックアップの対象データ(ファイル、ディレクトリ...)
- Why
- バックアップの理由
- How
- バックアップの方法(ツール、手順、リカバリ方法)
- How log
- バックアップの保存期間(3日、半年...)
対象のデータ
-
バックアップ対象とすべきデータ
- 二度と同じものを作成できないデータ
-
バックアップの対象外としてもよいデータ
- 一時データ、再作成可能なデータ、バージョン管理しているデータ
バックアップの種類
- フルバックアップ
- すべてのデータをコピーする方法
- 時間はかかるが、リストアは容易
- 差分バックアップ
- 前回フルバックアップを取ってから、変更分のみをコピーする方法
- リストアするためには、フルバックアップの内容に戻してから 最新の差分バックアップのみ を戻す
- 増分バックアップ
- 前回バックアップを取ってからの変更分のみを保存する方法
-リストアするためには、フルバックアップの内容に戻してから 古いものから順に増分バックアップ分 を戻す
- 前回バックアップを取ってからの変更分のみを保存する方法
差分バックアップと増分バックアップの違い
差分バックアップは、はじめに行うフルバックアップからの変更分を毎回バックアップとして残す。
一方、増分バックアップでは、はじめにフルバックアップを行うところまでは差分バックアップと同じだが、前回のバックアップからの変更点のみをバックアップとして残す。つまり、両者とも変更点をバックアップとして残すが、どこからの変更点なのかがことなる。差分バックアップは初回のフルバックアップからの変更点。増分バックアップは、前回のバックアップからの変更点。
代表的なバックアップツール
- データバックアップ
- tar
- tsync
- cpio
- dumprestore
- システムバックアップ
- dd
- Mondo Rescure
サーバ向けバックアップソフト
- HP Data Protector software
- Tivoli Strage Manager Family
- NetVault Backup
AWS でのバックアップ
スナップショット
ディスクを S3 にまるまるバックアップできる機能で、EBS や RDS などで使用することができる。
S3 の耐久性は 99.999999999% だが、オペミスなどでデータが消えてしまう可能性がある。
S3 のバージョニング機能を使うと簡単にオペミスでのデータ消失を防ぐことができる。
バックアップ時の静止点
バックアップ取得中にバックアップ対象データが変更されてしまうとバックアップデータに不整合が起きてしまう。
安全にバックアップを取るためには、理想的にはバックアップ取得中にはシステムを停止する必要がある。
ただ、そうすると可用性が低下してしまう。
- オンプレミス
- サービスを停止してバックアップ
- SLA で約束すれば可用性の問題はない
- xfs_freeze でディスクへの書き込みを停止させる
- LVM(Logical Volume Manager) のスナップショット機能を利用する
- サービスを停止せずに静止点を作ることが可能
- MySQL の InnoDB などの single-transaction オプション
- サービスを停止してバックアップ
- クラウド
- クラウドでも静止点が必要なのは同様・オンプレミスと同様
- オンラインのままスナップショットを取得することも可能
- 失敗する確率は「稀にある」くらいい
クラウドでのスナップショットの活用
従来はバックアップ用途でスナップショットをとっていたが、AWS などのクラウドでは、スナップショット機能の柔軟性が高く、バックアップのみならず、ディスクの容量拡張などにも利用される。つまり、現在のインスタンスのスナップショットをとり、そのスナップショットを使ってより大きなディスク容量を持つインスタンスを作成するなどが可能。また、スナップショットを使ってリージョンをまたいでどういつインスタンスを立てることも可能なので、コールドスタンバイ構成が簡単に実現可能。
LVM
LVM を使うことで、複数の物理ボリュームをまとめて論理的なボリュームグループを作成し、それを論理的なボリュームに分割することができる(パーティショニング)。例えば、500GB のハードディスク二つを繋いでいる場合、800GB と 200GB のパーティションを作成することができる。
LVM のスナップショット機能
- バックアップ機能ではなく、あくまで静止点を作るスナップショット機能
- ある時点以降のディスクへの書き込みをスナップショット領域に退避することで静止点とする
- スナップショット領域に書き込まれているデータがある場合はそちらを参照し、ない場合はもとのディスク領域をみることで、その静止点の時点でのデータを復元可能