1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Aiven for PostgreSQL®が論理レプリケーションスロットを自動的に再作成するようになりました。

Posted at

Aiven for PostgreSQL® now recreates logical replication slots automaticallyの翻訳です。

2023年1月13日

Aiven for PostgreSQL® が論理レプリケーションスロットを自動的に再作成するようになりました。

メンテナンス時やフェイルオーバー時に論理レプリケーションスロットを失う心配がなくなりました!詳しくはこちらをご覧ください。

フェイルオーバーの痛み

PostgreSQL®クラスタのプライマリノードが故障し、新しいプライマリノードが計画通りにそれを置き換えます...しかし、レプリケーションスロットへの接続が切断され、他のシステムは新しいプライマリからデータを読み取ることができなくなります。例えば、PostgreSQL®が長期ストレージとして機能し、Apache Kafka®がデータを出し入れしている場合、新しいレプリケーションスロットをセットアップしないと、Kafkaは新しいプライマリからデータを読み取ることができません。

新しい論理レプリケーションスロットを作成して接続するには、しばらく時間がかかります。新しいエントリが書き込まれないようにシステムの他の場所からPostgreSQLへのアクセスをシャットダウンするか、エントリが削除されないようにクラスタ全体を再同期するかです。

そして、プライマリごとにこれを行う必要があります。

しかしAivenでは、この手間は過去のものとなりました。2022年12月、Aiven for PostgreSQLのフェイルオーバーや制御された切り替えの際に、論理レプリケーションスロットを自動的に再作成する新機能をリリースしました。

論理レプリケーションスロット

PostgreSQL®では、サーバの下流のサブスクライバに対して論理レプリケーションスロットを設定することができます。レプリケーションスロットを持つことで、サブスクライバはデータベースのデータの変更を受け取ることができます。

この設定の問題点は、レプリケーションスロットに依存していてプライマリノードがダウンした場合、データにギャップが発生するか、データベースの巨大な塊を再読み込みしなければならなくなることです。

フェイルオーバーやスイッチオーバーの後、スロットを再作成し、すべてのダウンストリーム・サブスクライバーを再接続する必要があるからだ。これを手作業で行った場合、サブスクライバはその処理中にデータベースに書き込まれたものをすべて失うことになる。データベースの完全な再同期でこれを軽減することはできますが、ユーザーにとってダウンタイムが発生します。

もうギャップも完全な再同期もしない

Aiven for PostgreSQLはPGクラスタのレプリケーションスロットの自動再作成を実装しました。複数ノードクラスタのプライマリノードがダウンすると、計画外のフェイルオーバーであれ、制御された切り替えであれ、Aivenは自動的に古いプライマリサーバから新しいプライマリサーバにレプリケーションスロットを再作成します。シングルノードクラスターの場合、レプリケーションスロットは制御された切り替え時に再作成されます。

これは、スタンバイまたはプライマリとして昇格する新しいノードにプライマリからレプリケーション・スロットを作成し、それらの位置を継続的に同期することで実現されます。フェイルオーバーやスイッチオーバーが発生すると、スタンバイ・ノードにはすでに同じレプリケーション・スロットがあり、ポジションは最新(最大5秒の精度)になっている。

スロットは、プライマリに昇格してレプリカや他のシステムへの接続を開始する前に、ノード上で再作成されます。

レプリケーション・スロットの自動再作成の適用

お客様のAiven for PostgreSQLデータベースは、次回メンテナンス時にサーバーが再利用された際にこの新機能の恩恵を受けることができます(お客様の環境での問題を避けるため、すでに稼働しているノードには手を付けません)。そのため、次回のメンテナンス更新でレプリケーションスロットを最後に失い、その後自動レプリケーションが機能し始めます。

もちろん、新しいサービスにはこの新機能が最初から備わっています!

まとめ

Aiven for PostgreSQLクラスタの管理が簡単になりました。切り替えやフェイルオーバーの後、新しいプライマリが引き継いだ場合、そのプライマリは既に古いプライマリと同じレプリケーションスロットを持ち、他のシステムはシームレスにそのプライマリからの読み込みを再開することができます。

この新機能の詳細については、ドキュメントをご覧ください:アップグレードとフェイルオーバーの手順をご参照ください。

Aivenと私たちのサービスに関する最新ニュースや、オープンソースに関するちょっとした情報を入手するには、月刊ニュースレターを購読する!Aivenに関する日々のニュースは、LinkedInTwitterのフィードでご覧いただけます。

サービスのアップデート情報を知りたい方は、変更履歴をご覧ください。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?