Oracle Databaseのスマートな開発/運用の鉄則
第1回 「エクスポートでOracleのバックアップの誤解」
データベースのバックアップ/リカバリの重要性は、エンジニアの皆さんには十分にご理解いただいていると思う。しかし、実際にその運用方法を見てみると、リスクを含んだ運用が行われているケースが意外に多いという。今回は、Oracle Database開発/運用の鉄則の第1回として、バックアップ/リカバリにおける注意点とオラクルからの提案をご説明する(編集部)。
日本オラクル
産業営業統括本部
オラクルダイレクト
テクニカルサービスグループ
プリンシパルセールスコンサルタント
宇多津真彦
「バックアップ/リカバリはこの運用で大丈夫だろうという少しの油断が、大きなトラブルの原因。場合によっては取り返しのつかない事態を招くことがあります」と、宇多津氏はバックアップ/リカバリに潜むリスクを説明する。
どのようなケースにリスクが潜むのか。宇多津氏は2つの例を挙げる。1つはエクスポートをバックアップに使用しているケース。もう1つはOSのコマンドやバックアップソフトを使用しているケースだ。いずれも、バックアップ/リカバリの運用策として現場ではよく見かける手法だ。
それぞれ何が問題となるのか。エクスポートはコマンドラインやOracle Databaseに付属している運用管理ツールであるEnterprise Managerから容易に実行できるため、非常に手軽だ。しかし、エクスポートは本来データベースを物理的にバックアップするための機能ではない。あくまでデータ移動や、開発時に一時的にデータのみをバックアップする目的でコールド・バックアップの補助のために利用するのが本来的な使い方だ。
エクスポートで取得したデータは、エクスポートを実行した時点のデータしか含まれないため、障害が発生した場合には、エクスポートを取得した時点の状態までしかリカバリできない。エクスポート後から障害発生の間までの変更データは、不足データを手入力するなどの非現実的な手法でリカバリするしかない。データ量によっては復元不可能なケースもあるのだ。
さらに、エクスポートでは、Oracle Databaseのすべての情報が取得されるわけではない。例えばSYSTEM表領域のオブジェクトはエクスポートされないため、Oracle Databaseが完全に障害を受けた場合、データベースの作成からやり直さなくてはならないリスクもあるという。
次に、OSのコピーコマンドやバックアップソフトを用いているケースはどうか。Oracle Databaseを停止させバックアップを取得する、コールド・バックアップを行っている現場は非常に多いはずだ。一貫性バックアップのひとつの方法ではあるが、注意点も多いという。
まず、データベースを正常に停止しなければならないので、そのタイミングを見計らうのが難しい。伝票入力のみならず、オンラインショッピングなどを運用する企業では、データベースの停止機会を作るのは大変だ。「ただいまメンテナンス中につき......」といったたぐいのメッセージをネット上のサービスで見ることがあるが、これでは大きな機会損失となる。コールド・バックアップは、今後できれば避けたい方法だという。
また、OSのコマンドやバックアップツールを使ったコールド・バックアップでは、バックアップで利用するスクリプトの日々のメンテナンスやバックアップデータのバージョン管理が重要だ。これが守られていないために、リカバリ時に多くのトラブルが発生している。誤って古い世代のバックアップをリストアしてしまうことでなんどもリカバリを行う羽目になり業務の再開が大幅に遅れたり、最悪の場合には取得できているはずのバックアップが取得できておらず、データを完全に回復できないことも散見されるという。
■理想的なバックアップ/リカバリ手法は用意されている
課題の多いバックアップ/リカバリの運用だが。宇多津氏は「Oracle Databaseは、バックアップ/リカバリの最適な方法を提供しています」と説明する。その解決法は、(1)リカバリマネージャ(以降RMAN)を使う方法、(2)アーカイブログ・モードで運用しオンライン・バックアップを取得するの2点だ。
「意外にオンライン・バックアップでの運用は少ない」(宇多津氏)。それはおそらく「お客様においては、Oracle7などの、以前からのオラクルの運用方法がノウハウとして蓄積されています。そのことも大きいのでは。また、RMANのような高度なツールは、内部の動きがわかりにくいことが不安要素となってしまっているのではと、考えています」(宇多津氏)。
しかし、RMANはOracle8から数えてすでに10数年のノウハウが蓄積されてきている。技術的にも枯れて、非常に信頼性が高く、扱いも容易なツールにブラッシュアップされているという。
■リカバリマネージャ(RMAN)を使ってほしい
リカバリマネージャ(RMAN)は、非常に豊富な機能をもっている。加えて、コマンドは非常に簡単。あらかじめOracle Databaseに保持している設定を利用するので、小難しい設定を事前に行うことなく使える。必要があればバックアップ・データの暗号化やリカバリ時の復号化なども行ってくれる、非常に高度な機能を保持している。
RMANのメリットについて宇多津氏は説明する。「アーカイブログ・モードでの運用はメリットが非常に大きいのですが、メンテナンスせずにほうっておくと、アーカイブログが格納先のディスク領域からあふれてOracle Database自身が処理を停止させることがあります。このような場合でも、古く不要なアーカイブログを定期的に削除する機能があるので安心です。また、RMAN自身もOracle Databaseのバージョンが上がる毎により使いやすい機能が増えています。例えばOracle Database 11gからはリカバリ・アドバイザ機能を提供しており、障害時に必要となるリカバリ手順をアドバイスするといった機能を利用できます」。
このように、RMANを使うと多くのメリットがある。さらにRMANはOracle Enterprise Managerから利用できる。推奨されるバックアップ方法の中からユーザーの利用環境に適したバックアップ方法を選択し、ウィザード形式で扱うことが可能だ。
宇多津氏はRMANのメリットについてリカバリの観点からも言及する。「RMANを使うと、Oracleデータ・ブロックの単位でバックアップも容易にできます。Oracleデータ・ブロックはOracle Databaseの最小のI/O単位。更新されているブロックのみを保存できるので、バックアップストレージの領域を多くとりません。一方のリカバリでは、変更差分のOracleデータ・ブロックのみをリカバリすることができます。ファイルを全部入れ替えるとなると大仕事ですが、壊れているところのみブロックレベルでリカバリできます。壊れていないところは通常通りアクセスすることができるので業務停止を最小限にすることができるのです」。
ここまで便利なRMANだが、なぜあまり使われていないのか。「ドキュメントがマニュアルにしかなく情報が少ないという点があるかもしれません。RMANは、Oracle Enterprise Managerからウィザードで使える非常に簡単なツールになっているので簡単に試すことができます。また、RMANコマンドの使い方もバージョンが上がるごとに変わってきています。従来はRunコマンドを使わないと行けないケースが多く、難しい側面もありましたが、現在ではコマンドが簡素化されていて、わかりやすくなりました」(宇多津氏)。
さらにRMANはOracle Enterprise Managerから簡単に使えるだけでなく、市販のバックアップツールにアドオンするかたちで使用することもできる。主要なバックアップツールのほとんどがオプションとして対応しているという。
「RMANの使い方はOTNで詳しく説明しています」(宇多津氏)。たとえばOTNオンデマンドでは下記のセミナーを実施している。
(「カテゴリ検索」で「Database 基礎」をクリック)
また、難しいという印象を払拭いただくために、Oracle Enterprise ManagerからRMANを使ってバックアップを行うデモを見てみよう。
画像をクリックすると別ページで画像の再生が始まります。
■今後アーカイブログモードは必須です
冒頭でも述べたが、いまの時代サーバは常に稼働状態で運用する。「バックアップのためだけにデータベースをいちど止めてコールド・バックアップを行うというのは、いまの時代にそぐわない運用でしょう。データベースを動かし続けながら、業務も続けながら、バックアップを取っていくのが、これからのバックアップのあり方です。そして、当然ながら、オンライン・バックアップでは、アーカイブログ・モードは必須となります。昔からの印象で、アーカイブログを運用で管理するのは大変!という印象をお持ちの方が実は多いのではと感じています。しかし、いまは違います。保全方針の策定とその運用も、じつはRMANの設定で対処できるのです」(宇多津氏)。
これも冒頭で少し触れたが、大量にデータが更新されるようになったら、アーカイブ・ログのためのディスク領域をどうするのか? という問題。たしかに昔は深刻な問題であり、アーカイブログ・モードでの運用は管理が大変だった。しかしいまの時代、ディスクを10Gbyteほしいといっても、NGと言われることはないだろう。「前述したように、ログ領域の管理もRMANまかせにできます。保全方針の決定もRMANに頼って実施できます」(宇多津氏)。
オンライン・バックアップを、アーカイブログのディスク領域を気にすることなくかつ、複雑なコマンドを使うことなく、枯れた技術であるRMANで運用できる。選択しない理由はないだろう。
バックアップ/リカバリに関するOracle Databaseの情報は、オラクルのサイトから入手できるので参考にしてほしい。
今さら聞けない!?バックアップ・リカバリ入門-
実践バックアップ・リカバリ - 一歩進んだRMANの使い方 -
(第2回に続く)
