このトピックでは、ApsaraDB RDS for SQL Serverインスタンスのトランザクションログを縮小する方法について説明します。
以下の点にご注意ください。
インスタンスの設定やデータの変更など、リスクの高い操作を実行する前に、インスタンスのディザスタリカバリ機能とフォールトトレランス機能を確認して、データのセキュリティを確保することを推奨します。
ECS (Elastic Compute Service) インスタンスやApsaraDB RDSインスタンスなどのインスタンスの設定またはデータを変更する前に、インスタンスのスナップショットを作成するか、バックアップを有効にすることを推奨します。 たとえば、RDSインスタンスのログバックアップを有効にできます。
Alibaba Cloud管理コンソールで機密情報に対する権限を付与した場合、または機密情報を送信した場合は、できるだけ早い機会に機密情報を変更することを推奨します。 機密情報には、ユーザー名とパスワードが含まれます。
十分なログストレージ
ログの保存に使用される残りのストレージが十分な場合は、ApsaraDB RDSコンソールのトランザクションログの縮小機能を使用できます。 コンソールでこの機能を使用すると、ログのバックアップとログの縮小操作が自動的に実行され、トランザクションログファイルのサイズが管理および最適化されます。
[インスタンス] ページに移動します。 上部のナビゲーションバーで、RDS インスタンスが存在するリージョンを選択します。 次に、RDSインスタンスを見つけ、インスタンスのIDをクリックします。
左側のナビゲーションウィンドウで、[バックアップとリカバリ] をクリックします。
表示されるページで、[トランザクションログの縮小] をクリックします。 表示されたメッセージボックスで [OK] をクリックします。
重要システムがトランザクションログを縮小すると、システムは自動的にログバックアップを実行してトランザクションログをアーカイブします。 これにより、オンプレミスのログが正常に削除される可能性が高くなります。
システムがトランザクションログを縮小する前に、RDSインスタンスのログ再利用のステータスを確認することを推奨します。
ステータスがNOTHINGの場合、ログの縮小操作を実行できます。 ただし、縮小可能なトランザクションログのサイズは、トランザクションログの末尾の再利用可能な仮想ログファイル (VLF) のサイズによって異なります。 既存のアクティブなトランザクションのためにテールVLFのステータスを再利用可能として定義できない場合は、別のログバックアップ操作が必要です。 アクティブなトランザクションが完了するまで待機し、ログ再利用のステータスがNOTHINGに変更されたかどうかを確認します。
ステータスがLOG_BACKUPの場合、ログ縮小操作は実行されますが、既存のアクティブなトランザクションが原因で失敗する可能性があります。 この場合、システムは、ログ縮小操作を複数回実行することができる。
トランザクションログが削除された後、インスタンスの [モニタリングとアラート] ページに移動してログストレージを表示できます。
ログストレージ不足
次の操作は緊急時にのみ実行できます。 次の操作を実行する前に、RDSインスタンスのストレージ容量を拡張することを推奨します。 詳細については、「ApsaraDB RDS for SQL Server インスタンスの仕様変更」をご参照ください。
データベースのサーバーに「トランザクションログがいっぱいです」と表示された場合、コンソールでトランザクションログを縮小することはできません。 この場合、SQL文を実行して縮小操作を実行する必要があります。 トランザクションログの縮小は、ログストレージ容量を占有します。 したがって、縮小のためにログチェーンを切り捨てることができるのは、トランザクションログがいっぱいの場合のみです。 データベースのサーバーで次のSQL文を実行します。 ステートメントの [TestDb] をデータベース名に置き換えます。
トランザクションログがいっぱいの場合、縮小のためにログチェーンを切り捨てることしかできません。 データベースの復旧モデルをSIMPLEに変更しないことを推奨します。 データベースの復旧モデルをSIMPLEに変更すると、データベースが属するRDSインスタンスのバックアップチェーンが切断され、バックアップチェーンが切断された時点で実行されていたすべての復元タスクが失敗します。 緊急時にデータベースの復旧モードをSIMPLEに変更し、データベースのログチェーンを切り捨てる必要がある場合は、上記のリスクを理解し、責任を負う必要があります。 上記のステートメントを実行すると、表示されたエラーメッセージを無視でき、データベースのログチェーンが切断されます。
たとえば、次のステートメントを実行して、RDS Basic Editionを実行するインスタンスの復旧モデルをSIMPLEに設定します。
ALTER DATABASE [TestDb] //[TestDb] specifies the database name.
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.
High-availability Editionを実行するRDS for SQL Serverインスタンスでは、ALTER
操作は許可されません。これらのインスタンスのALTER
操作にはデータベースイメージが含まれるためです。 ビジネスでステートメントを実行する場合は、インスタンスのイメージを無効にし、復旧モデルをSIMPLE
に設定します。
インスタンスイメージの無効化と回復、およびデータベース回復モデルの変更は非常に危険です。 これらの操作を実行するときは注意してください。
-- Disable the image.
ALTER DATABASE [Database Name] SET PARTNER OFF;
GO
-- Set the recovery model to SIMPLE. The database log link is disconnected.
ALTER DATABASE [Database Name] SET RECOVERY SIMPLE;
-- The image is automatically reovered without manual configurations.
関連ドキュメント
RDSインスタンスのストレージ容量を拡張します。 詳細については、「ApsaraDB RDS for SQL Server インスタンスの仕様変更」をご参照ください。
SQL文を使用してデータベースを管理します。 詳細については、「SQL文を使用したデータベースの作成と管理」をご参照ください。
RDSインスタンスのストレージ使用状況を表示し、関連する問題をトラブルシューティングします。 詳細については、「ApsaraDB RDS For SQL Serverインスタンスのストレージ不足のトラブルシューティング」をご参照ください。
RDSインスタンスのストレージ容量が使い果たされたときに発生するエラーのトラブルシューティング。 詳細については、「ApsaraDB RDS for SQL Serverインスタンスのストレージ容量が使い果たされた場合はどうすればよいですか。 」をご参照ください。