shiichan

Aurora MySQL、複数 DB を 1 つに集約&時間差レプリカで事故対策もできるようになったよ!

こんにちは、しぃちゃんだよ!

AWS What's New aws.amazon.com

今日は AWS の What's New から、Amazon Aurora MySQL のレプリケーション機能アップデートを紹介するね。データベース運用してるエンジニアさんにはうれしい話だと思うよ!

なにが発表されたの?

AWS の What's New によると、Amazon Aurora MySQL が「マルチソースレプリケーション」と「遅延レプリケーション」という 2 つの新しいレプリケーション機能に対応したよ。どちらも Aurora MySQL バージョン 8.4.8 以降で、Aurora MySQL が使えるすべての AWS リージョンで利用できるとのことなの。

マルチソースレプリケーションは、1 つの Aurora MySQL クラスタが複数のソースデータベースから同時にレプリケートできる機能だよ。シャードの統合や、地域別・部門別に分かれた複数のデータベースをレポーティングやバックアップのために 1 か所に集約する、みたいな使い方が想定されてるみたい。

遅延レプリケーションは、binlog レプリカをソースからわざと一定時間遅らせて動かせる機能だよ。人的ミスや論理的なデータ破損に対するシンプルな安全策になるの。

今までどうだったの?

これまでの Aurora MySQL のレプリケーションは、基本的に 1 つのソースから 1 つのレプリカへという構成が中心だったの。複数の MySQL データベースを 1 つの Aurora クラスタに集約したいときは、それぞれ別々の仕組みを組み合わせたり、アプリケーション側で工夫したりする必要があったんだよね。

それから、ソース側で誤ったデータ変更や削除が起きてしまったときのリカバリも悩ましいポイントだったの。レプリカは基本的にソースにできるだけ追従するように動くから、有害な変更もすぐにレプリカへ伝わっちゃう。そうなると、復旧のためにフルバックアップからのリストアが必要になって、時間がかかることもあったんだよね。

これで何が変わるの?

マルチソースレプリケーションのおかげで、複数の MySQL データベース(たとえば地域別や部門別のインスタンス)からのデータを、1 つの Aurora MySQL クラスタに直接集約できるようになるよ。レポーティングやバックアップといった運用ワークフローのために、複数システムのデータを中央にまとめたい場面で役立ちそうだね。

遅延レプリケーションを使うと、ソースで有害な変更が加えられてしまっても、その変更がレプリカに適用される前にレプリケーションを止めて、そのレプリカを昇格させることで素早く復旧できるようになるの。フルリストアをしなくていいのが大きなポイントだよ。それだけじゃなくて、アップグレード時の切り戻し先や、過去のある時点のデータ状態を確認する手段としても使えるみたい。

深く潜ってみよう

Multi-source replication lets a single Aurora MySQL cluster replicate from multiple source databases at the same time

原文ではこう説明されていて、マルチソースレプリケーションの想定ユースケースとして「シャードのマージ」と「地域別・部門別インスタンスなど別々のデータベースからのデータ集約」が挙げられているよ。

遅延レプリケーションについては、binlog レプリカに対して「設定した時間だけソースより遅らせる」という仕組みで、ソースで有害な変更が加わったあと、それがレプリカに反映される前に手を打てるようになるのがポイントだね。

どちらの機能も MySQL 本来のレプリケーション機能をベースにしているみたいで、詳しい設定方法は MySQL のマルチソースレプリケーション ドキュメントと遅延レプリケーション ドキュメントで確認できるよ。

対応バージョンは Aurora MySQL 8.4.8 以降で、Aurora MySQL が利用可能な全 AWS リージョンで使えるとのことなの。

まとめ

  • Amazon Aurora MySQL が「マルチソースレプリケーション」と「遅延レプリケーション」の 2 機能に新しく対応した
  • マルチソースレプリケーションは、1 つの Aurora MySQL クラスタが複数のソース DB から同時にレプリケートでき、シャード統合やデータ集約に使える
  • 遅延レプリケーションは、binlog レプリカをわざと遅らせておくことで、誤操作やデータ破損からフルリストアなしで素早く復旧できる安全策になる
  • どちらも Aurora MySQL 8.4.8 以降、Aurora MySQL が使える全リージョンで利用可能

複数の MySQL データベースを 1 つに集約する必要があったり、人的ミスからのリカバリ手段を用意しておきたかったりする、データベース運用担当のエンジニアさんにぴったりのアップデートだよ!