kasei_sanのブログ

かせいさんのIT系のおぼえがきです。胡乱の方はnoteとtwitterへ

RDS の Aurora の昇格についておぼえがき

RDS Auroraでライターインスタンスが死んだ場合、どういうルールで昇格するんだっけ?

  • ライターインスタンスの内「優先度」が最も低い値のインスタンスから選ばれる(0がデフォルト)
  • 同じ「優先度」の場合、同じサブネット、AZのものが優先される

Terraformでインスタンスの「優先度」を決めるにはどうしたら良いの?

instances の中で promotion_tier を設定すれば良い

  instances = {
    1 = {
      # 未指定だと 0
      instance_class      = "db.r5.2xlarge"
      publicly_accessible = true
    }
    2 = {
      identifier     = "static-member-1"
      instance_class = "db.r5.2xlarge"
      promotion_tier = 10
    }
    3 = {
      identifier     = "excluded-member-1"
      instance_class = "db.r5.large"
      promotion_tier = 15
    }
  }

typeが READER のカスタムエンドポイント内のリーダーインスタンスが昇格するとどうなるの?

  • エンドポイントから外される
  • なので、負荷がギリギリなカスタムエンドポイントだと死ぬ
  • そういうエンドポイントのインスタンスは、優先度の数値を高くして昇格を防ぐ

フェイルオーバーや昇格に伴って DB インスタンスのロールがライターとリーダーの間で変更されると、Aurora は静的リストまたは除外リストで指定された DB インスタンスを変更します。

例えば、タイプ READER のカスタムエンドポイントに Aurora レプリカが含まれ、その後、ライターインスタンスに昇格されたとします。新しいライターインスタンスは、カスタムエンドポイントの一部ではなくなります。

docs.aws.amazon.com

👆ここの「カスタムエンドポイントのメンバーシップルール」より

参考

registry.terraform.io

dev.classmethod.jp