結論
RDSの保留中の更新を適用するとき、CRRのクラスターがある場合は先にそちらに更新を適用する必要がある。
(更新のタイプにはos-upgrade/system-update/db-upgradeの3種類がある。今回はsystem-updateなのでそれ以外も必須かは未検証。)
環境
ap-northeast-1にAuroraクラスターがあり、そのCRRクラスターがus-west-2にある。
describe-db-clusters
"Engine": "aurora",
"EngineVersion": "5.6.10a",
どちらもAurora 1.16で保留中の更新にAurora 1.17.8 release
がある。
やろうとしたこと
保留中のメンテナンスに Aurora 1.17.8 release
が来ていたので、
下記のコマンドでap-northeast-1側のクラスターに更新を適用しようとした。
$ aws rds apply-pending-maintenance-action \
--resource-identifier "arn:aws:rds:ap-northeast-1:xxxxxxxxxxxx:cluster:hogehogecluster" \
--apply-action system-update \
--opt-in-type immediate
発生したエラー
error
Unable to upgrade DB cluster hogehogecluster because related Aurora cross region Replica hogehogecluster-crr is not yet patched.
Upgrade the Aurora cross region Replica and try again.
Google翻訳
関連するAuroraクロスリージョンレプリカhogehogecluster-crrにはまだパッチが適用されていないため、DBクラスターhogehogeclusterをアップグレードできません。
Auroraクロスリージョンレプリカをアップグレードして、再試行してください。
おわりに
たしかにupdateによる互換性とかのことを考えれば当たり前なんですが、すっかりCRRがあることを忘れていましたね。
これのせいでメンテ時間中に作業が終わらず…。