ITエンジニアの成長ブログ

ITエンジニアとして行う勉強の発信&日々の生活で体験した楽しいことをゆるく発信

AWS RDS for SQL Serverのネイティブバックアップの取得方法

今回は、AWS RDS for SQL Serverのネイティブバックアップの取得方法についてお話したいと思います。
実際に実施できる環境が手元にないので、画面キャプチャ等はありませんがポイントを絞って重要そうなところなどをお話していけたらと思います。

個人的な備忘録として記載してますので、少々分かりづらい点があるところはご了承いただければと思います。

はじめに

AWS RDS for SQL Serverのネイティブバックアップとは、通常オンプレミスで取得するようなバックアップをRDSのSQL Serverで取得する方法になります。RDSなので、バックアップファイルの取得方法が変わってくるということみたいです。ちなみに、この方法で取得したバックアップファイルはAmazon S3に保存されます。

インスタンスまるまるのバックアップではなくて、個別のデータベース毎にバックアップを取得したい場合はこの方法を選択する必要があります。
今回はバックアップに絞った内容ですが、もちろん復元も同様にサポートされています。

ネイティブバックアップの制限と推奨事項

制限と推奨事項がたくさんあるので少々大変ですが、もちろんすべて目を通しておいたほうがよさそうです。個人的に、重要そうなものを抜粋しておきます。
docs.aws.amazon.com

  • Amazon RDS DBインスタンスとは異なるAWSリージョンのAmazon S3バケットにバックアップ、復元できない
  • Amazon S3 のサイズ制限は 1 ファイルあたり 5 TB
  • あるタイムゾーンのバックアップファイルを、別のタイムゾーンに復元しないことを強くお勧め
  • メンテンナンスウィンドウや、Amazon RDSがデータベースのスナップショットを作成しているときは、ネイティブバックアップを行うことはできない

ネイティブバックアップを行う上でのセットアップ

ネイティブバックアップを行うには、事前に準備しておくことがいくつかあります。簡単にご紹介します。

バックアップファイルを保存する Amazon S3 バケット

ネイティブバックアップは、Amazon S3に保存する仕様のため、S3バケットを事前に用意します。

バケットにアクセスするための AWS Identity and Access Management (IAM) ロール

RDSからS3にアクセスするために必要なIAMロールを作成します。

DB インスタンスのオプショングループに追加された SQLSERVER_BACKUP_RESTORE オプション

DB インスタンスのオプショングループに SQLSERVER_BACKUP_RESTORE オプションを追加します。オプショングループとは、そのRDSに設定する機能とかを追加したりするときに使います。デフォルトでは、SQLSERVER_BACKUP_RESTORE オプションは付いていないと思いますので、準備が必要です。

ネイティブバックアップ取得方法

それでは、これからは実際にネイティブバックアップを出力するための操作になります。基本は、以下の公式ページを確認すれば大丈夫かなと思います。
docs.aws.amazon.com

以下から重要なコマンドのみ紹介していきたいと思います。

バックアップファイルの圧縮設定

取得するバックアップファイルの圧縮設定をするコマンドです。AWS S3に保存する容量を小さくすることができるので、通常であればこの設定をしておくのが良さそうです。バックアップコマンドを実行する前に実行する必要がありそうです。

-- 圧縮有効化
exec rdsadmin..rds_set_configuration 'S3 backup compression', 'true';
-- 圧縮無効化
exec rdsadmin..rds_set_configuration 'S3 backup compression', 'false';
データベースのバックアップ

データベースのバックアップコマンドの構文は以下の通りです。

exec msdb.dbo.rds_backup_database
	@source_db_name='database_name', 
	@s3_arn_to_backup_to='arn:aws:s3:::bucket_name/file_name.extension',
	[@kms_master_key_arn='arn:aws:kms:region:account-id:key/key-id'],	
	[@overwrite_s3_backup_file=0|1],
	[@type='DIFFERENTIAL|FULL'],
	[@number_of_files=n];

たとえば、「sampleDB」データベースをフルバックアップしたい場合は以下の通りです。「hoge_bucketバケットに「sampleDB_202109091800.bak」という名前でフルバックアップファイルが作成されます。
細かい内容は、先ほどのページをご参照いただければと思います。

exec msdb.dbo.rds_backup_database
	@source_db_name='sampleDB', 
	@s3_arn_to_backup_to='arn:aws:s3:::hoge_bucket/sampleDB_202109091800.bak',
	@overwrite_s3_backup_file=0,
	@type='FULL',
	@number_of_files=1;
バックアップのステータスの確認

データベースのバックアップの実行状況の進捗を以下のコマンドを実行することで確認することができます。不安なときは、このコマンドを実行して確認すると良いと思います。

exec msdb.dbo.rds_task_status;

おわりに

いかがでしたでしょうか。RDSのSQL Serverで行えるバックアップの取得方法について簡単にですが記載してきました。
どのようにバックアップを取得するのかは、個々の現場次第かと思いますが、このネイティブバックアップの取得方法を抑えておくのは良いかもしれません。

最後までお読みいただきありがとうございました。今回はこの辺で失礼いたします。