Topik ini menjelaskan cara menggunakan ekstensi pglogical dari PostgreSQL untuk mereplikasi data dari instance ApsaraDB RDS for PostgreSQL. Ekstensi ini menggunakan pola publikasi/berlangganan untuk mengimplementasikan replikasi aliran logis.
Prasyarat
Instance RDS Anda harus menjalankan PostgreSQL 10 atau yang lebih baru.
Instance RDS Anda harus menjalankan versi mesin minor 20230830 atau yang lebih baru. Jika instance RDS Anda menjalankan PostgreSQL 17, versi mesin minornya haruslah 20241030 atau yang lebih baru.
PentingEkstensi ini didukung pada versi mesin minor sebelum 20230830. Namun, ApsaraDB RDS berencana mengoptimalkan ekstensi rentan dalam pembaruan versi mesin minor demi manajemen ekstensi yang terstandarisasi dan peningkatan keamanan. Oleh karena itu, Anda tidak dapat membuat ekstensi ini untuk instance RDS yang menjalankan versi mesin minor sebelum 20230830. Untuk informasi lebih lanjut, lihat [Perubahan Produk/Perubahan Fitur] Batasan pembuatan ekstensi untuk instance ApsaraDB RDS for PostgreSQL.
Jika Anda sudah membuat ekstensi ini untuk instance RDS yang menjalankan versi mesin minor sebelum 20230830, Anda dapat terus menggunakannya.
Jika Anda membuat ekstensi ini untuk pertama kalinya atau perlu membuat ulang ekstensi untuk instance RDS Anda, Anda harus memperbarui versi mesin minor instance RDS ke versi terbaru. Untuk informasi lebih lanjut, lihat Perbarui versi mesin minor.
pglogical harus ditambahkan ke nilai parameter shared_preload_libraries instance RDS Anda.
Untuk informasi lebih lanjut tentang cara menambahkan pglogical ke nilai parameter shared_preload_libraries, lihat Ubah parameter instance ApsaraDB RDS for PostgreSQL.
CatatanSetelah Anda memodifikasi nilai parameter shared_preload_libraries dan menerapkan modifikasi, instance RDS Anda akan segera restart. Restart ini menyebabkan aplikasi Anda terputus dari instance RDS. Lanjutkan dengan hati-hati. Sebelum restart dipicu, rencanakan bisnis Anda dan pastikan aplikasi Anda dikonfigurasi untuk secara otomatis tersambung kembali ke database.
Informasi latar belakang
Ekstensi pglogical dari PostgreSQL adalah metode yang sangat efisien untuk mereplikasi data sebagai alternatif dari replikasi fisik dengan menggunakan pola publikasi/berlangganan. Ekstensi pglogical memberikan kecepatan replikasi yang lebih tinggi dibandingkan Slony, Bucardo, dan Londiste serta mendukung peningkatan lintas versi. Ekstensi ini cocok untuk skenario berikut:
Peningkatan versi mesin utama
Replikasi semua data dari database pada instance RDS Anda
Replikasi tabel, baris, dan kolom tertentu dengan menggunakan set replikasi
Agregasi dan penggabungan data dari beberapa server hulu
Gunakan ekstensi
Aktifkan ekstensi pglogical.
CREATE EXTENSION pglogical;Nonaktifkan ekstensi pglogical.
DROP EXTENSION pglogical;
Konfigurasikan replikasi aliran logis
Buat node penerbit pada penerbit.
CatatanAnda harus mengatur parameter
hostke 127.0.0.1 untuk node penerbit. Anda dapat mengeksekusi pernyataanSHOW PORT;untuk mendapatkan nilai parameterportuntuk node penerbit.SELECT pglogical.create_node( node_name := 'provider', dsn := 'host=127.0.0.1 port=<Nomor Port> dbname=test user=provider_user password=provider_pass' );Konfigurasikan set replikasi.
Tambahkan semua tabel dalam skema public ke set replikasi default.
SELECT pglogical.replication_set_add_all_tables('default', ARRAY['public']);CatatanSet replikasi digunakan untuk mereplikasi hanya tabel yang ditentukan dan hanya perubahan tertentu pada tabel-tabel tersebut dari penerbit ke pelanggan.
Set replikasi default digunakan untuk mereplikasi semua tabel dan semua perubahan pada tabel-tabel tersebut dari penerbit ke pelanggan. Untuk informasi lebih lanjut, lihat dokumentasi pglogical.
Buat node pelanggan pada pelanggan.
CatatanAnda harus mengatur parameter
hostke 127.0.0.1 untuk node pelanggan. Anda dapat mengeksekusi pernyataanSHOW PORT;untuk mendapatkan nilai parameterportuntuk node pelanggan.SELECT pglogical.create_node( node_name := 'subscriber', dsn := 'host=127.0.0.1 port=<Nomor Port> dbname=test user=subscriber_user password=subscriber_pass' );Buat langganan pada pelanggan.
CatatanParameter
hostharus diatur ke Titik akhir internal dari penerbit, sepertipgm-****.pg.rds.aliyuncs.com. Parameterportharus diatur ke Nomor port internal dari penerbit.Anda dapat melihat Titik akhir internal dan Nomor port internal dari instance RDS di konsol ApsaraDB RDS. Untuk informasi lebih lanjut, lihat Lihat dan ubah titik akhir dan nomor port instance ApsaraDB RDS for PostgreSQL.
SELECT pglogical.create_subscription( subscription_name := 'subscription', provider_dsn := 'host=<Titik akhir internal penyedia> port=<Nomor port internal penyedia> dbname=test user=provider_user password=provider_pass' );Setelah langganan dibuat, proses sinkronisasi dan replikasi dimulai di latar belakang.
Referensi
Untuk informasi lebih lanjut, lihat dokumentasi pglogical.