Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Replikasi logis
Replikasi logis adalah metode mereplikasi objek data dan perubahannya berdasarkan identitas replikasi objek dan perubahannya. Replikasi logis menggunakan model publikasi dan berlangganan di mana satu atau lebih pelanggan berlangganan satu atau lebih publikasi pada node penerbit. Pelanggan menarik data dari publikasi yang mereka berlangganan.
Replikasi logis memberi Anda kontrol halus atas replikasi dan keamanan data. Anda dapat menggunakan replikasi logis dalam kasus penggunaan berikut:
Mereplikasi antara berbagai versi utama PostgreSQL
Mereplikasi antara instance PostgreSQL pada platform yang berbeda (misalnya, Linux ke Windows)
Arsitektur
Langkah-langkah alur kerja berikut menunjukkan cara kerja arsitektur replikasi logis:
Anda mengambil snapshot data pada database penerbit dan menyalin data itu ke database pelanggan.
Perubahan dalam database penerbit dikirim ke pelanggan secara real time.
Pelanggan menerapkan data dalam urutan yang sama dengan penerbit sehingga konsistensi transaksional dijamin untuk publikasi dalam satu langganan.
Publikasi dapat didefinisikan pada contoh utama (penerbit). Publikasi adalah serangkaian perubahan yang dihasilkan dari tabel atau sekelompok tabel. Anda dapat memilih perubahan dari kombinasi operasi INSERT, UPDATE, DELETE, dan TRUNCATE. Secara default, semua perubahan ini direplikasi ke database pelanggan. Ini berbeda dengan replikasi fisik, di mana alamat blok yang tepat digunakan untuk byte-by-byte replikasi.
Tabel yang diterbitkan harus memiliki IDENTITAS REPLIKA yangfull
. Ini berarti seluruh baris menjadi kuncinya. Kami menyarankan Anda mengatur identitas replika full
sebagai upaya terakhir karena pengaturan ini tidak efisien.
Langganan adalah sisi hilir dari replikasi logis. Node di mana langganan didefinisikan disebut sebagai pelanggan. Langganan mendefinisikan koneksi ke database lain dan kumpulan publikasi (satu atau lebih) yang ingin dilanggankannya.
Pengaturan konfigurasi
Konfigurasi berikut diperlukan untuk pengaturan penerbit:
Setel
wal_level
kelogical
.Atur
max_replication_slots
untuk mengakomodasi setidaknya jumlah langganan yang diharapkan untuk terhubung dan beberapa slot cadangan untuk sinkronisasi tabel.Atur
max_wal_senders
untuk mengakomodasimax_replication_slots
dan jumlah replika fisik Anda.
Konfigurasi berikut diperlukan untuk pengaturan pelanggan:
Atur
max_replication_slots
untuk mengakomodasi jumlah langganan paling sedikit yang Anda rencanakan untuk ditambahkan ke pelanggan dan beberapa langganan cadangan untuk sinkronisasi tabel.Atur
max_logical_replication_workers
untuk mengakomodasi setidaknya jumlah langganan dan beberapa pekerja cadangan untuk sinkronisasi tabel.Setel
max_worker_processes
setidaknya ke (max_logical_replication_workers
+1
).
Setiap langganan menerima perubahan melalui satu slot replikasi.
Langkah-langkah berikut menunjukkan cara melakukan replikasi logis:
Buat penerbit dengan menggunakan perintah CREATE PUBLICATION
untuk sekelompok tabel (yang akan menjadi bagian dari replikasi) dalam database sumber. Buat pelanggan dengan menggunakan perintah CREATE SUBSCRIPTION
, lalu berikan detail publikasi saat Anda membuat pelanggan. Pemuatan data awal secara otomatis dimulai dari database sumber ke database target.
Data perubahan yang ditangkap oleh slot replikasi direplikasi ke database target.
Gunakan pg_stat_replication
(tabel katalog) untuk memeriksa status replikasi. Gunakan pg_stat_replication_slots untuk memeriksa slot replikasi.
Untuk informasi selengkapnya, lihat Menggunakan replikasi logis untuk mereplikasi postingan Amazon RDS for PostgreSQL terkelola dan Amazon Aurora ke PostgreSQL yang dikelola
Batasan
Kami menyarankan Anda mempertimbangkan batasan berikut dari metode replikasi logis sebelum memulai migrasi Anda:
Replikasi logis saat ini memiliki batasan dan kesenjangan fungsionalitas paling banyak.
Replikasi logis tidak dapat mereplikasi bahasa definisi data (DDL), urutan, dan operasi objek besar. Tindakan memotong (yang berlaku untuk tabel dengan kunci asing) harus menyertakan tabel terkait dalam langganan yang sama.
Untuk informasi lebih lanjut tentang keterbatasan replikasi logis, lihat 31.6. Pembatasan