Slot Replikasi yang Dibuat oleh PGD
Pada node master PGD, slot replikasi berikut dibuat oleh PGD:
- Satu slot grup, bernama
bdr_<nama database>_<nama grup> - N-1 slot node, bernama
bdr_<nama database>_<nama grup>_<nama node>, di mana N adalah jumlah total node PGD dalam klaster, termasuk standby logis langsung jika ada.
Peringatan: Jangan hapus slot tersebut. PGD membuat dan mengelolanya, dan menghapusnya saat diperlukan.
Di sisi lain, Anda dapat membuat atau menghapus slot replikasi yang diperlukan oleh perangkat lunak seperti Barman atau replikasi logis menggunakan perintah yang sesuai tanpa mempengaruhi PGD. Jangan memulai nama slot yang digunakan oleh perangkat lunak lain dengan awalan bdr_.
Sebagai contoh, dalam klaster yang terdiri dari tiga node alpha, beta, dan gamma, di mana PGD digunakan untuk mereplikasi database mydb dan grup PGD disebut mygroup:
- Node
alphamemiliki tiga slot:- Satu slot grup bernama
bdr_mydb_mygroup - Dua slot node bernama
bdr_mydb_mygroup_betadanbdr_mydb_mygroup_gamma
- Satu slot grup bernama
- Node
betamemiliki tiga slot:- Satu slot grup bernama
bdr_mydb_mygroup - Dua slot node bernama
bdr_mydb_mygroup_alphadanbdr_mydb_mygroup_gamma
- Satu slot grup bernama
- Node
gammamemiliki tiga slot:- Satu slot grup bernama
bdr_mydb_mygroup - Dua slot node bernama
bdr_mydb_mygroup_alphadanbdr_mydb_mygroup_beta
- Satu slot grup bernama
Slot Replikasi Grup
Slot grup adalah slot internal yang digunakan oleh PGD terutama untuk melacak posisi aman tertua yang telah dicapai oleh node mana pun dalam grup PGD (termasuk semua standby logis) untuk replikasi keluar dari node ini.
Nama slot grup diberikan oleh fungsi bdr_group_slot_name().
Slot grup dapat:
- Bergabung dengan node baru ke grup PGD tanpa harus semua node yang ada aktif (meskipun mayoritas node harus aktif). Proses ini tidak menyebabkan kehilangan data jika node yang mati saat penggabungan mulai mereplikasi lagi.
- Memisahkan node dari klaster secara konsisten, meskipun beberapa node belum sepenuhnya sinkron dengan node yang dipisahkan.
- Menahan titik pembekuan untuk menghindari kehilangan beberapa konflik.
- Menjaga snapshot historis untuk snapshot berbasis waktu.
Slot grup biasanya tidak aktif dan dimajukan hanya secara periodik sebagai respons terhadap pesan kemajuan Raft dari node lain.
Peringatan: Jangan hapus slot grup. Meskipun biasanya tidak aktif, slot ini tetap vital untuk operasi klaster PGD yang tepat. Jika Anda menghapusnya, maka beberapa atau semua fitur dapat berhenti bekerja atau menghasilkan hasil yang salah.
Hash Pengenal Panjang
Nama slot replikasi, seperti pengenal PostgreSQL lainnya, tidak boleh lebih panjang dari 63 byte. PGD menangani hal ini dengan memperpendek nama database, nama grup PGD, dan nama node jika nama slot yang dihasilkan terlalu panjang untuk batas tersebut. Pemendekan pengenal dilakukan dengan mengganti bagian akhir string dengan hash dari string itu sendiri.
Sebagai contoh, pertimbangkan klaster yang mereplikasi database bernama db20xxxxxxxxxxxxxxxx (20 byte) menggunakan grup PGD bernama group20xxxxxxxxxxxxx (20 byte). Slot replikasi logis yang terkait dengan node a30xxxxxxxxxxxxxxxxxxxxxxxxxxx (30 byte) disebut:
bdr_db20xxxx3597186_group20xbe9cbd0_a30xxxxxxxxxxxxx7f304a2 karena 3597186, be9cbd0, dan 7f304a2 masing-masing adalah hash dari db20xxxxxxxxxxxxxxxx, group20xxxxxxxxxxxxx, dan a30xxxxxxxxxxxxxxxxxxxxxxxxxx.