Replication Slot Creation: Contoh-Contoh dan Konsekuensi

Replication Slot Creation: Contoh-Contoh dan Konsekuensi

Dalam artikel ini, kita akan membahas tentang penggunaan slot replikasi logical dalam PostgreSQL. Dalam beberapa kasus, Anda perlu membuat slot replikasi secara manual sebelum subscription dapat diaktifkan. Berikut adalah contoh-contoh dari prosedur tersebut.

Contoh 1: Tanpa Opsi Connect

Pertama-tama, kita akan membuat publikasi pub1 untuk contoh ini.

test_pub=# CREATE PUBLICATION pub1 FOR ALL TABLES;
CREATE PUBLICATION

Lalu, kita akan membuat subscription sub1 dengan opsi connect=false.

test_sub=# CREATE SUBSCRIPTION sub1
test_sub-# CONNECTION 'host=localhost dbname=test_pub'
test_sub-# PUBLICATION pub1
test_sub-# WITH (connect=false);
WARNING: subscription was created, but is not connected
HINT: To initiate replication, you must manually create the replication slot, enable the subscription, and refresh the subscription.
CREATE SUBSCRIPTION

Pada server publisher, kita akan membuat slot replikasi dengan nama sub1 menggunakan perintah pg_create_logical_replication_slot.

test_pub=# SELECT * FROM pg_create_logical_replication_slot('sub1', 'pgoutput');
 slot_name | lsn
-----------+-----------
 sub1 | 0/19404D0
(1 row)

Pada server subscriber, kita akan memperbarui subscription dan mengaktifkan replikasi.

test_sub=# ALTER SUBSCRIPTION sub1 ENABLE;
ALTER SUBSCRIPTION
test_sub=# ALTER SUBSCRIPTION sub1 REFRESH PUBLICATION;
ALTER SUBSCRIPTION

Contoh 2: Dengan Opsi Connect=False dan Slot Name

Dalam contoh ini, kita akan membuat subscription sub1 dengan opsi connect=false dan slot_name='myslot'.

test_sub=# CREATE SUBSCRIPTION sub1
test_sub-# CONNECTION 'host=localhost dbname=test_pub'
test_sub-# PUBLICATION pub1
test_sub-# WITH (connect=false, slot_name='myslot');
WARNING: subscription was created, but is not connected
HINT: To initiate replication, you must manually create the replication slot, enable the subscription, and refresh the subscription.
CREATE SUBSCRIPTION

Pada server publisher, kita akan membuat slot replikasi dengan nama myslot menggunakan perintah pg_create_logical_replication_slot.

test_pub=# SELECT * FROM pg_create_logical_replication_slot('myslot', 'pgoutput');
 slot_name | lsn
-----------+-----------
 myslot | 0/19059A0
(1 row)

Pada server subscriber, kita akan memperbarui subscription dan mengaktifkan replikasi seperti sebelumnya.

test_sub=# ALTER SUBSCRIPTION sub1 ENABLE;
ALTER SUBSCRIPTION
test_sub=# ALTER SUBSCRIPTION sub1 REFRESH PUBLICATION;
ALTER SUBSCRIPTION

Contoh 3: Dengan Slot Name NONE

Dalam contoh ini, kita akan membuat subscription sub1 dengan opsi slot_name=NONE.

test_sub=# CREATE SUBSCRIPTION sub1
test_sub-# CONNECTION 'host=localhost dbname=test_pub'
test_sub-# PUBLICATION pub1
test_sub-# WITH (slot_name=NONE, enabled=false, create_slot=false);
CREATE SUBSCRIPTION

Pada server publisher, kita akan membuat slot replikasi dengan nama myslot menggunakan perintah pg_create_logical_replication_slot.

test_pub=# SELECT * FROM pg_create_logical_replication_slot('myslot', 'pgoutput');
 slot_name | lsn
-----------+-----------
 myslot | 0/1905930
(1 row)

Pada server subscriber, kita akan mengasosiasikan subscription dengan slot name yang baru dibuat.

test_sub=# ALTER SUBSCRIPTION sub1 SET (slot_name='myslot');
ALTER SUBSCRIPTION

Lalu, kita akan memperbarui subscription dan mengaktifkan replikasi seperti sebelumnya.

test_sub=# ALTER SUBSCRIPTION sub1 ENABLE;
ALTER SUBSCRIPTION
test_sub=# ALTER SUBSCRIPTION sub1 REFRESH PUBLICATION;
ALTER SUBSCRIPTION

Dalam keseluruhan, contoh-contoh di atas menunjukkan bahwa membuat slot replikasi logical secara manual dapat menjadi tahap penting dalam penggunaan replication logical PostgreSQL.