マルチ AZ 配置の TempDB 設定
データベースミラーリング (DBM) または Always On Availability Groups (AG) を使用して、RDS for SQL Server DB インスタンスがマルチ AZ 配置にある場合、tempdb
データベースの使用については、以下の考慮事項に留意してください。
プライマリ DB インスタンスからセカンダリ DB インスタンスに tempdb
データをレプリケートすることはできません。セカンダリ DB インスタンスにフェイルオーバーすると、そのセカンダリ DB インスタンスの tempdb
は空になります。
プライマリ DB インスタンスからセカンダリ DB インスタンスに、ファイルのサイズ設定や自動拡張設定などの tempdb
データベースオプションの設定を同期できます。tempDB
設定の同期は、すべての RDS for SQL Server バージョンでサポートされています。次のストアドプロシージャを使用して、tempdb
設定の自動同期を有効にできます。
EXECUTE msdb.dbo.rds_set_system_database_sync_objects @object_types = 'TempDbFile';
重要
rds_set_system_database_sync_objects
ストアドプロシージャを使用する前に、セカンダリ DB インスタンスではなく、プライマリ DB インスタンスで希望の tempdb
設定を行ってください。セカンダリ DB インスタンスで設定を変更した場合、自動同期を有効にすると、希望の tempdb
設定が削除される可能性があります。
次の関数を使用して、tempdb
設定の自動同期が有効になっているかどうかを確認できます。
SELECT * from msdb.dbo.rds_fn_get_system_database_sync_objects();
tempdb
設定の自動同期が有効な場合、object_class
フィールドに戻り値があります。無効なときには、値は返されません。
次の関数を使用して、オブジェクトが UTC 時間で最後に同期された時刻を調べることができます。
SELECT * from msdb.dbo.rds_fn_server_object_last_sync_time();
例えば、tempdb
設定を 01:00 に変更してから rds_fn_server_object_last_sync_time
関数を実行した場合、last_sync_time
として返される値は 01:00 より後であり、自動同期が発生したことを示します。
SQL Server Agent ジョブレプリケーションも使用している場合は、 @object_type
パラメータで指定することで、SQL Agent ジョブと tempdb
設定の両方のレプリケーションを有効にできます。
EXECUTE msdb.dbo.rds_set_system_database_sync_objects @object_types = 'SQLAgentJob,TempDbFile';
SQL Server Agent ジョブのレプリケーションの詳細については、「SQL Server エージェントジョブレプリケーションをオンにする」を参照してください。
rds_set_system_database_sync_objects
ストアドプロシージャを使用して tempdb
設定変更が自動的に同期されるようにする代わりに、次のいずれかの手動方法を使用できます。
注記
rds_set_system_database_sync_objects
ストアドプロシージャを使用して tempdb
設定の自動同期を有効にすることをお勧めます。自動同期を使用すると、tempdb
設定を変更するたびにこれらの手動タスクを実行する必要がなくなります。
-
まず DB インスタンスを変更してマルチ AZ を無効にします。次に tempdb を変更し、最後にマルチ AZ を再度有効にします。この方法に伴うダウンタイムはありません。
詳細については、「Amazon RDS DB インスタンスを変更する」を参照してください。
-
まず元のプライマリインスタンスで
tempdb
を変更します。次に手動でフェイルオーバーし、最後に新しいプライマリインスタンスでtempdb
を変更します。このメソッドではダウンタイムが生じます。詳しくは、「 DB インスタンスの再起動」を参照してください。