

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

# Menyiapkan replikasi logis PostgreSQL dengan cluster DB untuk Amazon RDS Multi-AZ
<a name="USER_MultiAZDBCluster_LogicalRepl"></a>

Dengan menggunakan replikasi logis PostgreSQL dengan cluster DB Multi-AZ Anda, Anda dapat mereplikasi dan menyinkronkan tabel individual daripada seluruh instance database. Replikasi logis menggunakan model penerbit dan berlangganan untuk mereplikasi perubahan dari sumber ke satu atau lebih penerima. Hal ini bekerja dengan menggunakan catatan perubahan dari log write-ahead PostgreSQL (WAL). Untuk informasi selengkapnya, lihat [Melakukan replikasi logis untuk Amazon RDS for PostgreSQL](PostgreSQL.Concepts.General.FeatureSupport.LogicalReplication.md).

Saat Anda membuat slot replikasi logis baru pada instance DB penulis dari cluster Multi-AZ DB, slot disalin secara asinkron ke setiap instans DB pembaca di cluster. Slot pada instans DB pembaca terus disinkronkan dengan yang ada di instans DB penulis.

Replikasi logis didukung untuk cluster Multi-AZ DB yang menjalankan RDS untuk PostgreSQL versi 14.8-R2 dan lebih tinggi, dan 15.3-R2 dan lebih tinggi.

**catatan**  
Selain fitur replikasi logis PostgreSQL asli, cluster Multi-AZ DB yang menjalankan RDS untuk PostgreSQL juga mendukung ekstensi. `pglogical`

Untuk informasi selengkapnya tentang fitur replikasi logis PostgreSQL, lihat [Logical replication](https://www.postgresql.org/docs/current/logical-replication.html) dalam dokumentasi PostgreSQL.

**Topics**
+ [Prasyarat](#multi-az-db-clusters-logical-replication-prereqs)
+ [Menyiapkan replikasi logis](#multi-az-db-clusters-logical-replication)
+ [Batasan dan rekomendasi](#multi-az-db-clusters-logical-replication-limitations)

## Prasyarat
<a name="multi-az-db-clusters-logical-replication-prereqs"></a>

Untuk mengkonfigurasi replikasi logis PostgreSQL Multi-AZ untuk cluster DB, Anda harus memenuhi prasyarat berikut.
+ Akun pengguna Anda harus menjadi anggota `rds_superuser` grup dan memiliki `rds_superuser` hak istimewa. Untuk informasi selengkapnya, lihat [Memahami peran dan izin PostgreSQL](Appendix.PostgreSQL.CommonDBATasks.Roles.md).
+ Cluster Multi-AZ DB Anda harus dikaitkan dengan grup parameter cluster DB kustom sehingga Anda dapat mengonfigurasi nilai parameter yang dijelaskan dalam prosedur berikut. Untuk informasi selengkapnya, lihat [Bekerja dengan grup parameter cluster DB untuk cluster Multi-AZ DB](USER_WorkingWithDBClusterParamGroups.md).

## Menyiapkan replikasi logis
<a name="multi-az-db-clusters-logical-replication"></a>

Untuk mengatur replikasi logis untuk cluster Multi-AZ DB, Anda mengaktifkan parameter tertentu dalam grup parameter cluster DB terkait, lalu membuat slot replikasi logis.

**catatan**  
Dimulai dengan PostgreSQL versi 16, Anda dapat menggunakan instance DB pembaca dari Multi-AZ cluster DB untuk replikasi logis.

**Untuk mengatur replikasi logis untuk RDS untuk PostgreSQL DB cluster Multi-AZ**

1. Buka grup parameter cluster DB kustom yang terkait dengan RDS Anda untuk PostgreSQL Multi-AZ DB cluster. 

1. Di bidang pencarian **Parameter**, cari parameter `rds.logical_replication` statis dan atur nilainya ke `1`. Perubahan parameter ini dapat meningkatkan pembuatan WAL, jadi aktifkan hanya saat Anda menggunakan slot logis.

1. Sebagai bagian dari perubahan ini, konfigurasi parameter klaster DB berikut.
   + `max_wal_senders`
   + `max_replication_slots`
   + `max_connections`

   Tergantung penggunaan yang Anda harapkan, Anda mungkin juga perlu mengubah nilai parameter berikut. Namun, dalam banyak kasus, nilai default sudah cukup.
   + `max_logical_replication_workers`
   + `max_sync_workers_per_subscription`

1. Reboot cluster Multi-AZ DB agar nilai parameter diterapkan. Untuk petunjuk, lihat [Mem-boot ulang instans Multi-AZ DB cluster dan reader DB untuk Amazon RDS](multi-az-db-clusters-concepts-rebooting.md).

1. Buat slot replikasi logis pada instance DB penulis dari cluster Multi-AZ DB seperti yang dijelaskan dalam[Menggunakan slot replikasi logis](PostgreSQL.Concepts.General.FeatureSupport.LogicalReplication.md#PostgreSQL.Concepts.General.FeatureSupport.LogicalReplicationSlots). Proses ini mengharuskan Anda menentukan plugin decoding. Saat ini, RDS untuk PostgreSQL mendukung plugin `test_decoding`, `wal2json`, dan `pgoutput` yang dikirimkan dengan PostgreSQL.

   Slot disalin secara asinkron ke setiap instans DB pembaca di klaster.

1. Verifikasi status slot pada semua instance DB pembaca dari cluster Multi-AZ DB. Untuk melakukannya, periksa `pg_replication_slots` tampilan pada semua instans DB pembaca dan pastikan bahwa `confirmed_flush_lsn` status membuat kemajuan saat aplikasi secara aktif mengonsumsi perubahan logis.

   Perintah berikut menunjukkan cara memeriksa status replikasi pada instans DB pembaca.

   ```
   % psql -h test-postgres-instance-2.abcdefabcdef.us-west-2.rds.amazonaws.com
   
   postgres=> select slot_name, slot_type, confirmed_flush_lsn from pg_replication_slots;
     slot_name   | slot_type | confirmed_flush_lsn
   --------------+-----------+---------------------
    logical_slot | logical   | 32/{{D0001700}}
   (1 row)
   
   postgres=> select slot_name, slot_type, confirmed_flush_lsn from pg_replication_slots;
     slot_name   | slot_type | confirmed_flush_lsn
   --------------+-----------+---------------------
    logical_slot | logical   | 32/{{D8003628}}
   (1 row)
   
   % psql -h test-postgres-instance-3.abcdefabcdef.us-west-2.rds.amazonaws.com
   
   postgres=> select slot_name, slot_type, confirmed_flush_lsn from pg_replication_slots;
     slot_name   | slot_type | confirmed_flush_lsn
   --------------+-----------+---------------------
    logical_slot | logical   | 32/{{D0001700}}
   (1 row)
   
   postgres=> select slot_name, slot_type, confirmed_flush_lsn from pg_replication_slots;
     slot_name   | slot_type | confirmed_flush_lsn
   --------------+-----------+---------------------
    logical_slot | logical   | 32/{{D8003628}}
   (1 row)
   ```

Setelah Anda menyelesaikan tugas replikasi Anda, hentikan proses replikasi, jatuhkan slot replikasi, dan matikan replikasi logis. Untuk mematikan replikasi logis, ubah grup parameter klaster DB Anda dan atur nilai `rds.logical_replication` kembali ke `0`. Boot ulang klaster agar perubahan parameter diterapkan.

## Batasan dan rekomendasi
<a name="multi-az-db-clusters-logical-replication-limitations"></a>

Keterbatasan dan rekomendasi berikut berlaku untuk menggunakan replikasi logis dengan cluster Multi-AZ DB yang menjalankan PostgreSQL versi 16:
+ Anda hanya dapat menggunakan instance DB penulis untuk membuat atau menjatuhkan slot replikasi logis. Misalnya, `CREATE SUBSCRIPTION` perintah harus menggunakan titik akhir penulis cluster dalam string koneksi host.
+ Anda harus menggunakan titik akhir penulis cluster selama sinkronisasi tabel atau sinkronisasi ulang. Misalnya, Anda dapat menggunakan perintah berikut untuk menyinkronkan ulang tabel yang baru ditambahkan:

  ```
  Postgres=>ALTER SUBSCRIPTION {{subscription-name}} CONNECTION host={{writer-endpoint}}
  Postgres=>ALTER SUBSCRIPTION {{subscription-name}} REFRESH PUBLICATION
  ```
+ Anda harus menunggu sinkronisasi tabel selesai sebelum menggunakan instance DB pembaca untuk replikasi logis. Anda dapat menggunakan tabel `[pg\_subscription\_rel](https://www.postgresql.org/docs/current/catalog-pg-subscription-rel.html)` katalog untuk memantau sinkronisasi tabel. Sinkronisasi tabel selesai ketika `srsubstate` kolom diatur ke ready (`r`).
+ Sebaiknya gunakan titik akhir instance untuk koneksi replikasi logis setelah sinkronisasi tabel awal selesai. Perintah berikut mengurangi beban pada instance DB penulis dengan membongkar replikasi ke salah satu instance DB pembaca:

  ```
  Postgres=>ALTER SUBSCRIPTION {{subscription-name}} CONNECTION host={{reader-instance-endpoint}}
  ```

  Anda tidak dapat menggunakan slot yang sama pada lebih dari satu instans DB sekaligus. Ketika dua atau lebih aplikasi mereplikasi perubahan logis dari instance DB yang berbeda di cluster, beberapa perubahan mungkin hilang karena failover cluster atau masalah jaringan. Dalam situasi ini, Anda dapat menggunakan titik akhir instance untuk replikasi logis dalam string koneksi host. Aplikasi lain yang menggunakan konfigurasi yang sama akan menampilkan pesan kesalahan berikut:

  ```
  replication slot {{slot_name}} is already active for PID {{x}} providing immediate feedback.
  ```
+ Saat menggunakan `pglogical` ekstensi, Anda hanya dapat menggunakan titik akhir penulis cluster. Ekstensi memiliki keterbatasan yang diketahui yang dapat membuat slot replikasi logis yang tidak digunakan selama sinkronisasi tabel. Slot replikasi basi menyimpan file write-ahead log (WAL) dan dapat menyebabkan masalah ruang disk.