AlloyDB でクロスリージョン レプリケーションがサポートされました

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

ウィスキー、シガー、パイプをこよなく愛する大栗です。

Google Cloud の新しい RDBMS である AlloyDB ですが、順調にアップデートして先日 GA になりました。GA になる以前のアップデートクロスリージョン レプリケーションをサポートしたのでレポートします。

クロスリージョン レプリケーション

クロスリージョン レプリケーションはリージョンをまたがって、プライマリ クラスタとセカンダリ クラスタでレプリケーションを行う機能です。地域をまたがってデータベースへアクセスしたい場合や、DR の用途などで使用できると思われます。

やってみる

プライマリ クラスタの作成

まず、以下のブログエントリのAlloyDB クラスタの作成を参考に AlloyDB のプライマリ クラスタを作成します。ここでは Highly available with read pools 構成で東京リージョンに作成します。

話題の Google Cloud の新しい DB の AlloyDB for PostgreSQL を調査して、分析クエリ高速化機能のカラム型エンジンを試してみた

セカンダリ クラスタの作成

プライマリ クラスタの詳細画面でCREATE SECONDARY CLUSTERをクリックします

Cluster IDに任意のクラスタ名を入力してRegionにプライマリ クラスタと異なるリージョンを選択します。ここではasia-southeast1(シンガポール)を選択しました。そしてCONTINUEをクリックします。

Instance IDに任意のインスタンス名を入力してCREATE CLUSTERをクリックします。

Secondary cluster としてクラスタが作成されます。

CLI で実行する場合

CLI でセカンダリ クラスタを作成する場合は、以下のコマンドを実行します。

$ gcloud beta alloydb clusters create-secondary <SECONDARY_CLUSTER_ID> \
 --region=<REGION_ID>\
 --primary-cluster=<PRIMARY_CLUSTER_ID>
$ gcloud beta alloydb instances create-secondary <SECONDARY_INSTANCE_ID> \
 --region=<REGION_ID> \
 --cluster=<SECONDARY_CLUSTER_ID>

データ投入

HammerDB を使用して TPC-C ライクなテストデータを投入してみました。実際の手順はこちらを参考にしてください。

プライマリ クラスタ

書き込みを行っているためプライマリインスタンスの負荷が上がり、ストレージレベルでレプリケーションが行われる読み取りプールはあまり負荷が上がりません。

セカンダリ クラスタ

セカンダリ クラスタは、プライマリ クラスタの読み取りプールノードと異なり負荷がかかっています。これはレプリケーションを、ストレージレイヤーではなくインスタンスを使用して行われていることを表していると思われます。

セカンダリ クラスタの昇格

セカンダリ クラスタを昇格してみます。

セカンダリ クラスタの画面でPROMOTEをクリックします。

昇格するクラスタ名を入力してPROMOTEをクリックします。

クラスタの昇格を待ちます。

暫く待つと、以下のように独立したクラスタになります。

プライマリインスタンスは自動で高可用性に移行されます。また読み取りプールを追加することもできます。

CLI で実行する場合

CLI でセカンダリ クラスタを昇格する場合は、以下のコマンドを実行します。

$ gcloud beta alloydb clusters promote <SECONDARY_CLUSTER_ID> \
 --region=<REGION_ID> \
 --project=PROJECT_ID

さいごに

AlloyDB の GA 前後も様々なアップデートが進んでいます。高パフォーマンスな PostgreSQL というだけでない豊富な機能に対応していくと思いますので、今後もアップデートを追っていきたいと思います。