リードレプリカ削除時の実行中クエリの扱いについて教えてください

2024.06.27

困っていた内容

リードレプリカの削除を実行した際、実行中のクエリはどのように扱われるのでしょうか?削除対象のリードレプリカで処理中のクエリがある場合、そのクエリが完了するまで削除は延期されるのでしょうか?

結論

実行中のクエリについて

削除実行後からの 3 分間は、削除されるレプリカにおいて正常にクエリを実行することが可能です。削除を実行してから 3 分後に実行されているクエリに関しては強制的に終了されます。

エンドポイントについて

インスタンスエンドポイントはレプリカの削除実行後にすぐに削除されます。その後のクライアントからの新規接続については、クライアントが DNS キャッシュをしている場合を除き削除予定のレプリカに振り分けられることはありません。

Aurora DB クラスターからの DB インスタンスの削除

Aurora レプリカが削除されるとそのインスタンスエンドポイントは直ちに削除され、Aurora レプリカも読み込みエンドポイントから削除されます。削除中の Aurora レプリカで実行されているステートメントがある場合は、削除までに 3 分の猶予期間があります。既存のステートメントは、猶予期間中に終了する場合があります。猶予期間が終了すると、Aurora レプリカはシャットダウンし、削除されます。

まとめ

リードレプリカ削除時のクエリ処理は、3 分間の猶予期間を設けつつ、最終的には強制終了される仕組みになっています。システム設計時にはこの挙動を考慮していただき、クエリのタイムアウト設定や再試行ロジックを適切に実装してください。

この記事がどなたかのお役に立てば幸いです。

参考資料