1727770640
2024-10-01 08:13:15
PostgreSQL の論理レプリケーションは、データの変更を論理レベルでレプリケートするように設計されており、特定のテーブルやデータベース全体を PostgreSQL インスタンス間でレプリケートできます。データベース クラスター全体を複製する物理レプリケーションとは異なり、論理レプリケーションではより詳細な制御が可能であり、データ移行、高可用性、マルチマスター レプリケーション セットアップなどのシナリオに特に役立ちます。
- 2 つの PostgreSQL インスタンスは、異なるサーバー上で実行されるか、簡単にするために同じサーバー上で実行されます。
- SQL コマンドと PostgreSQL 構成に関する基本的な知識。
この例では、2 つの PostgreSQL データベース間の論理レプリケーションを構成します。 db1 (プライマリ データベース) および db2 (加入者データベース)。私たちの目標は、単純なテーブルを複製することです。 db1 に db2。
まず、テーブルへの変更をパブリッシュするためにプライマリ データベースを設定する必要があります。次の手順に従います。
テーブルを作成して初期データを挿入する
に接続します db1 次のコマンドを実行してテーブルを作成し、初期データを挿入します。
CREATE TABLE table1 (ad VARCHAR(15),soyad VARCHAR(15) ); INSERT INTO table1 (ad, soyad) VALUES ('Kemal', 'oz');
パブリケーションを作成する
パブリケーションは、レプリケートする変更 (挿入、更新、削除) の名前付きコレクションです。すべてのテーブルのパブリケーションを作成します。
CREATE PUBLICATION alltables12 FOR ALL TABLES;
次に、作成されたパブリケーションからデータを受信するように購読者データベースを構成します。 db1。
テーブルを作成する
それを確認してください db2 と同じテーブル構造を持っています db1:
CREATE TABLE table1 (ad VARCHAR(15),soyad VARCHAR(15) );
サブスクリプションを作成する
サブスクリプションはパブリケーションに接続し、そこからの変更を適用します。次のコマンドを実行してサブスクリプションを作成します db2:
CREATE SUBSCRIPTION mysub1 CONNECTION 'host=localhost port=5432 user=postgres dbname=test9' PUBLICATION alltables;
接続パラメータを置き換えます(host、 port、 user、 そして dbname) セットアップに適したものを選択してください。
レプリケーションが機能していることを確認するには、新しいデータをテーブルに挿入します。 db1 に表示されるかどうかを確認してください db2。
データを挿入する db1
で次のコマンドを実行します db1:
INSERT INTO table1 (ad, soyad) VALUES ('alı', 'oz');
データの検証 db2
に接続します db2 そしてテーブルの内容を確認します。
SELECT * FROM table1;
初期データと挿入された新しいデータの両方が表示されるはずです。 db1:
ad | soyad
-------+-------
Kemal | oz
alı | oz
PostgreSQL の論理レプリケーションは、データベース間でデータを同期するための柔軟かつ強力な方法を提供します。これらの手順に従うことで、2 つの PostgreSQL インスタンス間の基本的なレプリケーション シナリオがセットアップされました。この設定を、データの特定のサブセットのレプリケーションやマルチマスター レプリケーションの実装など、より複雑なシナリオに拡張できます。
#Postgres #での論理レプリケーション論理レプリケーションの概要 #ケマルオズ著 #年 #月