Scroll untuk baca artikel
Postgresql

Postgres logical replication pgoutput plugin

198
×

Postgres logical replication pgoutput plugin

Sebarkan artikel ini

postgres logical replication pgoutput plugin

logo postgresql
logo postgresql
75 / 100

Pendahuluan

Saat membaca tentang replikasi logis postgres, saya menemukan sejumlah contoh di internet menggunakan pg_logical_slot_get_changes dengan plugin “test_decoding“, tetapi saya tidak menemukan contoh yang menunjukkan cara menggunakan plugin default “pgoutput”. Jadi, inilah ringkasan singkatnya.

Langkah-Langkah

1. Pertama kita membutuhkan tabel untuk di replicate, maka kita coba create table terlebih dahulu.

CREATE TABLE demo_table_replicate (id integer);

2. Selanjutnya kita perlu membuat slot replicate logical. Anda memerlukan beberapa hal yang dikonfigurasi agar dapet berjalan di postgres

select pg_create_logical_replication_slot('my_slot', 'pgoutput');

3. Jika belum ada anda dapet membuat replication slot menggunakan replication protocol, dengan menjalankan perintah.

psql "dbname=postgres replication=database" -c "CREATE_REPLICATION_SLOT my_slot LOGICAL pgoutput;"

4. Sekarang kita dapat memeriksa parameter yang dibutuhkan oleh plugin pgoutput dengan memeriksa sumbernya di postgres.

contohnya :

static void
parse_output_parameters(List *options, uint32 *protocol_version,
      List **publication_names)
...

Argumennya diberi nama proto_version dan publishing_names (periksa sumber tertaut untuk melihat di mana argumen tersebut didefinisikan).

Karena publishing_names adalah sebuah argumen, kita juga perlu membuat publikasi baru sebelum kita dapat melakukan perubahan apa pun.

CREATE PUBLICATION my_publication FOR ALL TABLES;

Mari tambahkan catatan ke demo_table_replicate .

INSERT INTO demo_table_replicate (id) values (1);

Sekarang kami memiliki semua yang kami perlukan untuk mencoba melakukan perubahan terbaru.

postgres=# SELECT * FROM pg_logical_slot_get_binary_changes('my_slot', NULL, NULL, 'proto_version', '1', 'publication_names', 'my_publication');
    lsn    |   xid   |            data                
-----------+---------+-------------------------------------
 1/2C8BD90 | 3733324 | \x420000000102c8bdd0000...
 1/2C8BD90 | 3733324 | \x52000206d77075626c696...
 1/2C8BD90 | 3733324 | \x49000206d74e000174000...
 1/2C8BE00 | 3733324 | \x43000000000102c8bdd00...
(4 rows)

Anda mungkin memperhatikan kami beralih dari pg_logical_slot_get_changes ke pg_logical_slot_get_binary_changes. Itu karena …get_changes mengharapkan data tekstual, dan mencoba menggunakannya bersama pgoutput tidak akan berhasil.

Itu saja! Kami dapat membuat logical replication slot menggunakan plugin pgoutput, membuat publikasi, dan memeriksa perubahan biner di demo_table_replicate .

Sekian Terima kasih

 

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

Situs ini menggunakan Akismet untuk mengurangi spam. Pelajari bagaimana data komentar Anda diproses.

Verified by MonsterInsights