|
データベースに限らず、ソフトウェアの運用で一番肝心なことは、『バックアップ!』です。『形あるものは、いつか壊れる』という格言は、コンピュータのソフトウェアに対して一番よく当てはまるかもしれません。
コンピュータのOSやプログラムが壊れるのであれば、製品のCD-ROMから再インストールすることができます。しかしファイルサーバーのドキュメントやデータベースのデータが壊れたときは、バックアップから復元する方法しかありません。もしバックアップを忘れていたら・・・。考えただけでも恐ろしいですね。
管理者たるもの、朝目覚めたら
バックアップ!バックアップ!バックアップ!
と3度唱えてから、今日1日を始めましょう。

SQL ServerやMSDEで運用しているデータベースのバックアップの基本は、『全体バックアップ』です。
現在運用しているデータベースのデータとトランザクションログの内容をすべてバックアップします。
Transact-SQLの構文で説明すれば
BACKUP DATABASE データベース名TO 書き込み先デバイス名
という書式になります。なお必要に応じて、WITH句によるバックアップオプションを指定することもあります。指定されたデータベースの全体バックアップを指定された書き込み先デバイスに作成します。
データベースのバックアップを実行するときは、セキュリティ権限が調査されます。バックアップ操作を実施できるセキュリティ要件は複数ありますが、基本的には、データベースサーバー管理者(System Administratorサーバーロールに所属する方。saログインなど)が、データベースのバックアップを行いましょう。
BACKUP DATABASE SAMPLE TO SAMPLE_BAK
という命令は、SAMPLEデータベースの全体バックアップの内容を、SAMPLE_BAKという名前のバックアップデバイスに書き込みます。
書き込みは、追記形式となります。追記形式とは、バックアップデバイスに存在する既存のバックアップの内容を破棄せず、後ろへ後ろへとバックアップの内容を作成する形式です。一番先頭が、バックアップセット番号1となります。次が2番になります。

第1回目の図1の中に、データベースの復旧モデルが表示されております。
Transact-SQL文では、
SELECT DATABASEPROPERTYEX(‘データベース名’, ‘RECOVERY’)
の命令で、データベースの復旧モデルが表示されます。
また、復旧モデルを変更するときは、
ALTER DATABASE データベース名
SET RECOVERY モデル名
の構文を使います。モデル名には、FULL, BULK_LOGGED,SIMPLEを選択します。
このデータベースの復旧モデルは、データベースのバックアップや復旧に密接に関連する項目なので、しっかりと理解する必要があります。
3.1 フルモード(FULL)
フルモードは、SQL Server 2000で作成されたデータベースの既定のオプションです。フルモードのことを、完全モードと呼ぶこともあります。
データベースに対する更新系などの命令を実行したときは、トランザクションログファイルの中にその実行された命令の詳細情報がすべて残らず記録されます。
SQL Server 7の旧バージョンでは、トランザクションログファイルの中に記録されない命令という特殊な命令がありました。しかしSQL Server 2000 のフルモードでは、このような命令もすべてログファイルの中に記録されます。特にSELECT INTO/BULKCOPYという、新しいテーブルにレコードをコピーする命令を実行するときは、挿入されるレコードのすべての情報が記録され、トランザクションログファイルが膨大に膨れ上がることがありますので、十分に注意してください。
データベースの運用では、できる限りフルモードで運用してください。但しトランザクションログ管理ができない場合は、シンプルモードにします。
3.2 一括ログ記録モード(BULK_LOGGED)
SQL Server 7の旧バージョンに存在したログに記録されない命令を実行しなければ、この運用モードはフルモードと変わりません。
決定的な違いは、これらの命令を実行した場合です。フルモードでは、詳細にログを記録するのに対して、一括ログ記録モードでは、概略程度にログ記録を制限します。この概略程度では、データベースの復元で使用するには不完全な状態です。そこでこの不完全さを補うために、トランザクションログのバックアップを実行したときにデータファイルの内容を参照して、復元操作時に必要なデータをログファイルのバックアップの中に記録します。ここで重要なことは、トランザクションログファイルのバックアップを実行しているにも関わらず、データファイルの内容が参照されるということにあります。
データベースが壊れたときに最初に実行する命令は、トランザクションログファイルのバックアップ命令です。しかし一括ログ記録モードでデータベースを運用し、しかもSELECT INTO/BULKCOPY命令などを実行していたら、データファイルの参照が行われます。そのときデータファイルの内容が読めないときは、このトランザクションログファイルのバックアップ命令は失敗します。データベースが壊れた状態でのトランザクションログのバックアップ命令ですから、おそらく、データファイルが壊れていてその読み込みはできないと思われます。ですから、トランザクションログのバックアップ命令は失敗する可能性が高いです。
このような理由から、一括ログ記録モードの復旧モデルは、出来る限り避けてください。
3.3 シンプルモード(SIMPLE)
MSDE 2000で作成されたデータベースの運用モードの初期値は、このシンプルモードに設定されます。「ログの切捨て」運用モードとも言われます。
データベースシステムが定期的に、トランザクションログファイルの内容を切り捨てて上書き消去していきますので、トランザクションログ管理作業が不要になる、お手軽な運用モードです。その代償として、トランザクションログファイルの継続的な記録の保存が行われず、データベースが壊れたときは過去の全体バックアップを実施したときに復元され、多少のデータ損失が発生します。
例えばお昼に全体バックアップを実施し、夕方4時にデータベースが壊れたら、お昼の状態に復元します。お昼から夕方4時まで入力されたデータは、損失します。
このデータ損失を避けたいのであれば、フルモードにしなければいけません。

データベースの運用モードが「シンプル」のときは、全体バックアップを実行したときに復元されます。
またフルモードでデータベースが壊れたときは、壊れる直近に実施した全体バックアップを使ってデータベースの復元操作を開始します。そのため復元操作時間を短縮するためには、データベースが壊れた時間を基準に、出来る限り過去に逆のぼらずに、全体バックアップを実行しているのが理想です。
このように、復元操作では、全体バックアップが基準となりますので、頻繁に全体バックアップを実行することが大事です。
全体バックアップを実行しているときの
- マシンの負荷
- データベースアプリケーションに与える負荷
- 全体バックアップに要する時間
などを調べておきましょう。
SQL Server 2000では、オンラインバックアップ機能が提供されます。これはクライアント側データベースアプリケーションの使用状況に関係なく、データベースのバックアップを実施することができます。バックアップをしたいときに、いつでも、バックアップ命令を実行することができます。
ただ現実的には、バックアップ実行中はマシン負荷が高くなり、クライアント側アプリケーションのパフォーマンスが低下したりします。そこでオンラインバックアップを実行するときの、マシン負荷やクライアント側に与える影響を事前に調査しておく必要があります。
またバックアップに要する時間も見積もります。特にテープメディアなどに記録するときは、注意してください。大きなデータベースの場合は、数十分や数時間かかることがあります。テープへの書き込みが終わらないうちに次のバックアップ命令が入らないようにしましょう。
これらの基本事項を考慮しながら、バックアップ計画が立案されます。
クライアント側に与える影響が少ないと判断できるときは、完全バックアップを頻繁に実行しましょう。1時間間隔でバックアップをしたり、極端ですが30分間隔にしたりと、とにかく、バックアップ!バックアップ!バックアップ!です。

図1のように、Enterprise Managerの管理のバックアップの部分で、バックアップデバイスを定義します。
 |
| 図1:バックアップデバイスを作成する |
図2のように、バックアップデバイスの名前と、実際の物理ファイルとの対応を定義します。
 |
| 図2:バックアップデバイス名と物理ファイルの対応 |
このようにバックアップデバイスを定義すると、
BACKUP DATABASE SAMPLE TO SAMPLE_BAK
の命令は、SAMPLEデータベースの全体バックアップをSAMPLE_BAKバックアップデバイスに作成しますが、実際は、図2で定義された物理ファイルの中に記録されます。
バックアップデバイスの中に、どのようなバックアップが記録されているのかを調べることができます。図2の内容表示ボタンを押してください。
バックアップデバイスの中にバックアップが記録されているときは、図3のように、その中身が表示されます。
 |
| 図3:バックアップデバイスの中に記録されたバックアップの内容表示 |

バックアップ命令を実行するときに、いくつかのオプションを指定することがあります。オプションは、WITH句で指定します。
INITオプションを付けてバックアップ命令を実行すると、
BACKUP DATABASE SAMPLE TO SAMPLE_BAK
WITH INIT
バックアップデバイスに記録されている内容を全部消去してからバックアップを記録します。既存の内容を破棄したいときや、常に先頭にバックアップの内容を記録したいときなどに使うオプションです。
DESCRIPTION オプションは、バックアップセットに説明書き付けます。
BACKUP DATABASE SAMPLE TO SAMPLE_BAK
WITH DESCRIPTION = ‘このバックアップ命令に関する注釈文を表す’
何かコメントを付けたいときは、このオプションを利用してください。
NAMEオプションは、このバックアップセットに名前を付けます。
BACKUP DATABASE SAMPLE TO SAMPLE_BAK
WITH NAME = ‘2004-08-23 001’
を実行すると、バックアップセットには、2004-08-23 001 という名前が付けられます。

バックアップデバイスを作成せずに、直接物理ファイルを指定してバックアップを実行することができます。
BACKUP DATABASE SAMPLE
TO DISK =’D:\BACKUP\SAMPLE.BAK’
のように、
TO DISK=’書き込み先ファイルパス名’
の書式に従って、書き込み先物理ファイルを定義して下さい。

図4のように、Enterprise Managerを使ってデータベースのバックアップを行うことができます。タスクメニューの中のバックアップです。
 |
| 図4:データベースのバックアップメニュー |
図5の追加ボタンを押して、図6のようにバックアップデバイスを選択します。
 |
| 図5:バックアップ先を定義する |
 |
| 図6:バックアップデバイスを選択する |
図7のように、バックアップ先を定義したらOKボタンを押して、バックアップを実行してください。
 |
| 図7:OKボタンを押してバックアップの実行 |
第2回の学習のまとめ
| (1) |
管理者は常にバックアップを心掛ける |
| (2) |
全体バックアップ命令が基本となる |
| (3) |
データベースの復旧モデルの種類を理解する |
| (4) |
バックアップデバイスの作成に慣れる |
| (5) |
バックアップオプションについて覚える |
| (6) |
物理ファイルを直接指定した書式を覚える |
| (7) |
Enterprise Manager上からのバックアップ操作を覚える |
|

|