AWS RDS for SQL Server についてまとめておきます。
制限事項
- 通常のBackup、Restoreはファイルストレージへのアクセスが必要になるため、RDSでは未サポート。
- OSレベルでのアクセスは不可能。(まぁしたくないけど)
- インスタンスのストレージ上限は4TB。
DB個別ではなく、インスタンスすべての合計?? - データベースの最小ストレージサイズは200GB
- RDS for SQL Server のインスタンス作成後にはストレージサイズの変更は不可能。
参考:公式ドキュメント、悲しみのBlog - システム時刻はUTCで、タイムゾーン変更はサポート外。
Multi-Az 配置
アベイラビリティーゾーンとは
まず、Multi-Az の話をする前に、AWS RDSを知らない人は、リージョンとアベイラビリティーゾーン(Availability Zone)を知っておかないと勘違いしてしまう。
公式ドキュメントによると次のような定義となっている。
- リージョン:データセンターの場所をリージョンと呼んでいます。
- アベイラビリティーゾーン(AZ):各リージョンは、アベイラビリティーゾーンまたは AZ と呼ばれる複数の区切られた場所で構成されています。各アベイラビリティーゾーンは、他のアベイラビリティーゾーンにおける障害の影響を受けないように設計されています。また、同じリージョン内の他のゾーンには、低コスト、低レイテンシーでネットワーク接続できるようになっています。
つまり、Multi-Az を見たときに、どこか無意識的にリージョンレプリケーションを想像してしまうが、同一リージョン内に配置することも、当たり前だけど、Multi-Az 配置と呼称される。
Multi-Az 配置とは
次に、Multi-Az 配置とは、RDS(データベースサービス)の可用性を向上させるための、レプリケーションの仕組み、冗長化機能のことである。
RDSは、DB単体としてのマネージドサービスで、バックアップの取得などを実行してくれるが、あくまでも単体サービスなので、メンテナンスや障害時のダウンタイムが発生しうる状況となっている。
Multi-Az 配置にすると、RDS と RDS でレプリケーションされて、データベースが複製されて、障害発生時には自動フェイルオーバーをして切り替えることができて、短時間のダウンタイムで済ませることができる。冗長化機能です。
RDS for SQL Server の Multi-Az 配置について
リージョンとバージョンとエディション
2016年の6月に、Tokyoリージョンにも機能提供が開始した。
用できるバージョン・エディションが次のようになっている。(変動的なので、公式ドキュメントを参照してね)
- SQL Server 2008 R2 Standard / Enterprise
- SQL Server 2012 Standard / Enterprise
ライセンス料金
設定方法などは確認中だが、ミラーリング側にはSQL Serverのライセンス費用は不要っぽい??
公式ドキュメントより:
SQL Server のマルチ AZ 配置(ミラーリング)のセカンダリインスタンスはパッシブであり、フェイルオーバーが発生するまで書き込みを受け取ることも読み取りを提供することもありません。このため、セカンダリインスタンスに対するライセンスは必要ありません。
仕組み
RDS for SQL Server Multi-Az の実装に使用されているのは、SQL Server 標準のミラーリング機能を使用しています。ミラーリング機能は、StandardでもEnterpriseでも使用できる機能です。ミラーリングは、トランザクションログを活用して、データベースの同期を実現する機能です。Multi-Azでは同期ミラーリングで組まれているようです。
仕組み的なものは、ムッシュBlogで分析されているのでそちらを参照
制限事項
SQL Server Agent Jobは同期対象から外れているので、フェイルオーバー時にはどのような対応が必要かは事前に確認しておいた方が良さそうですね。
公式ドキュメントより「これらのジョブは msdb に保存され、このデータベースはミラーリングでレプリケートできないため、セカンダリで再作成する必要があります。」
ユーザー、ログイン、およびアクセス許可は、スタンドバイミラーに自動的にレプリケートされるので安心ですね。(公式ドキュメントより)
クロスリージョンマルチ AZ は、現在サポートされていません。