【PostgreSQL】レプリケーションを確認する

【PostgreSQL】レプリケーションを確認する

PostgreSQLレプリケーションであるかを確認する方法を紹介します。

レプリケーションについて

レプリケーションとは、あるDB(マスター/プライマリ)の内容を、他のサーバ(スタンバイ/セカンダリ)のDBに自動コピーして同期させる仕組みのことです。バックアップや負荷分散といった用途に用いられます。

プライマリ側のDBでINSERT・UPDATEなどのデータの更新が起こると、そのトランザクションログをスタンバイ側のDBに反映して、同じ状態を再現します。

レプリケーションの種類は、ストリーミングレプリケーションとロジカルレプリケーションの2種類があります。

ストリーミングレプリケーションはDBを完全に複製するのに対し、ロジカルレプリケーションは、テーブルだけを複製するといった複製が可能です。

レプリケーションかどうか確認する方法

PostgreSQLのサーバーが、プライマリかどうかは以下のSQLで確認することができます。

1SELECT pg_is_in_recovery();

結果の真偽値でプライマリかどうか判断できます。

f(false):プライマリ(書き込みできる側)
t(true):スタンバイ(読み取り専用側)

なお、スタンドアローンの場合もfalseとなります。

ストリーミングレプリケーションか確認する方法

プライマリ側で、ストリーミングレプリケーションを使っているかは以下のSQLで確認することができます。

1SELECT * FROM pg_stat_replication;

ストリーミングレプリケーションが有効の場合、結果に行が出てきます。0行の場合はレプリケーション無しと判断できます。

ロジカルレプリケーションか確認する方法

プライマリ側で、ロジカルレプリケーションを使っているかは以下のSQLで確認することができます。

1SELECT * FROM pg_publication;

ロジカルレプリケーションが有効の場合、結果に行が出てきます。0行の場合はレプリケーション無しと判断できます。

PostgreSQLのロジカルレプリケーションは送信側にpublicationを作り、受信側にsubscriptionを作る必要があるので、publicationの情報を確認しています。


今回はPostgreSQLでレプリケーションの確認方法を紹介しました。以上で記事を終わりにします。

参考文献