

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

# Menggunakan fitur PostgreSQL yang didukung oleh Amazon RDS for PostgreSQL
<a name="PostgreSQL.Concepts.General.FeatureSupport"></a>

Amazon RDS for PostgreSQL mendukung banyak fitur PostgreSQL yang paling umum. Misalnya, PostgreSQL memiliki fitur autovacuum yang melakukan pemeliharaan rutin pada basis data. Fitur autovacuum aktif secara default. Meskipun Anda dapat menonaktifkan fitur ini, kami sangat menyarankan Anda untuk tetap mengaktifkannya. Memahami fitur ini dan apa yang dapat Anda lakukan untuk memastikannya berfungsi sebagaimana mestinya adalah tugas dasar setiap DBA. Untuk informasi selengkapnya tentang autovacuum, lihat [](Appendix.PostgreSQL.CommonDBATasks.Autovacuum.md). Untuk mempelajari lebih lanjut tentang tugas DBA umum lainnya, [Tugas DBA umum untuk Amazon RDS for PostgreSQL](Appendix.PostgreSQL.CommonDBATasks.md). 

RDS for PostgreSQL juga mendukung ekstensi yang menambahkan fungsionalitas penting pada instans DB. Misalnya, Anda dapat menggunakan ekstensi PostGIS untuk bekerja dengan data spasial, atau menggunakan ekstensi pg\$1cron untuk menjadwalkan pemeliharaan dari dalam instans. Untuk informasi selengkapnya tentang ekstensi PostgreSQL, lihat [Menggunakan ekstensi PostgreSQL dengan Amazon RDS for PostgreSQL](Appendix.PostgreSQL.CommonDBATasks.Extensions.md). 

Pembungkus data asing adalah jenis ekstensi spesifik yang dirancang agar instans DB RDS for PostgreSQL Anda bekerja dengan basis data komersial atau jenis data lainnya. Untuk informasi selengkapnya tentang pembungkus data asing yang didukung untuk RDS for PostgreSQL, lihat [Bekerja dengan pembungkus data asing yang didukung untuk Amazon RDS for PostgreSQL](Appendix.PostgreSQL.CommonDBATasks.Extensions.foreign-data-wrappers.md). 

Berikut ini, Anda dapat menemukan informasi tentang beberapa fitur lain yang didukung oleh RDS for PostgreSQL. 

**Topics**
+ [Jenis data kustom dan enumerasi dengan RDS for PostgreSQL](PostgreSQL.Concepts.General.FeatureSupport.AlterEnum.md)
+ [Pemicu peristiwa untuk RDS for PostgreSQL](PostgreSQL.Concepts.General.FeatureSupport.EventTriggers.md)
+ [Halaman besar untuk RDS for PostgreSQL](PostgreSQL.Concepts.General.FeatureSupport.HugePages.md)
+ [Melakukan replikasi logis untuk Amazon RDS for PostgreSQL](PostgreSQL.Concepts.General.FeatureSupport.LogicalReplication.md)
+ [Mengkonfigurasi otentikasi IAM untuk koneksi replikasi logis](PostgreSQL.Concepts.General.FeatureSupport.IAMLogicalReplication.md)
+ [Disk RAM untuk stats\$1temp\$1directory](PostgreSQL.Concepts.General.FeatureSupport.RamDisk.md)
+ [Tablespace untuk RDS for PostgreSQL](PostgreSQL.Concepts.General.FeatureSupport.Tablespaces.md)
+ [Kolasi RDS for PostgreSQL untuk EBCDIC dan migrasi mainframe lainnya](PostgreSQL.Collations.mainframe.migration.md)
+ [Mengelola sinkronisasi slot logis untuk RDS untuk PostgreSQL](Appendix.PostgreSQL.CommonDBATasks.pglogical.slot.synchronization.md)

# Jenis data kustom dan enumerasi dengan RDS for PostgreSQL
<a name="PostgreSQL.Concepts.General.FeatureSupport.AlterEnum"></a>

PostgreSQL mendukung pembuatan jenis data kustom dan dapat digunakan dengan enumerasi. Untuk informasi selengkapnya tentang membuat dan bekerja dengan enumerasi serta jenis data lainnya, lihat [Enumerated types](https://www.postgresql.org/docs/14/datatype-enum.html) dalam dokumentasi PostgreSQL. 

Berikut ini adalah contoh pembuatan suatu jenis sebagai enumerasi lalu memasukkan nilai ke dalam tabel. 

```
CREATE TYPE rainbow AS ENUM ('red', 'orange', 'yellow', 'green', 'blue', 'purple');
CREATE TYPE
CREATE TABLE t1 (colors rainbow);
CREATE TABLE
INSERT INTO t1 VALUES ('red'), ( 'orange');
INSERT 0 2
SELECT * from t1;
colors
--------
red
orange
(2 rows)
postgres=> ALTER TYPE rainbow RENAME VALUE 'red' TO 'crimson';
ALTER TYPE
postgres=> SELECT * from t1;
colors
---------
crimson
orange
(2 rows)
```

# Pemicu peristiwa untuk RDS for PostgreSQL
<a name="PostgreSQL.Concepts.General.FeatureSupport.EventTriggers"></a>

Semua versi PostgreSQL saat ini mendukung pemicu peristiwa, dan begitu juga semua versi RDS yang tersedia untuk PostgreSQL. Anda dapat menggunakan akun pengguna utama (default, `postgres`) untuk membuat, memodifikasi, mengganti nama, dan menghapus pemicu peristiwa. Pemicu peristiwa berada di tingkat instans DB, sehingga dapat diterapkan ke semua basis data pada sebuah instans.

Misalnya, kode berikut membuat pemicu peristiwa yang mencetak pengguna saat ini di akhir setiap perintah bahasa definisi data (DDL).

```
CREATE OR REPLACE FUNCTION raise_notice_func()
    RETURNS event_trigger
    LANGUAGE plpgsql AS
$$
BEGIN
    RAISE NOTICE 'In trigger function: %', current_user;
END;
$$;

CREATE EVENT TRIGGER event_trigger_1 
    ON ddl_command_end
EXECUTE PROCEDURE raise_notice_func();
```

Untuk informasi lebih lanjut tentang pemicu peristiwa PostgreSQL, lihat [Event triggers](https://www.postgresql.org/docs/current/static/event-triggers.html) dalam dokumentasi PostgreSQL.

Ada beberapa batasan dalam penggunaan pemicu peristiwa PostgreSQL di Amazon RDS. Hal ini mencakup:
+ Anda tidak dapat membuat pemicu peristiwa pada replika baca. Namun, Anda dapat membuat pemicu peristiwa di sumber replika baca. Pemicu peristiwa kemudian disalin ke replika baca. Pemicu peristiwa pada replika baca tidak diaktifkan pada replika baca saat perubahan didorong dari sumber. Namun, jika replika baca dipromosikan, pemicu peristiwa yang ada aktif saat operasi basis data terjadi.
+ Untuk melakukan peningkatan versi utama ke instans DB PostgreSQL yang menggunakan pemicu peristiwa, hapus pemicu peristiwa sebelum meningkatkan instans tersebut.

# Halaman besar untuk RDS for PostgreSQL
<a name="PostgreSQL.Concepts.General.FeatureSupport.HugePages"></a>

*Halaman besar* adalah fitur manajemen memori yang mengurangi overhead saat instans DB menangani potongan besar memori yang berdekatan, seperti yang digunakan oleh buffer bersama. Fitur PostgreSQL ini didukung oleh semua versi RDS for PostgreSQL yang tersedia saat ini. Anda mengalokasikan halaman besar untuk aplikasi Anda menggunakan panggilan ke memori bersama `mmap` atau `SYSV`. RDS for PostgreSQL mendukung ukuran halaman 4-KB dan 2-MB. 

Anda dapat mengaktifkan atau menonaktifkan halaman besar dengan mengubah nilai parameter `huge_pages`. Fitur ini diaktifkan secara default untuk semua kelas instans DB selain kelas instans DB mikro, kecil, dan menengah.

RDS for PostgreSQL menggunakan halaman besar berdasarkan memori bersama yang tersedia. Jika instans DB tidak dapat menggunakan halaman besar karena batasan memori bersama, Amazon RDS mencegah dimulainya instans DB. Dalam kasus ini, Amazon RDS mengatur status instans DB ke parameter yang tidak kompatibel. Jika ini terjadi, Anda dapat mengatur parameter `huge_pages` ke `off` agar Amazon RDS dapat memulai instans DB.

Parameter `shared_buffers` adalah kunci untuk mengatur kumpulan memori bersama yang diperlukan untuk menggunakan halaman besar. Nilai default untuk parameter `shared_buffers` menggunakan basis data parameter makro. Makro ini mengatur persentase dari total 8 KB halaman yang tersedia untuk memori instans DB. Saat Anda menggunakan halaman besar, halaman tersebut berada dengan halaman besar. Amazon RDS menempatkan instans DB ke dalam status parameter yang tidak kompatibel jika parameter memori bersama diatur untuk memerlukan lebih dari 90 persen memori instans DB.

Untuk mempelajari lebih lanjut tentang manajemen memori PostgreSQL, lihat [Resource Consumption](https://www.postgresql.org/docs/current/static/runtime-config-resource.html) dalam dokumentasi PostgreSQL.

# Melakukan replikasi logis untuk Amazon RDS for PostgreSQL
<a name="PostgreSQL.Concepts.General.FeatureSupport.LogicalReplication"></a>

Dimulai dengan versi 10.4, RDS for PostgreSQL mendukung publikasi dan langganan sintaks yang diperkenalkan di PostgreSQL 10. Untuk mempelajari selengkapnya, lihat [Logical replication](https://www.postgresql.org/docs/current/logical-replication.html) dalam dokumentasi PostgreSQL. 

**catatan**  
Selain fitur replikasi logis PostgreSQL asli yang diperkenalkan di PostgreSQL 10, RDS for PostgreSQL juga mendukung ekstensi `pglogical`. Untuk informasi selengkapnya, lihat [Menggunakan pglogical untuk menyinkronkan data di seluruh instans](Appendix.PostgreSQL.CommonDBATasks.pglogical.md). 

Berikut ini, Anda dapat menemukan informasi tentang pengaturan replikasi logis untuk instans DB RDS for PostgreSQL. 

**Topics**
+ [Memahami replikasi logis dan decoding logis](#PostgreSQL.Concepts.General.FeatureSupport.LogicalDecoding)
+ [Menggunakan slot replikasi logis](#PostgreSQL.Concepts.General.FeatureSupport.LogicalReplicationSlots)
+ [Mereplikasi data tingkat tabel menggunakan replikasi logis](#PostgreSQL.Concepts.LogicalReplication.Tables)

## Memahami replikasi logis dan decoding logis
<a name="PostgreSQL.Concepts.General.FeatureSupport.LogicalDecoding"></a>

RDS for PostgreSQL mendukung streaming write-ahead log (WAL) menggunakan slot replikasi logis PostgreSQL. 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 logis PostgreSQL AWS Database Migration Service adalah atau host yang dikelola khusus pada instans 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 logis PostgreSQL dan decoding logis untuk Amazon RDS dengan parameter, jenis koneksi replikasi, dan peran keamanan. Klien untuk decoding logis dapat berupa klien yang dapat membuat koneksi replikasi ke basis data pada instans DB PostgreSQL. 

**Cara mengaktifkan decoding logis untuk instans DB RDS for PostgreSQL**

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

1. Atur parameter statis `rds.logical_replication` ke 1. Sebagai bagian dari penerapan parameter ini, atur juga parameter`wal_level`, `max_wal_senders`, `max_replication_slots`, dan `max_connections`. Perubahan parameter ini dapat meningkatkan pembuatan WAL, jadi atur parameter `rds.logical_replication` hanya saat Anda menggunakan slot logis.

1. Boot ulang instans DB agar parameter `rds.logical_replication` statis berlaku.

1. Buat slot replikasi logis sebagaimana dijelaskan di bagian selanjutnya. Proses ini mengharuskan Anda menentukan plugin decoding. Saat ini, RDS for PostgreSQL mendukung plugin output test\$1decoding dan wal2json yang dikirimkan dengan PostgreSQL.

Untuk informasi selengkapnya tentang decoding logis PostgreSQL, lihat [dokumentasi PostgreSQL](https://www.postgresql.org/docs/current/static/logicaldecoding-explanation.html).

## Menggunakan slot replikasi logis
<a name="PostgreSQL.Concepts.General.FeatureSupport.LogicalReplicationSlots"></a>

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

```
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 selengkapnya tentang bekerja dengan slot replikasi logis, lihat [Logical decoding examples](https://www.postgresql.org/docs/9.5/static/logicaldecoding-example.html) dalam dokumentasi PostgreSQL.

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\$1recvlogical, yang termasuk dalam distribusi PostgreSQL. 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)
```

## Mereplikasi data tingkat tabel menggunakan replikasi logis
<a name="PostgreSQL.Concepts.LogicalReplication.Tables"></a>

Anda dapat menggunakan replikasi logis untuk mereplikasi data dari tabel sumber untuk menargetkan tabel di RDS untuk PostgreSQL. Replikasi logis pertama melakukan pemuatan awal data yang ada dari tabel sumber dan kemudian terus mereplikasi perubahan yang sedang berlangsung.

1. 

**Buat tabel sumber**

   Connect ke database sumber di RDS Anda untuk PostgreSQL DB instance:

   ```
   source=> CREATE TABLE testtab (slno int primary key);
   CREATE TABLE
   ```

1. 

**Masukkan data ke dalam tabel sumber**

   ```
   source=> INSERT INTO testtab VALUES (generate_series(1,1000));
   INSERT 0 1000
   ```

1. 

**Buat publikasi untuk tabel sumber**
   + Buat publikasi untuk tabel sumber:

     ```
     source=> CREATE PUBLICATION testpub FOR TABLE testtab;
     CREATE PUBLICATION
     ```
   + Gunakan kueri SELECT untuk memverifikasi detail publikasi yang dibuat:

     ```
     source=> SELECT * FROM pg_publication;
       oid   | pubname | pubowner | puballtables | pubinsert | pubupdate | pubdelete | pubtruncate | pubviaroot
     --------+---------+----------+--------------+-----------+-----------+-----------+-------------+------------
      115069 | testpub |    16395 | f            | t         | t         | t         | t           | f
     (1 row)
     ```
   + Verifikasi bahwa tabel sumber ditambahkan ke publikasi:

     ```
     source=> SELECT * FROM pg_publication_tables; 
     pubname | schemaname | tablename
     ---------+------------+-----------
      testpub | public     | testtab
     (1 rows)
     ```
   + Untuk mereplikasi semua tabel dalam database, gunakan:

     ```
     CREATE PUBLICATION testpub FOR ALL TABLES;
     ```
   + Jika publikasi sudah dibuat untuk tabel individual dan Anda perlu menambahkan tabel baru, Anda dapat menjalankan kueri di bawah ini untuk menambahkan tabel baru ke publikasi yang ada:

     ```
     ALTER PUBLICATION <publication_name> add table <new_table_name>;
     ```

1. 

**Connect ke database target dan buat tabel target**
   + Connect ke database target dalam instans DB target. Buat tabel target dengan nama yang sama dengan tabel sumber:

     ```
     target=> CREATE TABLE testtab (slno int primary key);
     CREATE TABLE
     ```
   + Pastikan tidak ada data yang ada di tabel target dengan menjalankan kueri SELECT pada tabel target:

     ```
         
     target=> SELECT count(*) FROM testtab;
      count
     -------
          0
     (1 row)
     ```

1. 

**Membuat dan memverifikasi langganan di database target**
   + Buat langganan di database target:

     ```
     target=> CREATE SUBSCRIPTION testsub 
     CONNECTION 'host=<source RDS/host endpoint> port=5432 dbname=<source_db_name> user=<user> password=<password>' 
     PUBLICATION testpub;
     NOTICE:  Created replication slot "testsub" on publisher
     CREATE SUBSCRIPTION
     ```
   + Gunakan kueri SELECT untuk memverifikasi bahwa langganan diaktifkan:

     ```
     target=> SELECT oid, subname, subenabled, subslotname, subpublications FROM pg_subscription;
       oid  | subname | subenabled | subslotname | subpublications
     -------+---------+------------+-------------+-----------------
      16434 | testsub | t          | testsub     | {testpub}
     (1 row)
     ```
   + Ketika langganan dibuat, itu memuat semua data dari tabel sumber ke tabel target. Jalankan kueri SELECT pada tabel target untuk memverifikasi bahwa data awal dimuat:

     ```
     target=> SELECT count(*) FROM testtab;
      count
     -------
       1000
     (1 row)
     ```

1. 

**Verifikasi slot replikasi dalam database sumber**

   Pembuatan langganan dalam database target menciptakan slot replikasi dalam database sumber. Verifikasi detail slot replikasi dengan menjalankan kueri SELECT berikut pada database sumber:

   ```
   source=> SELECT * FROM pg_replication_slots;
    
   slot_name |  plugin  | slot_type | datoid | database | temporary | active | active_pid | xmin | catalog_xmin | restart_lsn | confirmed_flush_lsn | wal_status | safe_wal_size
   ----------+----------+-----------+--------+----------+-----------+--------+------------+------+--------------+-------------+---------------------+------------+---------------
   testsub   | pgoutput | logical   | 115048 | source   | f         | t      |        846 |      |         6945 | 58/B4000568 | 58/B40005A0         | reserved   |
   (1 row)
   ```

1. 

**Menguji replikasi**
   + Uji apakah perubahan data dalam tabel sumber sedang direplikasi ke tabel target dengan menyisipkan baris ke dalam tabel sumber:

     ```
     source=> INSERT INTO testtab VALUES(generate_series(1001,2000));
     INSERT 0 1000
     
     source=> SELECT count(*) FROM testtab; 
      count
     -------
       2000
     (1 row)
     ```
   + Verifikasi jumlah baris dalam tabel target untuk mengonfirmasi bahwa sisipan baru sedang direplikasi:

     ```
     target=> SELECT count(*) FROM testtab;
      count
     -------
       2000
     (1 row)
     ```

1. 

**Menyegarkan langganan setelah menambahkan tabel**
   + Saat Anda menambahkan tabel baru ke publikasi yang ada, wajib menyegarkan langganan agar perubahan diterapkan:

     ```
     ALTER SUBSCRIPTION <subscription_name> REFRESH PUBLICATION;
     ```
   + Perintah ini mengambil informasi tabel yang hilang dari penerbit dan memulai replikasi untuk tabel yang ditambahkan ke publikasi berlangganan sejak langganan dibuat atau terakhir diperbarui.

# Mengkonfigurasi otentikasi IAM untuk koneksi replikasi logis
<a name="PostgreSQL.Concepts.General.FeatureSupport.IAMLogicalReplication"></a>

Dimulai dengan RDS untuk PostgreSQL versi 11 dan lebih tinggi, Anda dapat AWS Identity and Access Management menggunakan otentikasi (IAM) untuk koneksi replikasi. Fitur ini meningkatkan keamanan dengan memungkinkan Anda mengelola akses database menggunakan peran IAM, bukan kata sandi. Ia bekerja baik pada granularitas cluster dan instance dan mengikuti model keamanan yang sama dengan otentikasi IAM standar.

Autentikasi IAM untuk koneksi replikasi adalah fitur opt-in. Untuk mengaktifkannya, atur `rds.iam_auth_for_replication` parameter ke 1 di cluster DB atau grup parameter DB Anda. Karena ini adalah parameter dinamis, cluster atau instans DB Anda tidak perlu memulai ulang, memungkinkan Anda memanfaatkan otentikasi IAM dengan beban kerja yang ada tanpa waktu henti. Sebelum mengaktifkan fitur ini, Anda harus memenuhi Prasyarat yang tercantum di bawah ini.

**Topics**
+ [Prasyarat](#PostgreSQL.Concepts.General.FeatureSupport.IAMLogicalReplication.Prerequisites)
+ [Mengaktifkan otentikasi IAM untuk koneksi replikasi](#PostgreSQL.Concepts.General.FeatureSupport.IAMLogicalReplication.Enabling)
+ [Menonaktifkan otentikasi IAM untuk koneksi replikasi](#PostgreSQL.Concepts.General.FeatureSupport.IAMLogicalReplication.Disabling)
+ [Pertimbangan dan batasan](#PostgreSQL.Concepts.General.FeatureSupport.IAMLogicalReplication.Limitations)

## Prasyarat
<a name="PostgreSQL.Concepts.General.FeatureSupport.IAMLogicalReplication.Prerequisites"></a>

Untuk menggunakan autentikasi IAM untuk koneksi replikasi, Anda harus memenuhi semua persyaratan berikut:
+ Instans RDS untuk PostgreSQL DB Anda harus versi 11 atau yang lebih baru.
+ Pada RDS penerbit Anda untuk instans PostgreSQL DB:
  + Aktifkan otentikasi database IAM. Untuk informasi selengkapnya, lihat [Mengaktifkan dan menonaktifkan autentikasi basis data IAM](UsingWithRDS.IAMDBAuth.Enabling.md).
  + Aktifkan replikasi logis dengan mengatur `rds.logical_replication` parameter ke 1.

Dalam replikasi logis, penerbit adalah sumber RDS untuk database PostgreSQL yang mengirimkan data ke database pelanggan. Untuk informasi selengkapnya, lihat [Melakukan replikasi logis untuk Amazon RDS for PostgreSQL](PostgreSQL.Concepts.General.FeatureSupport.LogicalReplication.md).

**catatan**  
Otentikasi IAM dan replikasi logis harus diaktifkan pada RDS penerbit Anda untuk instance PostgreSQL DB. Jika salah satu tidak diaktifkan, Anda tidak dapat menggunakan autentikasi IAM untuk koneksi replikasi.

## Mengaktifkan otentikasi IAM untuk koneksi replikasi
<a name="PostgreSQL.Concepts.General.FeatureSupport.IAMLogicalReplication.Enabling"></a>

Selesaikan langkah-langkah berikut untuk mengaktifkan otentikasi IAM untuk koneksi replikasi.

**Untuk mengaktifkan otentikasi IAM untuk koneksi replikasi**

1. Verifikasi bahwa klaster atau instans RDS untuk PostgreSQL DB memenuhi semua prasyarat untuk autentikasi IAM dengan koneksi replikasi. Lihat perinciannya di [Prasyarat](#PostgreSQL.Concepts.General.FeatureSupport.IAMLogicalReplication.Prerequisites).

1. Konfigurasikan `rds.iam_auth_for_replication` parameter berdasarkan RDS Anda untuk penyiapan PostgreSQL:
   + Untuk RDS untuk instance PostgreSQL DB: Ubah grup parameter DB Anda.
   + Untuk klaster Multi-AZ: Ubah grup parameter cluster DB Anda.

   Setel `rds.iam_auth_for_replication` ke 1. Ini adalah parameter dinamis yang segera berlaku tanpa memerlukan reboot.
**catatan**  
Cluster multi-AZ hanya menggunakan grup parameter cluster DB. Grup parameter instans individual tidak dapat dimodifikasi di klaster multi-AZ.

1. Connect ke database Anda dan berikan peran yang diperlukan untuk pengguna replikasi Anda:

   Perintah SQL berikut memberikan peran yang diperlukan untuk mengaktifkan otentikasi IAM untuk koneksi replikasi:

   ```
   -- Grant IAM authentication role
   GRANT rds_iam TO replication_user_name;
   
   -- Grant replication privileges
   ALTER USER replication_user_name WITH REPLICATION;
   ```

   Setelah Anda menyelesaikan langkah-langkah ini, pengguna yang ditentukan harus menggunakan otentikasi IAM untuk koneksi replikasi.
**penting**  
Saat Anda mengaktifkan fitur, pengguna dengan keduanya `rds_iam` dan `rds_replication` peran harus menggunakan autentikasi IAM untuk koneksi replikasi. Ini berlaku apakah peran ditetapkan langsung ke pengguna atau diwarisi melalui peran lain.

## Menonaktifkan otentikasi IAM untuk koneksi replikasi
<a name="PostgreSQL.Concepts.General.FeatureSupport.IAMLogicalReplication.Disabling"></a>

Anda dapat menonaktifkan autentikasi IAM untuk koneksi replikasi dengan menggunakan salah satu metode berikut:
+ Setel `rds.iam_auth_for_replication` parameter ke 0 di grup parameter DB Anda untuk instans DB atau grup parameter cluster DB untuk cluster multi-AZ.
+ Atau, Anda dapat menonaktifkan salah satu fitur ini pada RDS Anda untuk PostgreSQL DB cluster atau instance:
  + Nonaktifkan replikasi logis dengan mengatur `rds.logical_replication` parameter ke 0
  + Nonaktifkan otentikasi IAM

Saat Anda menonaktifkan fitur tersebut, koneksi replikasi dapat menggunakan kata sandi database untuk otentikasi.

**catatan**  
Koneksi replikasi untuk pengguna tanpa `rds_iam` peran dapat menggunakan otentikasi kata sandi bahkan ketika fitur diaktifkan.

## Pertimbangan dan batasan
<a name="PostgreSQL.Concepts.General.FeatureSupport.IAMLogicalReplication.Limitations"></a>

Pertimbangkan batasan dan pertimbangan berikut saat menggunakan otentikasi IAM untuk koneksi replikasi logis:
+ Fitur ini hanya tersedia untuk RDS untuk PostgreSQL versi 11 dan lebih tinggi.
+ Penerbit harus mendukung otentikasi IAM untuk koneksi replikasi.
+ Token otentikasi IAM kedaluwarsa setelah 15 menit secara default. Anda mungkin perlu menyegarkan koneksi replikasi yang berjalan lama sebelum token kedaluwarsa.

# Disk RAM untuk stats\$1temp\$1directory
<a name="PostgreSQL.Concepts.General.FeatureSupport.RamDisk"></a>

Anda dapat menggunakan parameter `rds.pg_stat_ramdisk_size` RDS for PostgreSQL untuk menentukan memori sistem yang dialokasikan ke disk RAM untuk menyimpan `stats_temp_directory` PostgreSQL. Parameter disk RAM hanya tersedia di RDS untuk PostgreSQL versi 14 dan versi yang lebih rendah. 

Di bawah beban kerja tertentu, pengaturan parameter ini dapat meningkatkan kinerja dan mengurangi I/O persyaratan. Untuk informasi lebih lanjut tentang `stats_temp_directory`, lihat [dokumentasi PostgreSQL](https://www.postgresql.org/docs/current/static/runtime-config-statistics.html#GUC-STATS-TEMP-DIRECTORY).

Untuk mengatur disk RAM untuk `stats_temp_directory`, atur parameter `rds.pg_stat_ramdisk_size` ke nilai literal integer dalam grup parameter yang digunakan oleh instans DB Anda. Parameter ini menunjukkan MB, jadi Anda harus menggunakan nilai integer. Ekspresi, rumus, dan fungsi tidak valid untuk parameter `rds.pg_stat_ramdisk_size`. Pastikan untuk mem-boot ulang instans DB agar perubahan diterapkan. Untuk mengetahui informasi tentang mengatur parameter, lihat [Grup parameter untuk RDS](USER_WorkingWithParamGroups.md).

Misalnya, AWS CLI perintah berikut menetapkan parameter disk RAM ke 256 MB.

```
aws rds modify-db-parameter-group \
    --db-parameter-group-name pg-95-ramdisk-testing \
    --parameters "ParameterName=rds.pg_stat_ramdisk_size, ParameterValue=256, ApplyMethod=pending-reboot"
```

Setelah Anda mem-boot ulang, jalankan perintah berikut untuk melihat status `stats_temp_directory`.

```
postgres=> SHOW stats_temp_directory;
```

 Perintah tersebut akan menghasilkan hal berikut.

```
stats_temp_directory
---------------------------
/rdsdbramdisk/pg_stat_tmp
(1 row)
```

# Tablespace untuk RDS for PostgreSQL
<a name="PostgreSQL.Concepts.General.FeatureSupport.Tablespaces"></a>

RDS for PostgreSQL mendukung tablespace untuk kompatibilitas. Karena semua penyimpanan berada pada satu volume logis, Anda tidak dapat menggunakan ruang tabel untuk I/O pemisahan atau isolasi. Tolok ukur dan pengalaman kami menunjukkan bahwa satu volume logis adalah penyiapan terbaik untuk sebagian besar kasus penggunaan. 

Untuk membuat dan menggunakan tablespace dengan instans DB RDS for PostgreSQL Anda memerlukan peran `rds_superuser`. Akun pengguna utama instans DB RDS for PostgreSQL Anda (nama default, `postgres`) adalah anggota peran ini. Untuk informasi selengkapnya, lihat [Memahami peran dan izin PostgreSQL](Appendix.PostgreSQL.CommonDBATasks.Roles.md). 

Jika Anda menentukan nama file saat membuat tablespace, awalan jalurnya adalah `/rdsdbdata/db/base/tablespace`. Contoh berikut menempatkan file tablespace di `/rdsdbdata/db/base/tablespace/data`. Contoh ini mengasumsikan bahwa pengguna (peran) `dbadmin` ada dan telah diberikan peran `rds_superuser` yang diperlukan untuk bekerja dengan tablespace.

```
postgres=> CREATE TABLESPACE act_data
  OWNER dbadmin
  LOCATION '/data';
CREATE TABLESPACE
```

Untuk mempelajari selengkapnya tentang tablespace PostgreSQL, lihat [Tablespaces](https://www.postgresql.org/docs/current/manage-ag-tablespaces.html) dalam dokumentasi PostgreSQL.

# Kolasi RDS for PostgreSQL untuk EBCDIC dan migrasi mainframe lainnya
<a name="PostgreSQL.Collations.mainframe.migration"></a>

RDS for PostgreSQL versi 10 dan yang lebih tinggi termasuk ICU versi 60.2, yang didasarkan pada Unicode 10.0 dan mencakup kolasi dari Unicode Common Locale Data Repository, CLDR 32. Pustaka internasionalisasi perangkat lunak ini memastikan bahwa pengodean karakter disajikan secara konsisten, terlepas dari sistem operasi atau platform. Untuk informasi selengkapnya tentang Unicode CLDR-32, lihat [CLDR 32 Release Note](https://cldr.unicode.org/index/downloads/cldr-32) di situs web Unicode CLDR. Anda dapat mempelajari lebih lanjut tentang komponen internasionalisasi untuk Unicode (ICU) di situs web [ICU Technical Committee (ICU-TC)](https://icu.unicode.org/home). Untuk informasi tentang ICU-60, lihat [Download ICU 60](https://icu.unicode.org/download/60). 

Mulai dari versi 14.3, RDS for PostgreSQL juga mencakup kolasi yang membantu integrasi data dan konversi dari sistem berbasis EBCDIC. Kode pertukaran desimal kode biner yang diperluas atau pengodean *EBCDIC* biasanya digunakan oleh sistem operasi mainframe. Kolasi yang disediakan Amazon RDS ini didefinisikan secara sempit untuk hanya mengurutkan karakter Unicode yang langsung dipetakan ke halaman kode EBCDIC. Karakter diurutkan dalam urutan titik kode EBCDIC untuk memungkinkan validasi data setelah konversi. Kolasi ini tidak menyertakan formulir denormalisasi, juga tidak menyertakan karakter Unicode yang tidak langsung memetakan ke karakter di halaman kode EBCDIC sumber.

Pemetaan karakter antara halaman kode EBCDIC dan titik kode Unicode didasarkan pada tabel yang diterbitkan oleh IBM. Set lengkap tersedia dari IBM sebagai [file terkompresi](http://download.boulder.ibm.com/ibmdl/pub/software/dw/java/cdctables.zip) yang dapat diunduh. RDS for PostgreSQL menggunakan pemetaan ini dengan alat yang disediakan oleh ICU untuk membuat kolasi yang tercantum dalam tabel di bagian ini. Nama kolasi mencakup bahasa dan negara seperti yang dipersyaratkan oleh ICU. Namun, halaman kode EBCDIC tidak menentukan bahasa, dan beberapa halaman kode EBCDIC mencakup beberapa negara. Itu artinya porsi bahasa dan negara dari nama kolasi dalam tabel bersifat arbitrer, dan tidak perlu cocok dengan lokal saat ini. Dengan kata lain, nomor halaman kode adalah bagian terpenting dari nama kolasi dalam tabel ini. Anda dapat menggunakan kolasi apa pun yang tertera dalam tabel berikut di basis data RDS for PostgreSQL. 
+ [Unicode to EBCDIC collations table](#ebcdic-table)Beberapa alat migrasi data mainframe secara internal menggunakan LATIN1 atau LATIN9 untuk menyandikan dan memproses data. Alat tersebut menggunakan skema pulang-pergi untuk menjaga integritas data dan mendukung konversi terbalik. Kumpulan dalam tabel ini dapat digunakan oleh alat yang memproses data menggunakan LATIN1 pengkodean, yang tidak memerlukan penanganan khusus. 
+ [Unicode to LATIN9 collations table](#latin9-table)— Anda dapat menggunakan kolasi ini di RDS apa pun untuk basis data PostgreSQL. 

 

Dalam tabel berikut, ada kolasi yang tersedia di RDS for PostgreSQL yang memetakan halaman kode EBCDIC ke titik kode Unicode. Kami menyarankan Anda menggunakan kolasi dalam tabel ini untuk pengembangan aplikasi yang memerlukan pengurutan berdasarkan urutan halaman kode IBM. <a name="ebcdic-table"></a>


| Nama kolasi PostgreSQL | Deskripsi pemetaan halaman kode dan pengurutan urutan | 
| --- | --- | 
| da-DK-cp277-x-icu | Karakter Unicode yang langsung memetakan ke Kode EBCDIC IBM Halaman 277 (sesuai tabel konversi) diurutkan dalam urutan titik kode IBM CP 277 | 
| de-DE-cp273-x-icu | Karakter Unicode yang langsung memetakan ke Kode EBCDIC IBM Halaman 273 (sesuai tabel konversi) diurutkan dalam urutan titik kode IBM CP 273 | 
| en-GB-cp285-x-icu | Karakter Unicode yang langsung memetakan ke Kode EBCDIC IBM Halaman 285 (sesuai tabel konversi) diurutkan dalam urutan titik kode IBM CP 285 | 
| en-US-cp037-x-icu | Karakter Unicode yang langsung memetakan ke Kode EBCDIC IBM Halaman 037 (sesuai tabel konversi) diurutkan dalam urutan titik kode IBM CP 37 | 
| es-ES-cp284-x-icu | Karakter Unicode yang langsung memetakan ke Kode EBCDIC IBM Halaman 284 (sesuai tabel konversi) diurutkan dalam urutan titik kode IBM CP 284 | 
| fi-FI-cp278-x-icu | Karakter Unicode yang langsung memetakan ke Kode EBCDIC IBM Halaman 278 (sesuai tabel konversi) diurutkan dalam urutan titik kode IBM CP 278 | 
| fr-FR-cp297-x-icu | Karakter Unicode yang langsung memetakan ke Kode EBCDIC IBM Halaman 297 (sesuai tabel konversi) diurutkan dalam urutan titik kode IBM CP 297 | 
| it-IT-cp280-x-icu | Karakter Unicode yang langsung memetakan ke Kode EBCDIC IBM Halaman 280 (sesuai tabel konversi) diurutkan dalam urutan titik kode IBM CP 280 | 
| nl-BE-cp500-x-icu | Karakter Unicode yang langsung memetakan ke Kode EBCDIC IBM Halaman 500 (sesuai tabel konversi) diurutkan dalam urutan titik kode IBM CP 500 | 

Amazon RDS menyediakan satu set kumpulan tambahan yang mengurutkan titik kode Unicode yang dipetakan ke LATIN9 karakter menggunakan tabel yang diterbitkan oleh IBM, dalam urutan titik kode asli sesuai dengan halaman kode EBCDIC dari data sumber. <a name="latin9-table"></a>


| Nama kolasi PostgreSQL | Deskripsi pemetaan halaman kode dan pengurutan urutan | 
| --- | --- | 
| DA-DK-CP1142 m-x-icu | Karakter unicode yang dipetakan ke LATIN9 karakter yang awalnya dikonversi dari IBM EBCDIC Code Page 1142 (per tabel konversi) diurutkan dalam urutan titik kode IBM CP 1142 | 
| De-De-CP1141 m-x-icu | Karakter unicode yang dipetakan ke LATIN9 karakter yang awalnya dikonversi dari IBM EBCDIC Code Page 1141 (per tabel konversi) diurutkan dalam urutan titik kode IBM CP 1141 | 
| EN-GB-CP1146 m-x-icu | Karakter unicode yang dipetakan ke LATIN9 karakter yang awalnya dikonversi dari IBM EBCDIC Code Page 1146 (per tabel konversi) diurutkan dalam urutan titik kode IBM CP 1146 | 
| en-AS-CP1140 m-x-icu | Karakter unicode yang dipetakan ke LATIN9 karakter yang awalnya dikonversi dari IBM EBCDIC Code Page 1140 (per tabel konversi) diurutkan dalam urutan titik kode IBM CP 1140 | 
| ES-ES-CP1145 m-x-icu | Karakter unicode yang dipetakan ke LATIN9 karakter yang awalnya dikonversi dari IBM EBCDIC Code Page 1145 (per tabel konversi) diurutkan dalam urutan titik kode IBM CP 1145 | 
| fi-fi-CP1143 m-x-icu | Karakter unicode yang dipetakan ke LATIN9 karakter yang awalnya dikonversi dari IBM EBCDIC Code Page 1143 (per tabel konversi) diurutkan dalam urutan titik kode IBM CP 1143 | 
| fr-FR-CP1147 m-x-icu | Karakter unicode yang dipetakan ke LATIN9 karakter yang awalnya dikonversi dari IBM EBCDIC Code Page 1147 (per tabel konversi) diurutkan dalam urutan titik kode IBM CP 1147 | 
| IT-IT-CP1144 m-x-icu | Karakter unicode yang dipetakan ke LATIN9 karakter yang awalnya dikonversi dari IBM EBCDIC Code Page 1144 (per tabel konversi) diurutkan dalam urutan titik kode IBM CP 1144 | 
| nl-BE-CP1148 m-x-icu | Karakter unicode yang dipetakan ke LATIN9 karakter yang awalnya dikonversi dari IBM EBCDIC Code Page 1148 (per tabel konversi) diurutkan dalam urutan titik kode IBM CP 1148 | 

Berikut ini, Anda dapat menemukan contoh penggunaan RDS untuk kolasi PostgreSQL.

```
db1=> SELECT pg_import_system_collations('pg_catalog');
 pg_import_system_collations
-----------------------------
                          36
db1=> SELECT '¤' < 'a' col1;
 col1
------
 t  
db1=> SELECT '¤' < 'a' COLLATE "da-DK-cp277-x-icu" col1;
 col1
------
 f
```

Kami menyarankan Anda menggunakan kolasi di [Unicode to EBCDIC collations table](#ebcdic-table) dan di [Unicode to LATIN9 collations table](#latin9-table) untuk pengembangan aplikasi yang memerlukan pengurutan berdasarkan urutan halaman kode IBM. Kumpulan berikut (akhiran dengan huruf “b”) juga terlihat di`pg_collation`, tetapi dimaksudkan untuk digunakan oleh integrasi data mainframe dan alat migrasi di AWS halaman kode peta dengan pergeseran titik kode tertentu dan memerlukan penanganan khusus dalam pemeriksaan. Dengan kata lain, penggunaan kolasi berikut tidak direkomendasikan. 
+ DA-DK-277 b-x-icu
+ DA-DK-1142 b-x-icu
+ De-de-CP273 b-x-icu
+ De-De-CP1141 b-x-icu
+ EN-GB-CP1146 b-x-icu
+ EN-GB-CP285 b-x-icu
+ id-US-CP037 b-x-icu
+ en-AS-CP1140 b-x-icu
+ ES-ES-CP1145 b-x-icu
+ es-ES-CP284 b-x-icu
+ fi-fi-CP1143 b-x-icu
+ fr-FR-CP1147 b-x-icu
+ FR-FR-CP297 b-x-icu
+ IT-IT-CP1144 b-x-icu
+ IT-IT-CP280 b-x-icu
+ nl-BE-CP1148 b-x-icu
+ NL-BE-CP500 b-x-icu

Untuk mempelajari lebih lanjut tentang memigrasi aplikasi dari lingkungan mainframe ke AWS, lihat [Apa itu Modernisasi AWS Mainframe](https://docs.aws.amazon.com/m2/latest/userguide/what-is-m2.html)? .

Untuk mempelajari selengkapnya tentang mengelola kolasi PostgreSQL, lihat [Collation Support](https://www.postgresql.org/docs/current/collation.html) dalam dokumentasi PostgreSQL.

# Mengelola sinkronisasi slot logis untuk RDS untuk PostgreSQL
<a name="Appendix.PostgreSQL.CommonDBATasks.pglogical.slot.synchronization"></a>

Dimulai di komunitas PostgreSQL 17, fitur baru untuk secara otomatis menyinkronkan slot replikasi logis dari server primer ke server siaga telah diperkenalkan melalui `sync_replication_slots` parameter atau fungsi terkait`pg_sync_replication_slots()`, yang secara manual menyinkronkan slot pada eksekusi.

Fitur-fitur ini tersedia dimulai dengan RDS untuk PostgreSQL 17. Pengaturan tipikal akan memiliki instance utama dan [replika bacanya](USER_PostgreSQL.Replication.ReadReplicas.md), serta pelanggan replikasi logis ke primer.

Pastikan langganan dibuat dengan opsi failover disetel ke true:

```
CREATE SUBSCRIPTION subname CONNECTION 'host=...' PUBLICATION pubname WITH (failover = true);
```

Ini menciptakan slot logis pada penerbit dengan failover diaktifkan.

```
postgres=> SELECT slot_name, slot_type, failover FROM pg_catalog.pg_replication_slots;
 slot_name | slot_type | failover 
-----------+-----------+----------
 subname   | logical   | t
(1 row)
```

Dengan mengaktifkan sinkronisasi slot, semua slot replikasi logis failover pada primer secara otomatis dibuat pada siaga fisik dan disinkronkan secara berkala. Pastikan nilai-nilai berikut telah ditetapkan melalui [kelompok parameter](USER_WorkingWithParamGroups.Associating.md):
+ `rds.logical_replication`harus `1` mengaktifkan replikasi logis
+ `hot_standby_feedback`harus dalam `1` keadaan siaga
+ `rds.logical_slot_sync_dbname`pada siaga harus diatur ke nama database yang valid

  Nilai default parameter adalah`postgres`. Jika instance penerbitan logis memiliki `postgres` database, parameter default tidak perlu diubah.
+ `synchronized_standby_slots`pada primer harus diatur ke slot replikasi fisik siaga yang dimaksudkan untuk sinkron
+ `sync_replication_slots`harus mengaktifkan `1` sinkronisasi otomatis

Dengan slot langganan yang diaktifkan failover dan nilai parameter di atas, ketika siaga dipromosikan, pelanggan dapat mengubah langganannya ke instance yang baru dipromosikan ini dan melanjutkan replikasi logis dengan mulus.