Konfigurasi Replikasi Logis
- Buat slot replikasi logis.
- Konfigurasi slot replikasi logis.
Membuat Slot Replikasi Logis
Kami merekomendasikan membuat slot replikasi logis melalui panel kontrol atau melalui API database cloud. Jika Anda membuat slot melalui klien yang terhubung ke database, kami tidak menjamin slot akan berfungsi.
Jumlah maksimum slot replikasi logis adalah 26.
Hanya pengguna dengan peran dbaas_replication yang dapat membuat slot - peran ini secara otomatis diberikan kepada pemilik database, dan tidak dapat diberikan kepada pengguna lain.
- Buka panel kontrol penyedia layanan cloud.
- Navigasi ke layanan database cloud.
- Buka halaman klaster dan pilih database yang diinginkan.
- Buka kartu database.
- Di blok Replication Slots, klik Tambah Slot Replikasi.
- Masukkan nama slot atau biarkan nama default.
- Klik Buat.
Konfigurasi Replikasi Logis Menggunakan Slot
Setelah slot dibuat, Anda harus mengonfigurasi replikasi logis antara database sumber dan database tujuan. Database penerima dapat berada di Managed Databases penyedia layanan atau di penyimpanan eksternal.
- Buat publikasi di database sumber:
Tentukan:CREATE PUBLICATION <nama_publikasi> FOR TABLE <nama_tabel>;<nama_publikasi>- nama publikasi<nama_tabel>- nama tabel
- Opsional: jika perlu, tambahkan tabel tambahan ke publikasi:
TentukanALTER PUBLICATION <nama_publikasi> ADD TABLE <nama_tabel_tambahan>;<nama_tabel_tambahan>- nama tabel. - Buat skema data dari semua tabel yang direplikasi di database penerima dan dump skema di database sumber menggunakan utilitas
pg_dump:
Tentukan:pg_dump \"host=<host> port=<port> dbname=<nama_database> user=<nama_pengguna>\" --schema-only --no-privileges --no-subscriptions --no-publications -Fd -f <direktori_dump><host>- Alamat IP atau nama DNS node master klaster tempat database sumber berada<port>- port<nama_database>- nama database sumber<nama_pengguna>- nama pemilik database sumber<direktori_dump>- direktori untuk dump
- Pulihkan skema dari dump ke database penerima menggunakan utilitas
pg_restore:
Tentukan:pg_restore -Fd -v --single-transaction -s --no-privileges -O -h <host> -U <nama_pengguna> -p <port> -d <nama_database> <direktori_dump><host>- Alamat IP atau nama DNS node master klaster tempat database penerima berada<nama_pengguna>- nama pengguna database penerima<nama_database>- nama database penerima<port>- port klaster tempat database penerima berada<direktori_dump>- direktori dengan dump
- Buat langganan di database penerima atas nama pengguna dengan peran
dbaas_replication:
Tentukan:CREATE SUBSCRIPTION <nama_langganan> CONNECTION 'host=<host> port=<port> dbname=<nama_database> user=<nama_pengguna> password=<kata_sandi> sslmode=verify-ca' PUBLICATION <nama_publikasi> WITH (copy_data=true, create_slot=false, enabled=true, slot_name=<nama_slot_logis>);<nama_langganan>- nama langganan<host>- Alamat IP atau nama DNS node master klaster tempat database sumber berada<port>- port klaster tempat database sumber berada<nama_pengguna>- nama pengguna database sumber<kata_sandi>- kata sandi pengguna<nama_database>- nama database sumber<nama_slot_logis>- nama slot replikasi logis
- Data yang ada akan muncul di tabel database penerima. Jika data baru ditambahkan ke tabel database sumber, data tersebut akan direplikasi secara otomatis.
- Untuk menghentikan replikasi logis, nonaktifkan langganan, lepaskan slot, dan hapus langganan:
Jika Anda memutuskan semua langganan dari slot, informasi akan menumpuk di slot dan menggunakan ruang disk. Jika slot tidak diperlukan, hapus slot tersebut.ALTER SUBSCRIPTION <nama_langganan> DISABLE;ALTER SUBSCRIPTION <nama_langganan> SET (slot_name=NONE);DROP SUBSCRIPTION <nama_langganan>;
Lihat Status Slot Replikasi Logis
- Buka panel kontrol penyedia layanan cloud.
- Navigasi ke layanan database cloud.
- Buka halaman klaster dan pilih database yang diinginkan.
- Buka kartu database.
- Di blok Replication Slots, pada baris slot, lihat status.
| Status | Deskripsi |
|---|---|
| CREATING | Slot sedang dibuat |
| ACTIVE | Slot sedang digunakan - slot memiliki konsumen, data dikirim ke database penerima |
| UNUSED | Slot tidak digunakan - slot tidak memiliki konsumen, data tidak ditransfer ke database penerima, menumpuk di slot replikasi dan menggunakan ruang disk tambahan. Jika Anda tidak lagi menggunakan slot replikasi, hapus slot tersebut. |
| DELETING | Slot sedang dihapus |
Periksa Konsumen Slot Replikasi Logis Menggunakan Kueri SQL
Untuk memeriksa apakah slot replikasi logis memiliki konsumen, kirimkan kueri SQL ke tampilan pg_replication_slots:
SELECT slot_name, pg_size_pretty(pg_wal_lsn_diff(pg_current_wal_lsn(),restart_lsn)) AS replicationSlotLag, active FROM pg_replication_slots;Contoh keluaran:
slot_name | replicationslotlag | active-----------------+--------------------+--------myslot1 | 129 GB | fmyslot2 | 704 MB | tmyslot3 | 624 MB | tKeterangan:
slot_name- nama slot replikasi logisreplicationslotlag- ukuran file WAL yang tidak akan dihapus secara otomatis pada checkpoint dan yang dapat digunakan oleh konsumen slot replikasi logisactive- nilai boolean yang menunjukkan apakah slot replikasi logis digunakan:f- slot tidak memiliki konsumen;t- slot memiliki konsumen
Jika Anda menggunakan PostgreSQL versi 13 atau lebih tinggi, Anda dapat membatasi ukuran maksimum file WAL yang disimpan menggunakan parameter max_slot_wal_keep_size. Perhatikan bahwa saat menggunakan parameter ini, log transaksi dapat dihapus sebelum konsumen membaca perubahan di slot replikasi logis.
Hapus Slot Replikasi Logis
Kami merekomendasikan untuk menghapus slot replikasi logis melalui panel kontrol atau melalui API database cloud. Jika Anda menghapus slot melalui klien yang terhubung ke database, slot mungkin tidak dihapus dengan benar.
- Buka panel kontrol penyedia layanan cloud.
- Navigasi ke layanan database cloud.
- Buka halaman klaster dan pilih database yang diinginkan.
- Buka kartu database.
- Di blok Replication Slots, pada baris slot, klik .