mita2 database life

主にMySQLに関するメモです

BCP/DR:バックアップ・レプリカ・マルチリージョンクラスターの比較

  • 目標復旧時点(Recovery Point Objective = RPO)
  • 目標復旧時間(Recovery Time Objective = RTO)

バックアップの遠隔地保管

  • RPO

    • RPO はバックアップ頻度に依存
    • 日次バックアップであれば、RPOは1日、最大で1日分のデータがロスト
  • RTO

    • 比較的、長い
    • データベースのサイズに比例
    • 特にサイズの大きいデータベースのリカバリは時間がかかる
  • コスト
    • ストレージ保管コスト+バックアップを転送するコストがかかる
    • 基本的には低コストだが、クラウドではネットワーク転送コストが高くつくため、バックアップのサイズが大きいと、レプリカのほうが安くつく場合がある

非同期レプリカを遠隔地に設置

  • RPO
    • ミリ秒〜数秒レベル
    • トランザクションログ(MySQLでいうとバイナリログ)を転送するのにかかる時間だけ考えれば良い
    • MySQL の Applier Thread の遅延はRPOに影響しない。SHOW SLAVE STATUSSeconds_Behind_Master の 値 は RPOには関係ない。データの転送は Receiver IO Thread がバイナリログを読み取った時点で完了している。
  • RTO
    • 比較的、短め
    • データのリカバリが不要
    • 復旧時に、レプリカの台数やスペックを変更する場合はその時間も考慮
  • コスト
    • レプリカの台数や構成に依存
    • すぐに切り替えられるよう、本番と同じ構成にすると高コスト
    • 最小構成であれば比較的低コスト
      • テーブルを限定することも可能

マルチリージョンクラスタ

分散データベースを想定。DBサーバを複数のリージョンに配置し、複数のリージョンにまたがった単一のクラスターを構成する。 データは複数のリージョンに同期的に書き込まれる(複製される)。

  • RPO
    • RPO: 0。データロストなし。
  • RTO
    • 最短。タイムアウトの設定にもよるが、秒レベルで障害サイトが切り離される。
    • 復旧作業自体が不要。
  • コスト
    • 基本的に高い
  • その他
    • クエリの性能(レイテンシ)が悪化する
    • 切り戻しが容易
    • 分散データベースを用いるため、3リージョン以上

ざっくりとしたまとめ

手法 RPO RTO コスト
日次バックアップの遠隔地保管 1日 長め 低め
レプリカ 数秒 構成に依存 中ぐらい
マルチリージョンクラスタ 秒レベル 高い