このチュートリアルでは、Microsoft SQL Server 2022 データベースを Cloud Storage バケットに直接バックアップし、後で復元する方法について説明します。SQL Server 2022 で導入された SQL Server バックアップ ネイティブ機能は、クラウドベースの障害復旧とデータ移行のためのシームレスで費用対効果の高い戦略を提供します。
SQL Server バックアップのネイティブ機能は、Cloud Storage などの S3 互換オブジェクト ストレージをサポートする BACKUP TO URL
コマンドと RESTORE FROM URL
コマンドを利用します。これにより、中間ローカル ストレージが不要になり、バックアップ ワークフローが簡素化され、運用上のオーバーヘッドが削減されます。
このチュートリアルは、データベース管理者とエンジニアを対象としています。
目標
このチュートリアルでは、目標を達成するために次のタスクを行う方法について説明します。- Cloud Storage バケットを新規作成する
- SQL Server コネクタを構成する
- データベースをバックアップする
- バックアップからデータベースを復元する
料金
このドキュメントでは、課金対象である次の Google Cloudコンポーネントを使用します。
料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。
このドキュメントに記載されているタスクの完了後、作成したリソースを削除すると、それ以上の請求は発生しません。詳細については、クリーンアップをご覧ください。
始める前に
このチュートリアルでは Google Cloud プロジェクトが必要です。新しいプロジェクトを作成することも、すでに作成済みのプロジェクトを選択することもできます。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, activate Cloud Shell.
Microsoft SQL Server 2022 以降がインストールされ、実行されていることを確認します。
Google Cloud プロジェクトと SQL Server の両方に、バックアップと復元のタスクを実行するために必要な権限があることを確認します。
アクセスキーに関連付けられているユーザーまたはサービス アカウントに、Cloud Storage バケットでオブジェクトを作成して表示する権限があることを確認します。
バックアップの実行に使用する SQL Server ユーザー アカウントに、データベースのバックアップとログのバックアップの権限があることを確認します。
Google Cloud プロジェクトを選択します。
gcloud config set project PROJECT_ID
バケットを作成します。バケットを作成するには、次のように
gcloud storage buckets create
コマンドを実行します。gcloud storage buckets create gs://BUCKET_NAME --location=BUCKET_LOCATION
次のように置き換えます。
BUCKET_NAME
: バケットの一意の名前。BUCKET_LOCATION
: バケットのロケーション。Google Cloud コンソールで Cloud Storage の設定に移動します。
[相互運用性] タブを選択します。
[ユーザー アカウントのアクセスキー] で、[キーを作成] をクリックします。
生成されたアクセスキーとシークレットを安全に保存します。メモした値は、次のステップで使用します。
CREDENTIAL_NAME
: 認証情報の名前。ACCESS_KEY
: 前のセクションで作成したアクセスキー。SECRET
: 前のセクションで作成したシークレット。CREDENTIAL_NAME
: 手順 3 で作成した認証情報の名前。例:sql_backup_credentials
BUCKET_NAME
: 手順 1 で作成したバケットの名前。FOLDER_NAME
: バックアップ ファイルを保存するフォルダの名前。BACKUP_FILE_NAME
: バックアップ ファイルの名前。FORMAT
: 既存のバックアップ ファイルを上書きして、新しいメディアセットを作成します。STATS
: バックアップの進行状況を報告します。COMPRESSION
: バックアップを圧縮します。これにより、ファイルサイズとアップロード時間を短縮できます。MAXTRANSFERSIZE
: 大きなバックアップ ファイルで I/O エラーが発生しないようにすることをおすすめします。- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
- Google Cloud に関するリファレンス アーキテクチャ、図、ベスト プラクティスを確認する。Cloud アーキテクチャ センターをご覧ください。
Cloud Storage バケットを作成する
Google Cloud コンソールまたは
gcloud storage
コマンドを使用して、Cloud Storage バケットを作成できます。gcloud storage
コマンドを使用して Cloud Storage バケットを作成するには、次の手順を行います。S3 相互運用性を構成してアクセスキーを作成する
SQL Server が S3 プロトコルを使用して Cloud Storage と通信できるようにするには、次の手順で相互運用性を有効にしてアクセスキーを生成する必要があります。
本番環境では、セキュリティと管理を強化するために、サービス アカウントのハッシュベースのメッセージ認証コード(HMAC)キーを使用することをおすすめします。
SQL Server に認証情報を追加する
SQL Server が Cloud Storage バケットで認証できるようにするには、SQL Server 内に認証情報オブジェクトを作成して、Cloud Storage のアクセスキーとシークレットを保存する必要があります。これを行うには、SQL Server Management Studio(SSMS)で次の T-SQL コマンドを実行します。
CREATE CREDENTIAL CREDENTIAL_NAME WITH IDENTITY = 'S3 Access Key', SECRET = 'ACCESS_KEY:SECRET';
次のように置き換えます。
IDENTITY = 'S3 Access Key'
は、新しい S3 コネクタを使用するように SQL Server に指示するため、重要です。シークレットは、アクセスキー、コロン、シークレット キーの順にフォーマットする必要があります。例:
CREATE CREDENTIAL sql_backup_credentials WITH IDENTITY = 'S3 Access Key', SECRET = 'GOOGGE3SVF7OQE5JRMLQ7KWB:b31Pl8Tx1ARJfdGOsbgMFQNbk3nPdlT2UCYzs1iC';
Cloud Storage にデータをバックアップする
認証情報が設定されたら、
TO URL
オプションを指定したBACKUP DATABASE
コマンドを使用して、データベースを Cloud Storage バケットに直接バックアップできます。次のように、URL の先頭にs3://storage.googleapis.com
を付けて S3 コネクタを使用します。BACKUP DATABASE DATABASE_NAME TO URL = 's3://storage.googleapis.com/BUCKET_NAME/FOLDER_NAME/BACKUP_FILE_NAME.bak' WITH CREDENTIAL = 'CREDENTIAL_NAME', FORMAT, STATS = 10, MAXTRANSFERSIZE = 10485760, COMPRESSION;
次のように置き換えます。
コマンドで使用されるバックアップ パラメータの説明は次のとおりです。
詳細については、S3 互換オブジェクト ストレージの URL への SQL Server バックアップをご覧ください。
データベースが非常に大きい場合は、バックアップを複数のファイルに分割できます。
BACKUP DATABASE DATABASE_NAME TO URL = 's3://storage.googleapis.com/BUCKET_NAME/FOLDER_NAME/BACKUP_FILE_NAME_0.bak', URL = 's3://storage.googleapis.com/BUCKET_NAME/FOLDER_NAME/BACKUP_FILE_NAME_1.bak' -- ... more files WITH CREDENTIAL = 'CREDENTIAL_NAME', FORMAT, STATS = 10, MAXTRANSFERSIZE = 10485760, COMPRESSION;
Cloud Storage からデータを復元する
RESTORE DATABASE
コマンドを使用すると、Cloud Storage に保存されているバックアップ ファイルからデータベースを直接復元できます。RESTORE DATABASE DATABASE_NAME FROM URL = 's3://storage.googleapis.com/BUCKET_NAME/FOLDER_NAME/BACKUP_FILE_NAME.bak' WITH CREDENTIAL = 'CREDENTIAL_NAME';
次のように置き換えます。
クリーンアップ
このチュートリアルで使用したリソースについて Google Cloud アカウントに課金されないようにするには:
プロジェクトの削除
次のステップ
-