システムは構築して終わりではなく、障害発生時に復旧する方法もしっかり押さえておく必要があります。システムを構成するさまざまなサービスの中でも、データベースはあらゆる情報を格納するシステムであり重要なサービスです。
本記事では、Oracle Databaseを例に、データベースのバックアップの基本について解説します。
バックアップの目的
基本的にシステムで扱うデータはデータベースに保存しますが、さまざまな要因でデータを損失してしまうケースがあります。例えば、以下が挙げられます。
・ディスクに障害が発生し、保存していたデータが損失する
・ユーザーが誤ってデータを削除してしまう
・外部からの攻撃を受け、データが破壊される
このような事態に備え、システム構築時点で、障害時の対策としてバックアップおよびリストアのテストは必ず行っておきましょう。それにより、迅速に失われたデータを障害発生直前まで復旧し、サービスを再開させることができます。
コールドバックアップ(一貫性バックアップ)
データベースのバックアップは、取得方法や取得する対象データによっていくつかの種類に分かれます。以降では、バックアップの種類について紹介します。
最も基本となるバックアップが、コールドバックアップです。コールドバックアップはデータベースを停止し、データファイル全体のそのままバックアップします。
データベースが停止しておりバックアップ中にデータが更新されることがないため、データの一貫性が取れた形でバックアップを取得できます。このことから、一貫性バックアップとも呼ばれます。
ホットバックアップ(非一貫性バックアップ)
ホットバックアップは、データベースが稼働している状態のまま取得するバックアップです。
データベースを停止する必要がないため、サービス提供を続けることができますが、バックアップ中にデータが更新される可能性があるため、データの整合性が保証されません。このことから、非一貫性バックアップとも呼ばれます。
コールドバックアップとホットバックアップどちらを選択するかは、システムの運用要件によって変わります。システムを停止できる時間があり、時間内にデータ全体のバックアップが取れる場合はコールドバックアップ、24時間365日稼働が必要なシステムでは、ホットバックアップが選択される、というようなイメージです。
バックアップ取得対象
バックアップはさらに、取得する対象データの観点でさらにいくつかの方法があります。
フルバックアップ
フルバックアップはデータベースに格納されているデータ全体を対象とするバックアップです。増分バックアップのベースとなるため、必ず取得しておく必要があります。フルバックアップだけでも復旧は可能ですが、複数回フルバックアップを取得するとそれだけディスク容量を必要とするため、フルバックアップと増分バックアップを組み合わせる方法が一般的です。
差分増分バックアップ
差分増分バックアップは、前回バックアップ取得時点から更新されたデータだけバックアップを取得する方法です。データ全体を取得するフルバックアップよりもデータ量を少なくすむという利点があります。
ただし差分増分バックアップだけでは復旧することはできず、ベースとなるフルバックアップおよび復旧時点までの全ての差分増分バックアップと組み合わせることで復旧が可能です。
累積増分バックアップ
累積増分バックアップは、前回フルバックアップ取得時点から更新されたデータのバックアップを取得する方法です。
差分増分バックアップとの違いとしては、フルバックアップ取得時点以降すべてがバックアップ取得対象となるため、復旧時はフルバックアップと最新の累積増分バックアップの2つあれば復旧が可能である点です。ただし累積であるため、1回のバックアップ取得するデータ量は差分増分バックアップと比べて多くなります。
増分更新バックアップ
増分更新バックアップは、増分バックアップの取得とフルバックアップの適用の2つの操作を行う方法です。
増分バックアップ(このとき差分更新・累積増分どちらでもかまいません)を取得後そのままフルバックアップに適用されるため、リストア時はフルバックアップからのリストア1回で済みます。
※リストア…バックアップからデータを戻す作業をリストアと呼びます。
まとめ
本記事では、データベースのバックアップの基本について解説しました。
障害が発生しデータが損失するとサービスの提供が困難になり、致命的な損失を被ることになります。そうならないためにも、障害復旧要件をしっかり決めておき、システム構築時点でデータのバックアップおよび復旧方法の手順の確立・テストを必ず行っておきましょう。
- カテゴリ:
- 【DB入門】RDBMS全般
- キーワード:
- データベース