一貫性バックアップ(イッコウセイバックアップ)とは | 意味や読み方など丁寧でわかりやすい用語解説

一貫性バックアップ(イッコウセイバックアップ)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

一貫性バックアップ (イッコウセイバックアップ)

英語表記

consistent backup (コンシステントバックアップ)

用語解説

一貫性バックアップとは、システムやアプリケーションのデータが持つ論理的な整合性を保った状態で取得されるバックアップを指す。これは、バックアップ取得時点において、データが完全に矛盾のない状態であるという保証を意味する。特に、データベースのように複数のデータ要素が関連し合い、頻繁に更新される環境において、その重要性は極めて高い。

通常のバックアップは単にファイルのコピーやディスクイメージの取得を行うが、システムが稼働中にデータを更新している最中にバックアップを取得すると、そのデータは論理的な矛盾を含んでしまう可能性がある。例えば、データベースでは複数のテーブル間で関連するデータを管理しており、あるトランザクション(一連の処理単位)が途中で中断された状態でバックアップを取得すると、関連するデータの一部だけが更新され、残りが更新されないままの状態となる。このようなバックアップからデータを復元しても、アプリケーションは正常に動作せず、データ破損や不整合が発生する可能性が高い。一貫性バックアップは、このような問題を回避し、確実にシステムが復旧できる状態のバックアップを提供することを目的とする。

一貫性バックアップを実現するためには、いくつかの技術的アプローチがある。最も確実な方法は、バックアップ対象のシステムやアプリケーションを一時的に完全に停止させ、データ更新が行われない「静止点」を確保した上でバックアップを取得することである。これにより、データは確実に矛盾のない状態となる。しかし、多くのシステム、特に24時間365日の稼働が求められるサービスにおいては、システム停止は許されない場合が多い。

そこで利用されるのが、システム稼働中に静止点を作り出す技術である。一つは「スナップショット」技術で、これはストレージシステムや仮想化プラットフォームが提供する機能である。スナップショットは、ある瞬間のディスクの論理的な状態を「凍結」させ、その凍結された時点のディスクイメージに対してバックアップを行う。このとき、アプリケーションやオペレーティングシステムは、一瞬だけI/O(入出力)を停止させたり、一時的に書き込みをバッファリングしたりすることで、スナップショット取得時点での一貫性を確保する。例えば、仮想マシンのスナップショットでは、仮想マシンのメモリ状態やディスク状態を一定の時点に保存し、その後も仮想マシンは稼働を続けるが、バックアップはそのスナップショットイメージから行われる。

データベースシステムにおいては、さらに高度な「ホットバックアップ」機能が提供されることが多い。これは、データベースを停止させることなく、一貫性のあるバックアップを取得する機能である。多くの場合、データベースのトランザクションログ(更新履歴を記録するファイル)を活用し、バックアップ取得中に発生した更新データと、バックアップ対象のデータファイルを整合させる仕組みを持つ。例えば、バックアップ対象のデータブロックを取得しながら、その間に発生した更新はトランザクションログに記録され、リストア時にこのログを適用することで、バックアップ取得時点の状態、あるいはそれ以降の最新の状態まで完全に復旧できるようになる。このプロセスには、「チェックポイント」や「ログ先行書き込み(WAL: Write-Ahead Logging)」といったデータベース固有の仕組みが利用される。

一貫性バックアップで取得されるデータは、単なるデータファイル群に留まらない。データベースの場合であれば、データファイルだけでなく、トランザクションログファイル、制御ファイル、設定ファイルなど、データベースを構成する全ての要素が、特定の時点において整合性のある状態として取得される必要がある。仮想環境であれば、仮想ディスクイメージだけでなく、仮想マシンの設定ファイルなども含まれる。これにより、障害発生時にバックアップからシステムを復元した際、データが破損することなく、アプリケーションがすぐに正常に稼働を再開できるという大きなメリットがある。不整合なバックアップから復元した場合、その後のデータ修復作業に多大な時間と労力がかかり、最悪の場合はデータの回復が不可能になることもあるため、一貫性バックアップは現代のITインフラにおいて不可欠な要素となっている。

一貫性バックアップ(イッコウセイバックアップ)とは | 意味や読み方など丁寧でわかりやすい用語解説 | いっしー@Webエンジニア