このトピックでは、ログ領域が十分にある場合と不足している場合のいずれにおいても、ApsaraDB RDS for SQL Server インスタンスのトランザクション ログを縮小する方法について説明します。
-
インスタンスやデータの変更などのリスクの高い操作を実行する前に、データを保護するために、インスタンスに堅牢な災害復旧およびフォールトトレランス機能があることを確認してください。
-
ECS インスタンスや ApsaraDB RDS インスタンスなど、インスタンスの構成またはデータを変更する場合は、スナップショットを作成するか、ApsaraDB RDS インスタンスでログ バックアップなどの機能を有効にすることを推奨します。
-
Alibaba Cloud プラットフォーム上で権限を付与したり、ユーザー名やパスワードなどのセキュリティ情報を提供したりした場合は、速やかに変更することを推奨します。
ログ領域が十分にある場合
ログ領域が十分にある場合は、ApsaraDB RDS コンソールの トランザクションログのバックアップと縮小 機能を使用できます。この機能は、ログ バックアップとログの縮小操作を自動的に実行し、トランザクション ログファイルのサイズを最適化します。
-
トランザクション ログを縮小すると、システムは自動的にログ バックアップを実行します。これによりトランザクション ログがアーカイブされ、ローカルログのクリーンアップが成功する可能性が高まります。
-
トランザクション ログを縮小する前に、データベースのログ再利用の待機状態を確認してください。
-
状態が NOTHING の場合は、ログを縮小できます。縮小できるサイズは、トランザクション ログの末尾にある再利用可能な仮想ログ ファイル (VLF) のサイズによって異なります。アクティブなトランザクションによってログ末尾の VLF を再利用可能に設定できない場合は、別途 ログ バックアップ を実行する必要がある場合があります。その後、アクティブなトランザクションが完了するまで待機し、状態が NOTHING になるまで再利用の待機状態を再確認してください。
-
状態が LOG_BACKUP の場合、アクティブなトランザクションが原因で縮小操作が失敗する ことがあります。成功させるには、縮小操作を複数回実行する必要がある場合があります。
[データベース管理] > [詳細の表示] ページに移動して、ログファイルの再利用状態 (log_reuse_wait_desc) を確認できます。
-
- RDSインスタンスにアクセスし、上部のリージョンを選択し、対象のRDSインスタンスのIDをクリックします。
左側のナビゲーションウィンドウで、バックアップと復元 をクリックします。
-
[トランザクション ログのバックアップと縮小] をクリックし、[OK] をクリックします。
-
縮小操作が完了したら、インスタンスの [モニタリングとアラート] ページに移動して、最新のログ領域使用率を確認します。
[標準モニタリング] タブで、[インスタンス容量] チャートを見つけ、
sqlserver.log_sizeメトリックを確認して、ログ領域が縮小されていることを確認します。
よくある質問
-
Q:[トランザクション ログのバックアップと縮小] ボタンが反応しない場合はどうすればよいですか。
-
A:この問題は、通常、次の理由で発生します。
-
ログ再利用の待機状態が縮小条件を満たしていない:データベースの
log_reuse_wait_descの状態がNOTHINGではない場合、ログファイル内の仮想ログファイル (VLF) を再利用可能としてマークできず、縮小操作がブロックされます。[データベース管理] > [詳細の表示] ページに移動して、ログファイルの再利用状態 (log_reuse_wait_desc) を確認できます。状態がNOTHINGになってから操作を再試行してください。 -
アクティブなトランザクションによってログ末尾の VLF が解放されない:
log_reuse_wait_descの状態がNOTHINGであっても、アクティブなトランザクションがログ末尾の VLF を使用している場合、縮小操作で領域を解放できません。アクティブなトランザクションが完了するまで待機し、再度 ログ バックアップ を実行してから、[トランザクション ログのバックアップと縮小] をクリックしてください。
-
ログ領域が不足している場合
データベースサーバーで "transaction log is full" と報告された場合、コンソールからトランザクション ログを縮小できません。SQL 文を実行する必要があります。トランザクション ログの縮小には一定のログ領域が必要です。ログが満杯の場合は、コマンドを実行してログ チェーンを切断する以外に方法はありません。
事前準備
-
次の操作は 緊急時のみ に使用してください。まずは ディスク領域を拡張 することを推奨します。
-
原則として、データベースの復旧モデルを SIMPLE に変更することは推奨しません。この操作により ApsaraDB RDS のバックアップチェーンが切断され、その後のすべてのポイントインタイム リストアタスクが失敗します。
-
High-availability (HA) edition インスタンスの場合は、データベースの復旧モデルを変更する前にデータベース ミラーリングを無効にする必要があります。
緊急時にこれらの操作を実行することは、関連するリスクを理解し、受け入れる ことを意味します。慎重に進めてください。
操作手順
Basic Edition インスタンス
-- データベースのログ チェーンを切断するために、データベースの復旧モデルを SIMPLE に設定します。
ALTER DATABASE [DatabaseName] SET RECOVERY SIMPLE;
High-availability (HA) edition インスタンス
High-availability (HA) edition インスタンスではデータベース ミラーリングが有効になっているため、ALTER DATABASE を直接実行できません。次の手順に従ってください。
-- 最初にデータベース ミラーリングを無効にします。
ALTER DATABASE [DatabaseName] SET PARTNER OFF;
GO
-- データベースのログ チェーンを切断するために、データベースの復旧モデルを SIMPLE に設定します。
ALTER DATABASE [DatabaseName] SET RECOVERY SIMPLE;
-- データベース ミラーリングは自動的に復元されます。手動での設定は不要です。
システムは直ちに復旧モデルを FULL に戻し、SIMPLE に恒久的に変更しませんが、このコマンドによりログ チェーンは正常に切断されます。その結果発生するエラーは操作の結果には影響しないため、無視できます。
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. -
A:ApsaraDB RDS for SQL Server の High-availability (HA) edition インスタンスではデータベース ミラーリングが使用されているため、復旧モデルに対する
ALTER操作が禁止されています。手順 に従って問題を解決してください。
関連ドキュメント
-
ストレージ容量を拡張するには、「Change Configuration」をご参照ください。
-
SQL コマンドを使用してデータベースを管理するには、「Manage databases by using SQL commands」をご参照ください。
-
容量の使用状況を確認し、容量関連の問題をトラブルシューティングするには、「Troubleshoot insufficient space issues for ApsaraDB RDS for SQL Server」をご参照ください。
-
データベースのディスク領域が満杯になる問題を解決するには、「Resolve a full disk space issue for SQL Server」をご参照ください。