このページは、以下の英語ページの抄訳です。最新の情報については、英語ページを参照してください。

 

 

(この記事では英語版のSQL Anywhere が使用されていますが、SQL Anywhere は日本語にローカライズされています。)

 

 

コンテンツ

 

 

 

はじめに

 

データベースバックアップとリカバリープランは、システムやメディアの問題からのデータのロスを防ぐために常に重要です。SAP SQL Anywhere (SQLA) データベース管理者は、ネットワークシェアや他のディスクにデータベースバックアップを格納するだけでなく、ストアドプロシージャーを使用して、例えば Amazon S3 などのどのクラウドストレージサービスにもバックアップをコピーできます。これにより、クラウドコンピューティングの戦略の一環として自動バックアップを作成することができます。

このドキュメントでは、Amazon S3 にバックアップデータベースを格納するためのSQL Anywhere ストアドプロシージャーの作成と実行方法について説明します。このストアドプロシージャーは、データベースのバックアップをAmazon S3 にコピーできる外部関数をデータベースサーバーが実行できる SQL Anywhere の外部環境ランタイムの優位性を活用します。この外部関数は、Java やPHP などその他のプログラミング言語を使用して関数を書くことも可能ですが、ここでは Amazon Web Services (AWS) Software Development Kit (SDK) for .NET を使用します。

 

事前に用意するもの

 

  1. SAP SQL Anywhere – こちらをクリックして、無償のDeveloper Edition をダウンロードしてください。
  2. .NET SDK for Amazon Web Services
  3. AWS .NET アセンブリを作成するためのVisual Studio

 

この文書で説明するプロセスは、Windows x64 上で稼働する SQL Anywhere 16 を使用してテストしていますが、もちろんそれ以降のSQL Anywhere のバージョンや、その他のOS にも適用可能です。

 

 

 

C# アセンブリ

 

最初のステップでは、 .NET 関数のためのアセンブリを作成します。この関数は、全てのファイルをAmazon S3 の特定のバケットのディレクトリにアップロードし、サブディレクトリにファイルを展開します。

 

  1. Visual Studio を開いて、新しい C# Class ライブラリを作成します。参考として、Amazon Web Services アセンブリ “AWSSDK.dll” を追加します。以下のコードを入力して、”YOUR-AWS-ACCESS-KEY” と “YOUR-AWS-SECRET-ACCESS-KEY” を、実際の AWS access key とsecret key と入れ替えます。
    1. using Amazon;
    2. using Amazon.S3;
    3. using Amazon.S3.Model;
    4. using Amazon.S3.Transfer;
    5. namespace AWSProject
    6. {
    7.     class Program
    8.     {
    9.           public static void UploadDirectory(string directoryPath, string bucketName, string prefix)
    10.           {
    11.                 string awsAccessKeyId = “YOUR-AWS-ACCESS-KEY”;
    12.                 string awsSecretAccessKey = “YOUR-AWS-SECRET-ACCESS-KEY”;
    13.                 TransferUtility transferUtility = new TransferUtility(awsAccessKeyId, awsSecretAccessKey, Amazon.RegionEndpoint.USEast1);
    14.                 string bucketPath = bucketName + “/” + prefix;
    15.                 transferUtility.UploadDirectory(directoryPath, bucketPath);
    16.           }
    17.     }
    18. }
  2. クラスライブラリをビルドします。
  3. “AWSSDK.dll” とSQL Anywhere バイナリフォルダー (デフォルトは %SQLANY16%\Bin32 です) に今コンパイルしたライブラリの両方を移動します。

これで、コンピューターからS3 バケットにファイルをコピーするシンプルな.NET アセンブリができました。

 

 

 

CLR ストアドプロシージャーを作成する

 

SQL Anywhere は、Common Language Runtime (CLR) ストアドプロシージャーと関数をサポートしています。CLR ストアドプロシージャーは、 .NET プログラミング言語でコードを書き、通常の SQL ストアドプロシージャーで動かすことが可能です。お客様の.NET アセンブリに含まれる全てのリファレンスは、お客様のパスまたは、Global Assenbly Cash (GAC) のどちらかにある必要があります。

 

SQL Anywhere における CLR 外部環境の詳細情報については、SQL Anywhere のマニュアルを参照してください。

 

  1. Sybase Central (Start > SQL Anywhere 16 > Administration Tools > Sybase Central をクリックします) を立ち上げます。 「Sybase Central (64-bit)」 ではなく、「Sybase Central」 が間違いなく立ち上がっていることを確認してください。
  2. View メニューからをFoldersクリックして、「Folders」 ビューに移ります。
  3. 「SQL Anywhere 16」 上で右クリックして、ポップアップメニューから Connect を選択します。
  4. Connect のダイアログが表示されます。
    • 「Connect with an ODBC Data Source」 のアクションを選択します。
    • データソース名として 「SQL Anywhere 16 Demo」をタイプし、Connect をクリックします。このサンプルデータベースのバックアップを行っていきますが、お好きなデータベースを使用するが可能です。
    • /wp-content/uploads/2015/03/02_connect_to_database_info_660198.png
  5. Sybase Central がサンプルデータベースに接続されました。Folders ビューで、demo database 上で右クリックして、Open Interactive SQL を選択します。
  6. Interactive SQL ウィンドウが表示されます。以下のSQL コードを入力します。
    1. CREATE PROCEDURE clr_backup_directory_AWS(
    2.   IN directoryPath LONG VARCHAR,
    3.   IN bucketName LONG VARCHAR,
    4.   IN bucketPrefix LONG VARCHAR
    5. )
    6. EXTERNAL NAME ‘AWSProject.dll::AWSProject.Program.UploadDirectory(string, string, string)’
    7. LANGUAGE CLR;

  7. ツールバーの Execute アイコンをクリックして、プロシージャーを作成します。

 

これで、Amazon S3 バケットにディレクトリ内の全ファイルをアップロードする CLR ストアドプロシージャーができました。このプロシージャーは、3つのパラメーターをとります。

(1) あなたのマシンでバックアップされたデータベースの場所

(2) バックアップを格納する S3 内のバケット名

(3) バックアップファイルがコピーされる S3 バケットないのフォルダー名

 

 

 

メンテナンスプランを作成する

 

これで、あなたの SQL コードないのCLR ストアドプロシージャーを使用することができます。EVENT 文内で呼びだすことも可能ですし、以下に説明するメンテナンスプランを使用することも可能です。

  1. 必ず (先のセクションにあるように) SQL Anywhere 16 Demo データベースに接続していることを確認してください。
  2. Folders ビューで、”Maintenance Plans” 上で右クリックをして、ポップアップメニューから New > Maintenance Plan を選択してください。
  3. Create Maintenance Plan Wizard が表示されます。メンテナンスプランを「backup_to_aws」 と名付けます。ボックスは2つ選択しないように気を付けてください。 Next をクリックして続けます。
  4. 最初のバックアップのスタート日を特定します (例. Wednesday at 9:00 AM)。 Next をクリックして続けます。
  5. 「Run the maintenance plan on the following」 をチェックして、「Days of the week」を選択します。Sunday を選択して、毎週日曜日にメンテナンスプランを実行するようにスケジュールします ( もちろん好きな日を選択してかまいません)。Next を選択して続けます。
  6. データベースをバックアップする前に検証するのも良いことです。
    • 「Include a validation of the database in this maintenance plan」をチェックします。
    • 「Validate database pages」をチェックします。
    • 「Full Check」を選択して、Next をクリックして続けます。
  7. データベースのフルバックアップを実行します。
    • 「Include a backup of the database in this maintenance plan」をチェックします。
    • 「Back up to disk」を選択します。
    • 「Full image backup」を選択します。
    • バックアップデータベースとログを保存するディレクトリを特定します。Next をクリックして続けます。
  8. オプションで、毎回メンテナンスプランを実行する際にバックアップデータベースを検証するスクリプトを追加することも可能です。このデモの目的では、データベースの検証はしませんが、バックアップが有効であることを確認することは重要です。Next をクリックして続けます。
  9. 毎回メンテナンスプランを実行した結果を保存することにします。
    • Save only the last 5 reports を選択します。
    • 「Report the maintenance plan status to the server’s console」をチェックして、Next をクリックして続けます。
  10. ここでは、メンテナンスプランが実行された時にレポートをメールで送信しませんが、送信されたい場合もあると思います。Click Finish をクリックして、Maintenance Plan Wizard を閉じます。
  11. Folders View で、Event を展開して、backup_to_aws_event を選択します。
  12. Backup セクションを検索して (“// Backup” でスタートします) 以下のようにスクリプトを修正します。CLR ストアドプロシージャーをどのようにコールしているかみてください。
    1. // Backup
    2. UPDATE dbo.maint_plan_status SET “status” = ‘BACKUP’ WHERE plan_id = @PLAN_ID;
    3. SET @MSG = ‘Backup started on ‘ || CURRENT DATE || ‘ at ‘ || CURRENT TIME || ;
    4. SET @REPORT = @REPORT || @MSG || ‘\n’;
    5. MESSAGE @MSG;
    6. BEGIN
    7. DECLARE @FOLDERNAME LONG VARCHAR;
    8.   SET @FOLDERNAME = ‘D:\\SQL Anywhere Demos\\BackupAWS’;
    9.   SET @MSG = ‘Backing up to image: ‘ || @FOLDERNAME || ;
    10.   SET @REPORT = @REPORT || @MSG || ‘\n’;
    11.   MESSAGE @MSG;
    12.   BACKUP DATABASE DIRECTORY @FOLDERNAME
    13.   WAIT BEFORE START;
    14.   // Upload the Backup to Amazon S3
    15.   CALL clr_backup_directory_aws(@FOLDERNAME, ‘sqla-backuptest’, ‘backup’);
    16. END;
    17. SET @MSG = ‘Backup finished on ‘ || CURRENT DATE || ‘ at ‘ || CURRENT TIME || ;
    18. SET @REPORT = @REPORT || @MSG || ‘\n’;
    19. MESSAGE @MSG;

  13. ツールバー上でSave アイコンをクリックして、イベントに対する変更を保存します。デモデータベースのフルバックアップを実行して、AWSへアップロードするメンテナンスプランができました。

 

 

 

まとめ および 追加リソースについて

 

メディアが壊れた時のためにも、しっかりとしたバックアッププランを準備しておくことが重要です。SAP SQL Anywhere は、イベントやストアドプロシージャーを作成するツールを提供し、データベースの検証やバックアップとリカバリーを実行することができます。メンテナンスプランは、データベースのバックアップとバックアップのクラウドへのアップロードのスケジュールをシンプルにすることができます。期待どおりに実行されるかどうか確認するためにも、バックアップとリカバリプランをテストするのを忘れないようにしてください。

 

追加リソース:

 

 

 

 

 

===

 

SAP SQL Anywhere に関する詳細情報は、SAP SQL Anywhere Communityページ<英語> を参照してください。

 

上記のコミュニティーに掲載されている技術情報は、順次SQL Anywhere 日本語コミュニティに掲載しています。

SQL Anywhere の日本語記事をリスト形式で表示するには、「sql anywhere japan」のタグをクリックしてください。

 

SQL Anywhere に関してはまずはこちらをご参照ください。無期限でご利用いただける無償の Developers Edition もこちらからダウンロードが可能です。

 

SQL Anywhere に関して技術的な質問のある方はコミュニティに登録し、
「+ Actions」から「Ask a Question」機能をご利用ください。

Language には「Japanese」、
Primary Tag には「SQL Anywhere」、
Additional tag には「SAP SQL Anywhere」、
User Tagに「sql anywhere japanese question」

を選択してください。

不具合につきましては、サポート契約者様専用の問い合わせ方法にてお問い合わせください。

 

======================

ご購入に関するお問い合わせ

 

こちらよりお問い合わせください。

To report this post you need to login first.

Be the first to leave a comment

You must be Logged on to comment or reply to a post.

Leave a Reply