Sebelum menggunakan konektor PostgreSQL Change Data Capture (CDC), pastikan penyimpanan PostgreSQL upstream memenuhi persyaratan konfigurasi. Topik ini menjelaskan persyaratan konfigurasi dan operasi terkait untuk ApsaraDB RDS for PostgreSQL, Amazon RDS for PostgreSQL, dan database PostgreSQL yang dikelola sendiri.
Latar Belakang
Sebelum menggunakan konektor PostgreSQL CDC, pastikan penyimpanan PostgreSQL upstream memenuhi persyaratan konfigurasi. Topik ini menjelaskan cara mengonfigurasi ApsaraDB RDS for PostgreSQL, Amazon RDS for PostgreSQL, dan database PostgreSQL yang dikelola sendiri. Konektor PostgreSQL CDC menyinkronkan data berdasarkan mekanisme langganan logis PostgreSQL. Untuk informasi lebih lanjut, lihat Konsep Dekoding Logis dan Prinsip dan Praktik Terbaik dari Langganan Logis.
Database ApsaraDB RDS for PostgreSQL
Koneksi Jaringan antara ApsaraDB RDS for PostgreSQL dan Ververica Platform (VVP)
Jika ApsaraDB RDS for PostgreSQL dan VVP berada di virtual private cloud (VPC) yang sama dalam wilayah yang sama, keduanya terhubung secara otomatis.
Jika ApsaraDB RDS for PostgreSQL dan VVP berada di jaringan yang berbeda, Anda harus menetapkan koneksi jaringan menggunakan metode seperti VPN Gateway. Untuk informasi lebih lanjut, lihat Bagaimana Realtime Compute for Apache Flink Mengakses Internet? dan Bagaimana Realtime Compute for Apache Flink Mengakses Layanan Lintas VPC?.
Konfigurasikan daftar putih alamat IP untuk ApsaraDB RDS for PostgreSQL agar VVP dapat mengaksesnya. Untuk informasi lebih lanjut, lihat Konfigurasikan Daftar Putih Alamat IP.
Konfigurasi Server ApsaraDB RDS for PostgreSQL
Versi yang Didukung
Hanya data dari PostgreSQL 10, PostgreSQL 11, PostgreSQL 12, PostgreSQL 13, PostgreSQL 14, PostgreSQL 15, dan PostgreSQL 16 yang dapat disinkronkan. Anda dapat menjalankan perintah
select version()untuk menanyakan versi PostgreSQL.Dekoding Logis
Konfigurasikan wal_level = logical untuk mengaktifkan dekoding logis. Untuk informasi lebih lanjut, lihat Modifikasi Parameter Instance ApsaraDB RDS for PostgreSQL. Jika konfigurasi berhasil, Anda dapat menguji fitur ini berdasarkan contoh yang dijelaskan di Dekoding Logis.
Pastikan pengaturan REPLICA IDENTITY tabel yang datanya perlu disinkronkan adalah FULL.
Eksekusi pernyataan SQL berikut untuk melihat atau memodifikasi pengaturan REPLICA IDENTITY:
-- Lihat pengaturan REPLICA IDENTITY. SELECT CASE relreplident WHEN'd'THEN'default' WHEN'n'THEN'nothing' WHEN'f'THEN'full' WHEN'i'THEN'index' ENDASreplica_identity FROMpg_class WHEREoid='mytablename'::regclass; -- Modifikasi pengaturan REPLICA IDENTITY. ALTERTABLEmytablenameREPLICAIDENTITYFULL;
Plug-in Sinkronisasi Data
Plugin logical decoding wal2json hanya didukung ketika versi mesin utama instans ApsaraDB RDS for PostgreSQL adalah PostgreSQL 11, PostgreSQL 12, atau PostgreSQL 13. Plugin pgoutput hanya didukung ketika versi mesin utama instans ApsaraDB RDS for PostgreSQL adalah PostgreSQL 10 atau lebih baru. Kami merekomendasikan penggunaan pgoutput dan decodebuf. Untuk informasi selengkapnya, cari opsi
decoding.plugin.namepada topik PostgreSQL CDC (pratinjau publik).CatatanJika menggunakan plug-in pgoutput untuk menyinkronkan data, pastikan akun yang digunakan adalah akun istimewa. Untuk informasi lebih lanjut, lihat Buat Akun.
Amazon RDS for PostgreSQL
Koneksi Jaringan antara Amazon RDS for PostgreSQL dan VVP
Untuk menetapkan koneksi jaringan antara Amazon RDS for PostgreSQL dan VVP, izinkan VVP mengakses Amazon RDS for PostgreSQL melalui Internet. Untuk informasi lebih lanjut, lihat Bagaimana Realtime Compute for Apache Flink Mengakses Internet? dan Mengontrol Akses dengan Grup Keamanan.
Konfigurasi Server Amazon RDS for PostgreSQL
Versi yang Didukung
Hanya data dari PostgreSQL 10, PostgreSQL 11, PostgreSQL 12, PostgreSQL 13, PostgreSQL 14, PostgreSQL 15, dan PostgreSQL 16 yang dapat disinkronkan. Anda dapat menjalankan perintah
select version()untuk menanyakan versi PostgreSQL.Dekoding Logis
Tetapkan parameter rds.logical_replication menjadi 1.
Pastikan nilai parameter wal_level adalah logical. Secara default, jika parameter rds.logical_replication diatur menjadi 1, parameter wal_level akan otomatis diatur menjadi logical.
Pastikan pengaturan REPLICA IDENTITY tabel yang datanya perlu disinkronkan adalah FULL.
Eksekusi pernyataan SQL berikut untuk melihat atau memodifikasi pengaturan REPLICA IDENTITY:
-- Lihat pengaturan REPLICA IDENTITY. SELECTCASErelreplident WHEN'd'THEN'default' WHEN'n'THEN'nothing' WHEN'f'THEN'full' WHEN'i'THEN'index' ENDASreplica_identity FROMpg_class WHEREoid='mytablename'::regclass; -- Modifikasi pengaturan REPLICA IDENTITY. ALTERTABLEmytablenameREPLICAIDENTITYFULL;Persyaratan Peran Akun
Secara default, hanya akun manajemen Amazon Web Services (AWS) yang memiliki peran rds_replication pada Amazon RDS for PostgreSQL. Pengguna dengan peran ini dapat mengelola slot logis dan membaca data streaming menggunakan slot logis. Jika ingin mengaktifkan replikasi logis menggunakan akun lain, berikan peran rds_replication kepada akun tersebut. Contohnya, Anda dapat memberikan peran rds_replication kepada pengguna <my_user>. Pemberian peran ini hanya dapat dilakukan oleh pengguna dengan izin superuser. Jika ingin membuat snapshot awal menggunakan akun lain, berikan akun tersebut izin SELECT pada tabel yang ingin ditangkap.
Plug-in Sinkronisasi Data
Gunakan plug-in pgoutput untuk sinkronisasi data.
Database PostgreSQL yang dikelola sendiri
Koneksi Jaringan antara Database PostgreSQL yang Dikelola Sendiri dan VVP
Jika database PostgreSQL yang dikelola sendiri diterapkan di Alibaba Cloud dan berada di VPC yang sama dengan VVP, koneksi jaringan dibuat secara otomatis.
Jika database PostgreSQL yang dikelola sendiri tidak diterapkan di Alibaba Cloud, izinkan VVP mengakses alamat IP publik database PostgreSQL yang dikelola sendiri. Dalam hal ini, hubungkan database PostgreSQL yang dikelola sendiri dan VVP menggunakan VPN Gateway. Untuk informasi lebih lanjut, lihat Bagaimana Realtime Compute for Apache Flink Mengakses Internet?. Modifikasi file pg_hba.conf untuk mengizinkan VVP mengakses database PostgreSQL yang dikelola sendiri. Untuk informasi lebih lanjut, lihat Perbarui File pg_hba.conf.
Konfigurasi Server PostgreSQL yang Dikelola Sendiri
Versi yang Didukung
Hanya data dari PostgreSQL 9.6, PostgreSQL 10, PostgreSQL 11, PostgreSQL 12, PostgreSQL 13, PostgreSQL 14, PostgreSQL 15, dan PostgreSQL 16 yang dapat disinkronkan. Anda dapat menjalankan perintah
select version()untuk menanyakan versi PostgreSQL.Dekoding Logis
Pastikan nilai parameter wal_level adalah logical. Modifikasi file postgresql.conf dan mulai ulang database.
Pastikan pengaturan REPLICA IDENTITY tabel yang datanya perlu disinkronkan adalah FULL.
Eksekusi pernyataan SQL berikut untuk melihat atau memodifikasi pengaturan REPLICA IDENTITY:
-- Lihat pengaturan REPLICA IDENTITY. SELECT CASE relreplident WHEN 'd' THEN 'default' WHEN 'n' THEN 'nothing' WHEN 'f' THEN 'full' WHEN 'i' THEN 'index' END AS replica_identity FROM pg_class WHERE oid = 'mytablename'::regclass; -- Modifikasi pengaturan REPLICA IDENTITY. ALTER TABLE mytablename REPLICA IDENTITY FULL;Buat akun dan berikan akun tersebut izin untuk menyinkronkan data.
Akun sinkronisasi data harus memiliki izin REPLICATION dan LOGIN, serta izin SELECT untuk menyinkronkan data tabel.
CREATE ROLE <replication_user> REPLICATION LOGIN; GRANT SELECT ON <table_name> TO <name>;
Plug-in Sinkronisasi Data
Secara default, plug-in pgoutput diinstal di PostgreSQL 10 dan setelahnya. Jika menggunakan versi PostgreSQL lain atau menginstal plug-in lain untuk sinkronisasi data, ikuti instruksi di Instalasi Plug-in Output Dekoding Logis untuk PostgreSQL.
Jika menggunakan plug-in pgoutput sebagai alat sinkronisasi, pastikan akun sinkronisasi data adalah pemilik tabel yang datanya perlu disinkronkan. Untuk memastikan bahwa akun sinkronisasi data adalah pemilik tabel yang datanya perlu disinkronkan, lakukan langkah-langkah berikut:
-- 1. Buat grup sinkronisasi. CREATE ROLE <replication_group>; -- 2. Tambahkan pemilik asli tabel ke grup sinkronisasi. GRANT REPLICATION_GROUP TO <original_owner>; -- 3. Tambahkan akun sinkronisasi data ke grup sinkronisasi. GRANT REPLICATION_GROUP TO <replication_user>; -- 4. Transfer izin relevan ke grup sinkronisasi. ALTER TABLE <table_name> OWNER TO REPLICATION_GROUP;CatatanDalam hal ini, akun sinkronisasi data hanya merupakan pemilik satu tabel. Oleh karena itu, atur parameter debezium.publication.autocreate.mode di klausa WITH menjadi filtered. Jika operasi yang dilakukan untuk mengonfigurasi izin relevan untuk setiap tabel kompleks, Anda dapat langsung memberikan izin pg_monitor kepada akun sinkronisasi data.
GRANT pg_monitor TO <replication_user>;