Melakukan replikasi logis untuk Amazon RDS untuk Postgre SQL - Layanan Basis Data Relasional Amazon

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Melakukan replikasi logis untuk Amazon RDS untuk Postgre SQL

Dimulai dengan versi 10.4, RDS untuk Postgre SQL mendukung publikasi dan SQL sintaks berlangganan yang diperkenalkan di Postgre 10. SQL Untuk mempelajari lebih lanjut, lihat Replikasi logis dalam dokumentasi SQL Postgre.

catatan

Selain fitur replikasi SQL logis Postgre asli yang diperkenalkan di Postgre SQL 10, RDS untuk SQL Postgre juga mendukung ekstensi. pglogical Untuk informasi selengkapnya, lihat Menggunakan pglogical untuk menyinkronkan data di seluruh instans.

Berikut ini, Anda dapat menemukan informasi tentang pengaturan replikasi logis RDS untuk instance Postgre SQL DB.

Memahami replikasi logis dan decoding logis

RDSuntuk Postgre SQL mendukung streaming perubahan log (WAL) write-ahead menggunakan slot replikasi logis SQL Postgre. Penggunaan decoding logis juga didukung. Anda dapat menyiapkan slot replikasi logis pada instans Anda dan mengalirkan perubahan basis data melalui slot ini ke klien seperti pg_recvlogical. Anda membuat slot replikasi logis di tingkat basis data, dan slot tersebut mendukung koneksi replikasi ke satu basis data.

Klien yang paling umum untuk replikasi SQL logis Postgre adalah AWS Database Migration Service atau host yang dikelola khusus pada instance Amazon. EC2 Slot replikasi logis tidak memiliki informasi tentang penerima aliran. Selain itu, target tidak perlu merupakan basis data replika. Jika Anda menyiapkan slot replikasi logis dan tidak membaca dari slot, data dapat ditulis dan mengisi penyimpanan instans DB Anda dengan cepat.

Anda mengaktifkan replikasi SQL logis Postgre dan decoding logis untuk RDS Amazon dengan parameter, jenis koneksi replikasi, dan peran keamanan. Klien untuk decoding logis dapat berupa klien apa pun yang dapat membuat koneksi replikasi ke database pada instance SQL Postgre DB.

Untuk mengaktifkan decoding logis RDS untuk instance SQL Postgre DB
  1. Pastikan akun pengguna yang Anda gunakan memiliki peran berikut:

    • Peran rds_superuser agar Anda dapat mengaktifkan replikasi logis

    • Peran rds_replication untuk memberikan izin guna mengelola slot logis dan mengalirkan data menggunakan slot logis

  2. Atur parameter statis rds.logical_replication ke 1. Sebagai bagian dari penerapan parameter ini, atur juga parameterwal_level, max_wal_senders, max_replication_slots, dan max_connections. Perubahan parameter ini dapat meningkatkan WAL generasi, jadi atur rds.logical_replication parameter hanya ketika Anda menggunakan slot logis.

  3. Boot ulang instans DB agar parameter rds.logical_replication statis berlaku.

  4. Buat slot replikasi logis sebagaimana dijelaskan di bagian selanjutnya. Proses ini mengharuskan Anda menentukan plugin decoding. Saat ini, RDS untuk Postgre SQL mendukung plugin keluaran test_decoding dan wal2json yang dikirimkan bersama Postgre. SQL

Untuk informasi lebih lanjut tentang decoding SQL logis Postgre, lihat dokumentasi Postgre. SQL

Menggunakan slot replikasi logis

Anda dapat menggunakan SQL perintah untuk bekerja dengan slot logis. Misalnya, perintah berikut membuat slot logis bernama test_slot menggunakan plugin SQL output Postgre default. test_decoding

SELECT * FROM pg_create_logical_replication_slot('test_slot', 'test_decoding'); slot_name | xlog_position -----------------+--------------- regression_slot | 0/16B1970 (1 row)

Untuk membuat daftar slot logis, gunakan perintah berikut.

SELECT * FROM pg_replication_slots;

Untuk membatalkan daftar slot logis, gunakan perintah berikut.

SELECT pg_drop_replication_slot('test_slot'); pg_drop_replication_slot ----------------------- (1 row)

Untuk contoh lebih lanjut tentang bekerja dengan slot replikasi logis, lihat Contoh decoding logis dalam dokumentasi Postgre. SQL

Setelah Anda membuat slot replikasi logis, Anda dapat memulai pengaliran. Contoh berikut menunjukkan bagaimana decoding logis dikontrol melalui protokol replikasi streaming. Contoh ini menggunakan program pg_recvlogical, yang termasuk dalam distribusi Postgre. SQL Untuk melakukan hal ini, autentikasi klien perlu disiapkan untuk memungkinkan koneksi replikasi.

pg_recvlogical -d postgres --slot test_slot -U postgres --host -instance-name.111122223333.aws-region.rds.amazonaws.com -f - --start

Untuk melihat konten tampilan pg_replication_origin_status, kueri fungsi pg_show_replication_origin_status.

SELECT * FROM pg_show_replication_origin_status(); local_id | external_id | remote_lsn | local_lsn ----------+-------------+------------+----------- (0 rows)