このページは、以下の英語ページの抄訳です。最新の情報については、
英語ページを参照してください。
画面ショットは英語ページのものをそのまま流用していますが、SQL Anywhere は日本語にローカライズされています。
コンテンツ
はじめに
事前に必要な条件
バックアップの種類
バックアップ戦略
メンテナンスプラン
データベースのフルバックアップメンテナンスプランの作成
インクリメンタルなデータベースバックアップのメンテナンスプランの作成
メンテナンスプランのテストと実行
バックアップからのデータベースのリカバリ
まとめと追加リソースについて
はじめに
SAP BusinessObjects (BOBJ) 3.1 (SP5 以上) または BOBJ 4.1 を使用されている場合、Central Management Server (CMS) と Audit データベース用に、SAP SQL Anywhere (SQLA) 12.0.1 が埋め込まれています。
BOBJ 管理者にとっては、適切なバックアップとリカバリの戦略を設計・実装し、災害時に本番システムが悪影響を受け、最新のバックアップからリストアする以外方法がないような状況になることを避けることが非常に重要です。
BOBJ サーバーのバックアップとリカバリの戦略は、
Administrator's Guide に十分な記載があります。しかしながら、SQL Anywhere CMS と Audit データベースをバックアップするステップの詳細はここには記載されていません。このドキュメントでは、メンテナンスプランを使用してバックアップを自動的にスケジュールどおり実行する方法について解説します。
SQL Anywhere データベースは、サーバーがクラッシュした時に自動リカバリを実行するので、例えば停電、突発的な電源断、ハング後のサーバー再起動などのシチュエーションにデータベースをリカバリする必要はありません。しかしながら、CMS またはAudit データベースファイルが壊れてしまった場合には、リカバリを実行する必要があります。データベースファイルが壊れるということは、一般的には、ファイルシステム(ディスク)が壊れているサインです。
事前に必要な条件
SQL Anywhere データベースの管理ツールであるSybase Central が必要です。
これは、SQL Anywhere のクライアントインストレーションに含まれています。 入手方法については、
こちらをご参照ください。このコンポーネントをBOBJ サーバーにインストールしてください。
このドキュメントで説明するステップは、Windows x64 上で稼働する SAP BusinessObjects 3.1 SP5 でテストしましたが、SQL Anywhere を CMS および Audit データベースとして使用する他の BOBJ のバージョン、また他のOS にも適用できます。
バックアップの種類
実行可能なバックアップには、2種類あります。オフラインのもの (コールド)と、オンラインのもの(ホット) です。
オフラインバックアップを実行するのは、とても簡単です。データベースサービスを含めBOBJ サーバーを完全にシャットダウンして、SQL Anywhere データベースとトランザクションログファイルをバックアップの場所にコピーしてください。
デフォルトでは、これらのファイルは以下の名称で以下の場所におかれています。
- BusinessObjects 3.1
- ロケーション C:\Program Files (x86)\Business Objects\SQLAnyWhere12\bin.
- ファイル名: BOE120.db, BOE120.log, BOE120_AUDIT.db, and BOE120_AUDIT.log.
- BusinessObjects 4.1
- ロケーション C:\Program Files (x86)\SAP Business Objects\sqlanywhere\database.
- ファイル名: BI4_CMS.db, BI4_CMS.log, BI4_Audit.db, and BI4_Audit.log.
オンラインバックアップは、データベースが稼働している時に実行します。そのため、BOBJ システムがオペレーションされている時に実行することができます。
このドキュメントでは、これについて解説します。
バックアップ戦略
プランをテスト・実装する前に、バックアップとリカバリ戦略を明確にしてください。
ここでの戦略は以下とします。
- CMS および Audit データベースのフルオンラインバックアップを1週間に1度、日曜 am 5:00 に実施する。
- インクリメンタルなオンラインバックアップを、毎日 am 6:00 に実施する。
フルバックアップは、データベースとトランザクションログファイルの完全なバックアップを実施します。インクリメンタルなバックアップは、トランザクションログファイルのバックアップのみを実施します。
バックアップの頻度は、本番システムに依存します。バックアップを頻繁に実施すると、災害時に失うデータもより少なくてすみます。このケースでは、フルバックアップは週1回、インクリメンタルなバックアップは1日に1回とします。
SQL Anywhere には、「データベースの検証」のコンセプトがあります。これは、データベースファイルが壊れていないかチェックするプロセスです。ファイルが壊れているかどうかは、データベースサーバーがデータベースの影響を受けた部分にアクセスしようとするまでは検出されないため、データベース検証をフルバックアップを実行する直前に実行することをお奨めします。また、バックアップしたデータベースファイルのインテグリティを検証するにもおすすめします。
メンテナンスプラン
メンテナンスプランとは、データベースサーバーによって自動的に実行される一連のスケジュール化したイベントのことを言います。メンテナンスプランは、ビジュアルな管理ツールであるSybase Central を使用して作成します。毎回メンテナンスプランを実行する時にはレポートが生成されるので、エラーが発生しているかどうか確認することができます。
メンテナンスプランの詳細は、
SQL Anywhere 12.0.1 のマニュアルを参照してください。
データベースのフルバックアップメンテナンスプランの作成
最初のステップは、CMS および Audit データベースのフルバックアップを週1回実施するメンテナンスプランを作成します。
- Sybase Central を起動します。(クリック Start > All Programs > SQL Anywhere 12 > Administration Tools > Sybase Central). Welcome ダイアログが表示された場合は閉じます。
- View メニューから、Folders をクリックして、「Folders」に移動します。
- 「SQL Anywhere 12」 上で右クリックをして、ポップアップメニューから 「Connect」を選択してください。
- Connect ダイアログが表示されます。
- 適切な user ID (boeuser) とpassword を入力して、CMS データベースにログインしてください。
- Action として「Connect with an ODBC Data Source」を選択してください。.
- CMS 「ODBC data source name」 (デフォルトはBOBJ 3.1では「BOE120」) をタイプして「Connect 」をクリックしてください。
- これでSybase Central が CMS データベースに接続されました。Folders ビュー (左のパネル)の「Maintenance Plans」上で右クリックして、ポップアップメニューからNew > Maintenance Plan を選択してください。
- 「Create Maintenance Plan Wizard」が表示されます。ここではメンテナンスプランを「BOE120_CMSFullBackup」とします。チェックボックスがどちらも何もチェックされていないことを確認してください。「Next 」をクリックします。この2つのチェックボックスにチェックが入っていると、データベースサーバーは全ユーザーを切断し、バックアップを実行している時のデータベースへの接続を許可しません。Business Objects の本番環境にはこれが重要です。
- 最初のバックアップのスタート日時を特定します(例えば日曜 am 5:00 )。このスタート日時はインクリメンタルなバックアップ(次のセクションで説明します)を最初に実行する日時よりも早いものである必要があります。「Next 」をクリックします。
- 「Run the maintenance plan on the following」をクリックして、「Days of the week」を選択します。「Sunday」を選択して毎週日曜日にメンテナンスがスケジュールされるようにします。「Next 」をクリックします。
- 先に述べたとおり、バックアップ前にデータベースを検証することを推奨します。
- 「Include a validation of the database in this maintenance plan」をチェックします。
- 「Validate database pages」をクリックします。
- 「Full check」を選択して「Next 」をクリックします。
- このページでは、フルバックアップを実行するようにメンテナンスプランを実施します。
- 「Include a backup of the database in this maintenance plan」をクリックします。
- 「Back up to disk」を選択します。
- 「Full image backup」を選択します。
- バックアップしたデータベースを保存する場所を入力し、「Next 」をクリックします。
- メンテナンスプランの実行前または後にも一連のSQL 文を実行することができます。先に、バックアップしたデータベースが有効であることを確認することを推奨しますが、CMS データベースをバックアップした後に、カスタムSQL スクリプトを実行することによっても可能です。「Run this SQL at the end of the maintenance plan, after the database is backed up」をチェックして、以下のSQL コードをタイプしてください。 (行番号4 は長いので、確実に全てコピーするよう注意してください。)
- BEGIN
- DECLARE @VALIDBK_RETURN_CODE INT;
- DECLARE @VALIDBK_COMMAND LONG VARCHAR;
- SET @VALIDBK_COMMAND = 'dbisql -nogui -c "UID=dba;PWD=sql;ServerName=BOEBackupServer;DBN=BOE120;DBF=' || @BACKUP_FOLDER || '\\BOE120.db;START=C:\\Program Files\\Business Objects (x86)\\SQLAnyWhere12\\bin\\dbeng12.exe" "VALIDATE DATABASE;"';
- @VALIDBK_RETURN_CODE = CALL dbo.xp_cmdshell(@VALIDBK_COMMAND,'no_output');
- IF @VALIDBK_RETURN_CODE <> 0 THEN
- SET @SUCCESS = 0;
- SET @msg = 'dbo.xp_cmdshell() failed: (return code = ' || @VALIDBK_RETURN_CODE || ')';
- MESSAGE @msg;
- END IF;
- END;
BEGIN
DECLARE @VALIDBK_RETURN_CODE INT;
DECLARE @VALIDBK_COMMAND LONG VARCHAR;
SET @VALIDBK_COMMAND = 'dbisql -nogui -c "UID=dba;PWD=sql;ServerName=BOEBackupServer;DBN=BOE120;DBF=' || @BACKUP_FOLDER || '\\BOE120.db;START=C:\\Program Files\\Business Objects (x86)\\SQLAnyWhere12\\bin\\dbeng12.exe" "VALIDATE DATABASE;"';
@VALIDBK_RETURN_CODE = CALL dbo.xp_cmdshell(@VALIDBK_COMMAND,'no_output');
IF @VALIDBK_RETURN_CODE <> 0 THEN
SET @SUCCESS = 0;
SET @MSG = 'dbo.xp_cmdshell() failed: (return code = ' || @VALIDBK_RETURN_CODE || ')';
MESSAGE @MSG;
END IF;
END;
BusinessObject のインストレーションの場所によって、スタートの行は異なります。「Next」をクリックしてください。
- 毎回メンテナンスプランを実行する際に、この結果を保存して(または)e-mail で管理者に送ることができます。
- 最後のレポート5件だけ保存するとします。
- 「Report the maintenance plan status to the server's console」をチェックします。
- 「Email the maintenance plan report」、「Always」をチェックし、受信者の名前をタイプし使用するe-mail のプロトコルを選択します。
- 「Finish」をクリックし、「Create Maintenance Plan Wizard」を終了します。
- Sybase Central に戻ります。「Folders」ビューで、「Events」を展開します。メンテナンスプランにイベント「BOE120_CMSFullBackup_event」が作成されています。特定のディレクトリにバックアップされたデータベースを保存するには、生成された SQL コードを少し編集する必要があります。このイベントをクリックします。
- デフォルトでは、バックアップフォルダは後に続くバックアップと同じものが使用されるため、メンテナンスプランが実行される度に以前のバックアップされたデータベースが上書きされてしまいます。生成されたコードを変更することで、これを防ぐことができます。右のパネルに、このイベントのSQL コードが表示されます。以下を追加してください。
- DECLARE @BACKUP_FOLDER LONG VARCHAR;
DECLARE @BACKUP_FOLDER LONG VARCHAR;
- Backup セクションを確認し(「// Backup」でスタート) 、以下のようにスクリプトを変更します。
- // Backup
- UPDATE dbo.maint_plan_status SET "status" = 'BACKUP' WHERE plan_id = @PLAN_ID;
- SET @msg = 'Backup started on ' || CURRENT DATE || ' at ' || CURRENT TIME || '';
- SET @REPORT = @REPORT || @msg || '\n';
- MESSAGE @msg;
- BEGIN
- DECLARE SUNDAY INTEGER;
- DECLARE FULL_BACKUP_DATE DATE;
- SET SUNDAY = 1;
- SET FULL_BACKUP_DATE = CURRENT DATE - datepart(dw, getdate()) + SUNDAY;
- SET @BACKUP_FOLDER = 'D:\\BOEDBBackup\\FullBackup\\' || FULL_BACKUP_DATE;
- SET @msg = 'Backing up to image: ''' || @BACKUP_FOLDER || '''';
- SET @REPORT = @REPORT || @msg || '\n';
- MESSAGE @msg;
- BACKUP DATABASE DIRECTORY @BACKUP_FOLDER
- WAIT BEFORE START;
- END;
- SET @msg = 'Backup finished on ' || CURRENT DATE || ' at ' || CURRENT TIME || '';
- SET @REPORT = @REPORT || @msg || '\n';
- MESSAGE @msg;
// Backup
UPDATE dbo.maint_plan_status SET "status" = 'BACKUP' WHERE plan_id = @PLAN_ID;
SET @MSG = 'Backup started on ' || CURRENT DATE || ' at ' || CURRENT TIME || '';
SET @REPORT = @REPORT || @MSG || '\n';
MESSAGE @MSG;
BEGIN
DECLARE SUNDAY INTEGER;
DECLARE FULL_BACKUP_DATE DATE;
SET SUNDAY = 1;
SET FULL_BACKUP_DATE = CURRENT DATE - datepart(dw, getdate()) + SUNDAY;
SET @BACKUP_FOLDER = 'D:\\BOEDBBackup\\FullBackup\\' || FULL_BACKUP_DATE;
SET @MSG = 'Backing up to image: ''' || @BACKUP_FOLDER || '''';
SET @REPORT = @REPORT || @MSG || '\n';
MESSAGE @MSG;
BACKUP DATABASE DIRECTORY @BACKUP_FOLDER
WAIT BEFORE START;
END;
SET @MSG = 'Backup finished on ' || CURRENT DATE || ' at ' || CURRENT TIME || '';
SET @REPORT = @REPORT || @MSG || '\n';
MESSAGE @MSG;
- ツールバーの「Save」アイコンをクリックして、イベントの変更を保存します。これでCMS データベースのフルバックアップを実行するメンテナンスプランの作成は完了です。
Audit データベースのメンテナンスプランを作成する場合も、上記と同様のステップを行ってください。また、必ずバックアップディレクトリが異なることを確認してください。 (例 D:\AuditDBBackup\FullBackup)
インクリメンタルなデータベースバックアップのメンテナンスプランの作成
同様のメンテナンスプランを作成することはできますが、ここでは、CMS と Audit データベースのインクリメンタルなバックアップを毎日実行するためのプランを作成します。
- Sybase Central (先のセクションのように)を使用して CMS データベースに接続されていることを確認してください。
- 「Folders」ビュー(左のパネル)の「Maintenance Plans」上で右クリックします。ポップアップメニューから New > Maintenance Plan をから選択します。
- 「Create Maintenance Plan Wizard」が表示されます。 メンテナンスプランの名前を 「BOE120_CMSIncrementalBackup」とします。二つのチェックボックスに何もチェックされていないことを確認してください。「Next 」をクリックします。
- 最初にバックアップを実施するスタート日時を特定します(例:月曜 am 6:00)。「Next 」をクリックします。
- 「Run the maintenance plan on the following」をチェックし、「Days of the week」を選択します。週の7日間全て選択し、「Next」をクリックします。
- インクリメンタルなバックアップでは、データベースを検証する必要はありません。「Next」をクリックします。
- このページでは、インクリメンタルなバックアップを実行するためのメンテナンスプランを作成します。
- 「Include a backup of the database in this maintenance plan」をチェックします。
- 「Backup to disk」を選択します。
- 「Incremental backup (transaction log only)」を選択します。
- バックアップファイルとトランザクションファイルを保存する場所を入力し、「Next」をクリックします。
- メンテナンスプランのスタートや終了時にSQL文を実行する必要はありません。「Next」をクリックします。
- メンテナンスプランを実行する度に結果を保存することにします。
- 最後のレポート7件のみの保存を選択します。
- 「Report the maintenance plan status to the server's console」をチェックします。
- 「Email the maintenance plan report」、「Always}をチェックし、受信者の名前をタイプして使用するe-mail のプロトコルを選択します。
- 「Finish」をクリックして、「Create Maintenance Plan Wizard」を終了します。
- Sybase Centralに戻り、「Events」を展開すると、「BOE120_CMSIncrementalBackup_event」というイベントがメンテナンスプランとして作成されています。フルバックアップのケースと同様、特定のディレクトリに適切に保存されるよう、生成された SQL のコードを少し編集する必要があります。このイベントをクリックします。
- デフォルトでは、バックアップのフォルダとトランザクション名は後に続いて行われるバックアップと同じなため、メンテナンスプランが実行される度にバックアップされたトランザクションファイルが上書きされてしまします。生成されたコードを変更することで、これを防ぐことができます。右パネルにこのイベントのSQL コードが表示されます。バックアップのセクションを確認して("// Backup"でスタート) 、以下のようにスクリプトを変更します。
- // Backup
- UPDATE dbo.maint_plan_status SET "status" = 'BACKUP' WHERE plan_id = @PLAN_ID;
- SET @msg = 'Backup started on ' || CURRENT DATE || ' at ' || CURRENT TIME || '';
- SET @REPORT = @REPORT || @msg || '\n';
- MESSAGE @msg;
- BEGIN
- DECLARE SUNDAY INTEGER;
- DECLARE FULL_BACKUP_DATE DATE;
- DECLARE FOLDER_NAME LONG VARCHAR;
- SET SUNDAY = 1;
- SET FULL_BACKUP_DATE = CURRENT DATE - datepart(dw, getdate()) + SUNDAY;
- SET FOLDER_NAME = 'D:\\BOEDBBackup\\IncrementalBackup\\' || FULL_BACKUP_DATE;
- SET @msg = 'Backing up transaction log to image: ''' || FOLDER_NAME || '''';
- SET @REPORT = @REPORT || @msg || '\n';
- MESSAGE @msg;
- BACKUP DATABASE DIRECTORY FOLDER_NAME
- WAIT BEFORE START TRANSACTION LOG ONLY
- TRANSACTION LOG RENAME MATCH;
- END;
- SET @msg = 'Backup finished on ' || CURRENT DATE || ' at ' || CURRENT TIME || '';
- SET @REPORT = @REPORT || @msg || '\n';
- MESSAGE @msg;
// Backup
UPDATE dbo.maint_plan_status SET "status" = 'BACKUP' WHERE plan_id = @PLAN_ID;
SET @MSG = 'Backup started on ' || CURRENT DATE || ' at ' || CURRENT TIME || '';
SET @REPORT = @REPORT || @MSG || '\n';
MESSAGE @MSG;
BEGIN
DECLARE SUNDAY INTEGER;
DECLARE FULL_BACKUP_DATE DATE;
DECLARE FOLDER_NAME LONG VARCHAR;
SET SUNDAY = 1;
SET FULL_BACKUP_DATE = CURRENT DATE - datepart(dw, getdate()) + SUNDAY;
SET FOLDER_NAME = 'D:\\BOEDBBackup\\IncrementalBackup\\' || FULL_BACKUP_DATE;
SET @MSG = 'Backing up transaction log to image: ''' || FOLDER_NAME || '''';
SET @REPORT = @REPORT || @MSG || '\n';
MESSAGE @MSG;
BACKUP DATABASE DIRECTORY FOLDER_NAME
WAIT BEFORE START TRANSACTION LOG ONLY
TRANSACTION LOG RENAME MATCH;
END;
SET @MSG = 'Backup finished on ' || CURRENT DATE || ' at ' || CURRENT TIME || '';
SET @REPORT = @REPORT || @MSG || '\n';
MESSAGE @MSG;
- ツールバー上の 「Save」アイコンをクリックして、このイベントを保存します。CMS データベースに対して毎日インクリメンタルなバックアップを実行するメンテナンスプランの作成はこれで完了です。
Audit データベースのメンテナンスプランの作成にも同様に上記のステップを行います。また、バックアップのディレクトリが異なることを必ず確認してください。(例 D:\AuditDBBackup\IncrementalBackup)
メンテナンスプランのテストと実行
メンテナンスプランのテストを実行するために、スケジュールした実施時間を待つ必要はありません。Sybase Central で、左パネルの「Maintenance Plans」を展開し、プラン上で右クリックし(例「BOE120_CMSFullBackup」)、ポップアップメニューから「
Run Now 」を選択してください。
メンテナンスプランの実行後、結果(成功または失敗)はデータベースの中に記録され、Sybase Central 内の「Reports」パネルに表示されます。
レポート上で右クリックし、ポップアップメニューから「
Properties」を選択すると詳細を確認できます。
同様に、インクリメンタルなバックアップメンテナンスプランをテストする場合も同じステップで可能です。成功した場合のレポートは以下のようになります。
メンテナンスプランが期待したとおりに実行されているか確認する場合には、この方法を使ってください。
バックアップからのデータベースのリカバリ
CMS および Audit データベースのバックアップを作成するプロセスを解説しました。これらをリカバリにどう使用したら良いでしょうか?
最初にしなければならないことは、バックアップデータベースとトランザクションログを新しい「リカバリ」フォルダーにコピーすることです。必ず、オリジナルのバックアップファイルのままではなく、コピーを作成してください。バックアップはたいへん貴重で、決してダメージを与えたり、失わないようにしましょう !
データベースのフルバックアップからのリカバリは簡単です。
- Central Configuration Manager (CCM) を使用して、Server Intelligence Agent (SIA) をストップします。
- BOBJ データベースサービスをストップします。
- BOBJ システム内で、CMS および Audit データベースとトランザクションログファイルの場所を確認し、それらを消去します(もしあれば)。
- CMS および Audit データベースとトランザクションファイルのバックアップコピーを、BOBJ システム内の適切な場所にコピーします。
- BOBJ データベースサービスをスタートします。
- CCM を使用してSIAをスタートします。
しかしながら、おそらく、最新のデータベースのフルバックアップとインクリメンタルなバックアップの双方を使用してリカバリする必要があることがほとんどだと思われます。
- CMS バックアップデータベースとトランザクションログファイルを、リカバリフォルダにコピー(移動ではなく!) します。ここでは例として、リカバリフォルダは D:\Recovery とします。
- SQL Anywhere ファイルをBOBJ インストレーション(デフォルトでは C:\Program Files (x86)\Business Objects\SQLAnyWhere12\bin)からコピーします。 データベースやトランザクションファイルはコピーしないでください。バックアップを上書きしてしまいます!
リカバリフォルダーは直接 BOBJ 本番サーバーではないところで使用します(何か問題が起こった時のため)。
- コマンドプロンプトを開き、リカバリディレクトリに変更します。以下のコマンドを実行します。dbeng12 -n BOE120_eng BOE120.db -ad D:\Recovery
- SQL Anywhere サーバーのダイアログが表示され、データベースのリカバリが成功したかどうかを示します。
- SIA and BOBJ データベースサービスをストップします。
- BOBJ システムで CMS データベースファイルとトランザクションログファイルの場所を確認し、それらを消去します(もしあれば)。
- リカバリされたデータベースファイル「BOE120.db」とトランザクションログファイル「BOE120.log」を、BOBJ システムの適切な場所にコピーします。
- BOBJ データベースサービスをスタートします。
- CCM を使用して SIA をスタートします。
Audit データベースをリカバリするには、同じステップを行ってください。
まとめと追加リソースについて
ミッションクリティカルな BOBJ システムでは、適切なバックアップとリカバリプランが大切です。CMS および Audit データベースを管理するために、SQL Anywhere はデータベースの検証、バックアップ、リカバリのためのビジュアルなツールを用意しています。バックアップの定義とスケジューリングのシンプル化に、メンテナンスプランをぜひ使用してくだい。また、バックアップとリカバリプランをテストして、確実に期待通りに実行されているか確認することを忘れないでください。
まとめと追加リソースについて
===
SAP SQL Anywhere に関する詳細情報は、<英語> を参照してください。
上記のコミュニティーに掲載されている技術情報は、順次
SQL Anywhere 日本語コミュニティ
に掲載しています。
SQL Anywhere に関してはまずは
こちらをご参照ください。無期限でご利用いただける無償の Developers Edition もこちらからダウンロードが可能です。
SQL Anywhere に関して技術的な質問のある方はコミュニティに登録し、
「Ask a Question」機能をご利用ください。
Language には「Japanese」、
Primary Tag には「SAP SQL Anywhere」を選択
User Tagに「sql anywhere」「sql anywhere Japanese question」
を入力してください。
不具合につきましては、サポート契約者様専用の問い合わせ方法にてお問い合わせください。
======================
ご購入に関するお問い合わせ
こちらよりお問い合わせください。