このトピックでは、ApsaraDB RDS for SQL Server インスタンスのトランザクションログを縮小する方法について説明します。
次の項目に注意してください。
インスタンスの構成やデータの変更など、リスクの高い操作を実行する前に、インスタンスのディザスタリカバリ機能とフォールトトレランス機能を確認して、データのセキュリティを確保することを推奨します。
Elastic Compute Service (ECS) インスタンスや ApsaraDB RDS インスタンスなどのインスタンスの構成やデータを変更する前に、インスタンスのスナップショットを作成するか、バックアップを有効にすることを推奨します。たとえば、RDS インスタンスのログバックアップを有効にできます。
Alibaba Cloud 管理コンソールで機密情報に対する権限を付与した場合、または機密情報を送信した場合は、できるだけ早く機密情報を変更することを推奨します。機密情報には、ユーザー名とパスワードが含まれます。
十分なログストレージ
ログの保存に使用される残りのストレージが十分な場合は、ApsaraDB RDS コンソールでトランザクションログの縮小機能を使用できます。コンソールでこの機能を使用すると、システムは自動的に ログのバックアップとログの縮小操作を実行 し、トランザクションログファイルのサイズを管理および最適化します。
[インスタンス] ページに移動します。上部のナビゲーションバーで、RDS インスタンスが存在するリージョンを選択します。次に、RDS インスタンスを見つけて、インスタンスの ID をクリックします。
左側のナビゲーションウィンドウで、[バックアップと復元] をクリックします。
表示されたページで、[トランザクションログの縮小] をクリックします。表示されるメッセージで、[OK] をクリックします。
重要システムがトランザクションログを縮小すると、システムは自動的にログバックアップを実行してトランザクションログをアーカイブします。これにより、オンプレミスのログが正常に削除される可能性が高くなります。
システムがトランザクションログを縮小する前に、RDS インスタンスのログ再利用のステータスを確認することを推奨します。
ステータスが NOTHING の場合、ログの縮小操作を実行できます。ただし、縮小できるトランザクションログのサイズは、トランザクションログの末尾にある再利用可能な仮想ログファイル (VLF) のサイズによって異なります。末尾の VLF のステータスが、既存のアクティブなトランザクションのために再利用可能と定義できない場合は、別のログバックアップ操作が必要です。システムは、アクティブなトランザクションが完了するまで待機し、ログ再利用のステータスが NOTHING に変わるかどうかを確認します。
ステータスが LOG_BACKUP の場合、ログの縮小操作は実行できますが、既存のアクティブなトランザクションが原因で失敗する可能性があります。この場合、システムはログの縮小操作を複数回実行することがあります。
トランザクションログが縮小された後、インスタンスの [モニタリングとアラート] ページに移動して、ログストレージを表示できます。

不十分なログストレージ
次の操作は緊急時にのみ実行できます。次の操作を実行する前に、RDS インスタンスのストレージ容量を拡張することを推奨します。詳細については、「インスタンスの仕様を変更する」をご参照ください。
データベースのサーバーで「トランザクションログがいっぱいです」というプロンプトが表示された場合、コンソールでトランザクションログを縮小することはできません。この場合、SQL 文を実行して縮小操作を実行する必要があります。トランザクションログの縮小は、一部のログストレージ容量を占有します。したがって、トランザクションログがいっぱいの場合にのみ、ログチェーンを切り捨てて縮小できます。データベースのサーバーで次の SQL 文を実行します。文中の [TestDb] をお使いのデータベース名に置き換えてください。
トランザクションログがいっぱいの場合、縮小のためにログチェーンを切り捨てることしかできません。データベースの復元モードを SIMPLE に変更しないことを推奨します。データベースの復元モードを SIMPLE に変更すると、データベースが属する RDS インスタンスのバックアップチェーンが切断され、バックアップチェーンが切断された時点で実行されるすべての復元タスクが失敗します。緊急時にデータベースの復元モードを SIMPLE に変更し、データベースのログチェーンを切り捨てる必要がある場合は、前述のリスクを理解し、責任を負う必要があります。前述の文を実行した後、表示されるエラーメッセージは無視でき、データベースのログチェーンは切断されます。
たとえば、次の文を実行して、RDS Basic Edition を実行するインスタンスの復元モードを SIMPLE に設定します。
ALTER DATABASE [TestDb] //[TestDb] はデータベース名を指定します。
SET RECOVERY SIMPLEシステムはデータベースの復元モードを SIMPLE に設定できず、復元モードを FULL にリセットします。この場合、データベースのログチェーンは切断されます。システムは次のエラーメッセージを表示します。
Msg 50000, Level 16, State 1, Procedure ******, Line 46
Login User [Test11] can't change database [TestDb] recovery model.
Msg 3609, Level 16, State 2, Line 2
The transaction ended in the trigger. The batch has been aborted.よくある質問
ALTER DATABASE [TestDb] SET RECOVERY SIMPLE 文を実行したときに次のエラーメッセージが返された場合はどうすればよいですか?
Msg 1468, Level 16, State 2, Line 1
The operation cannot be performed on database "zhttestdb" because it is involved in a database mirroring session or an availability group. Some operations are not allowed on a database that is participating in a database mirroring session or in an availability group.
Msg 5069, Level 16, State 1, Line 1
ALTER DATABASE statement failed.ALTER 操作は、High-availability Edition を実行する RDS for SQL Server インスタンスでは許可されていません。これらのインスタンスでの ALTER 操作にはデータベースイメージが関与するためです。ビジネスでこの文を実行する場合は、インスタンスのイメージを無効にし、復元モードを SIMPLE に設定します。
インスタンスイメージの無効化と回復、およびデータベース復元モードの変更は非常にリスクが高いです。これらの操作を実行する際は注意してください。
-- イメージを無効にします。
ALTER DATABASE [Database Name] SET PARTNER OFF;
GO
-- 復元モードを SIMPLE に設定します。データベースのログリンクは切断されます。
ALTER DATABASE [Database Name] SET RECOVERY SIMPLE;
-- イメージは手動設定なしで自動的に回復されます。関連ドキュメント
RDS インスタンスのストレージ容量を拡張します。詳細については、「インスタンスの仕様を変更する」をご参照ください。
SQL 文を使用してデータベースを管理します。詳細については、「SQL 文を使用してデータベースを作成および管理する」をご参照ください。
RDS インスタンスのストレージ使用状況を表示し、関連する問題をトラブルシューティングします。詳細については、「RDS for SQL Server の容量不足の問題」をご参照ください。
RDS インスタンスのストレージ容量が使い果たされたときに発生するエラーをトラブルシューティングします。詳細については、「RDS SQL Server のディスク領域がいっぱいになる問題」をご参照ください。