

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

# Menggunakan replikasi MySQL di Amazon RDS
<a name="USER_MySQL.Replication"></a>

Anda biasanya menggunakan replika baca untuk mengonfigurasi replikasi antara instans DB Amazon RDS. Untuk informasi umum tentang replika baca, lihat [Menggunakan replika baca instans DB](USER_ReadRepl.md). Untuk informasi spesifik tentang cara menggunakan replika baca pada Amazon RDS for MySQL, lihat [Menggunakan replika baca MySQL](USER_MySQL.Replication.ReadReplicas.md). 

Anda dapat menggunakan pengidentifikasi transaksi global (GTIDs) untuk replikasi dengan RDS untuk MySQL. Untuk informasi selengkapnya, lihat [Menggunakan replikasi GTID berbasis](mysql-replication-gtid.md).

Anda juga dapat menyiapkan replikasi antara instans DB RDS for MySQL dan instans MariaDB atau MySQL yang berada di luar Amazon RDS. Untuk informasi tentang cara mengonfigurasi replikasi dengan sumber eksternal, lihat [Mengonfigurasi replikasi posisi file log biner dengan instans sumber eksternal](MySQL.Procedural.Importing.External.Repl.md).

Untuk opsi replikasi ini, Anda dapat menggunakan replikasi berbasis baris, replikasi berbasis pernyataan, atau replikasi campuran. Replikasi berbasis baris hanya mereplikasi baris yang diubah yang dihasilkan dari laporan SQL. Replikasi berbasis pernyataan mereplikasi seluruh pernyataan SQL. Replikasi campuran menggunakan replikasi berbasis pernyataan jika memungkinkan, tetapi ke replikasi berbasis baris ketika pernyataan SQL yang tidak aman untuk replikasi berbasis pernyataan dijalankan. Dalam sebagian besar kasus, replikasi campuran direkomendasikan. Format biner log dari DB instans menentukan apakah replikasi berbasis baris, berbasis pernyataan, atau campuran. Untuk informasi mengenai pengaturan format log biner, lihat [Mengkonfigurasi MySQL RDS untuk pencatatan biner MySQL untuk database Single-AZ](USER_LogAccess.MySQL.BinaryFormat.md).

**catatan**  
Anda dapat mengonfigurasi replikasi untuk mengimpor basis data dari instans MariaDB atau MySQL yang berada di luar Amazon RDS, atau untuk mengekspor basis data ke instans tersebut. Untuk informasi selengkapnya, lihat [Mengimpor data ke database Amazon RDS for MySQL dengan downtime yang dikurangi](mysql-importing-data-reduced-downtime.md) dan [Mengekspor data dari instans DB MySQL dengan menggunakan replikasi](MySQL.Procedural.Exporting.NonRDSRepl.md).

Setelah memulihkan instans DB dari snapshot atau melakukan point-in-time pemulihan, Anda dapat melihat posisi binlog yang dipulihkan terakhir dari database sumber di konsol RDS. Di bawah **Log & peristiwa**, masukkan **binlog**. Posisi binlog muncul di bawah **Catatan sistem**.

**Topics**
+ [Menggunakan replika baca MySQL](USER_MySQL.Replication.ReadReplicas.md)
+ [Menggunakan replikasi GTID berbasis](mysql-replication-gtid.md)
+ [Mengonfigurasi replikasi posisi file log biner dengan instans sumber eksternal](MySQL.Procedural.Importing.External.Repl.md)
+ [Mengkonfigurasi multi-source-replication untuk Amazon RDS for MySQL](mysql-multi-source-replication.md)

# Menggunakan replika baca MySQL
<a name="USER_MySQL.Replication.ReadReplicas"></a>

Setelah itu, Anda bisa menemukan informasi spesifik tentang menggunakan replika baca di RDS for MySQL. Untuk informasi umum tentang replika baca dan petunjuk penggunaannya, lihat [Menggunakan replika baca instans DB](USER_ReadRepl.md).

Untuk informasi selengkapnya tentang replika baca MySQL, lihat topik berikut.
+ [Mengonfigurasi filter replikasi dengan MySQL](USER_MySQL.Replication.ReadReplicas.ReplicationFilters.md)
+ [Mengonfigurasi replikasi tertunda dengan MySQL](USER_MySQL.Replication.ReadReplicas.DelayReplication.md)
+ [Memperbarui replika baca dengan MySQL](USER_MySQL.Replication.ReadReplicas.Updates.md)
+ [Bekerja dengan deployment replika baca multi-AZ dengan MySQL](USER_MySQL.Replication.ReadReplicas.MultiAZ.md)
+ [Menggunakan replika baca cascading dengan for My RDS SQL](USER_MySQL.Replication.ReadReplicas.Cascading.md)
+ [Memantau kelambatan replikasi untuk replika SQL baca saya](USER_MySQL.Replication.ReadReplicas.Monitor.md)
+ [Memulai dan menghentikan replikasi dengan replika baca MySQL](USER_MySQL.Replication.ReadReplicas.StartStop.md)
+ [Memecahkan masalah replika SQL baca saya](USER_ReadRepl.Troubleshooting.md)

## Mengonfigurasi replika baca dengan MySQL
<a name="USER_MySQL.Replication.ReadReplicas.Configuration"></a>

Sebelum instans DB MySQL dapat berfungsi sebagai sumber replikasi, pastikan untuk mengaktifkan pencadangan otomatis pada instans DB sumber. Untuk melakukannya, atur periode retensi cadangan ke nilai selain 0. Persyaratan ini juga berlaku untuk replika baca yang merupakan instans DB sumber untuk replika baca lain. Pencadangan otomatis didukung untuk replika baca yang menjalankan versi MySQL apa pun. Anda dapat mengonfigurasi replikasi berdasarkan koordinat log biner untuk instans DB MySQL. 

Anda dapat mengonfigurasi replikasi menggunakan pengidentifikasi transaksi global (GTIDS) pada versi berikut:
+ RDS untuk MySQL versi 5.7.44 dan versi 5.7 yang lebih tinggi
+ RDS untuk MySQL versi 8.0.28 dan versi 8.0 yang lebih tinggi
+ RDS untuk MySQL versi 8.4.3 dan versi 8.4 yang lebih tinggi

Untuk informasi selengkapnya, lihat [Menggunakan replikasi GTID berbasis](mysql-replication-gtid.md).

Anda dapat membuat hingga 15 replika baca dari satu instans DB dalam Region yang sama. Agar replikasi beroperasi secara efektif, setiap replika baca harus memiliki jumlah sumber daya komputasi dan penyimpanan yang sama seperti instans DB sumber. Jika Anda menskalakan instans DB sumber, maka replika baca juga perlu diskalakan. 

RDS for MySQL mendukung replika baca kaskade. Untuk mempelajari cara mengonfigurasi replika baca kaskade, lihat [Menggunakan replika baca cascading dengan for My RDS SQL](USER_MySQL.Replication.ReadReplicas.Cascading.md).

Anda dapat menjalankan beberapa replika baca, membuat dan menghapus tindakan pada saat yang sama yang mereferensikan instans DB sumber yang sama. Saat Anda melakukan tindakan ini, tidak boleh ada lebih dari 15 replika baca untuk setiap instans sumber.

Replika baca dari instans DB MySQL tidak dapat menggunakan versi mesin DB yang lebih rendah dari instans DB sumbernya.

### Mempersiapkan instans MySQL DB yang menggunakan MyISAM
<a name="USER_MySQL.Replication.ReadReplicas.Configuration-MyISAM-Instances"></a>

Jika instans DB MySQL Anda menggunakan mesin nontransaksional seperti, Anda perlu melakukan langkah-langkah berikut agar berhasil menyiapkan replika baca Anda. Langkah-langkah ini diperlukan untuk memastikan replika baca memiliki salinan data yang konsisten. Langkah-langkah ini tidak diperlukan jika semua tabel Anda menggunakan mesin transaksional seperti InnoDB. 

1. Hentikan semua operasi data manipulation language (DML) dan data definition language (DDL) pada tabel non-transaksional dalam instans DB sumber dan tunggu sampai selesai. Pernyataan SELECT dapat terus berjalan. 

1. Flush kunci tabel di instans DB sumber.

1. Buat replika baca menggunakan salah satu metode di bagian berikut.

1. Periksa kemajuan pembuatan replika baca menggunakan, misalnya, operasi API `DescribeDBInstances`. Setelah replika baca tersedia, buka kunci tabel instans DB sumber dan lanjutkan operasi basis data normal. 

# Mengonfigurasi filter replikasi dengan MySQL
<a name="USER_MySQL.Replication.ReadReplicas.ReplicationFilters"></a>

Anda dapat menggunakan filter replikasi untuk menentukan basis data dan tabel mana yang direplikasi dengan replika baca. Filter replikasi dapat menyertakan basis data dan tabel dalam replikasi atau mengecualikannya dari replikasi.

Berikut ini adalah beberapa kasus penggunaan untuk filter replikasi:
+ Untuk mengurangi ukuran replika baca. Dengan filter replikasi, Anda dapat mengecualikan basis data dan tabel yang tidak diperlukan pada replika baca.
+ Untuk mengecualikan basis data dan tabel dari replika baca untuk alasan keamanan.
+ Untuk mereplikasi basis data yang berbeda dan tabel untuk kasus penggunaan tertentu di replika baca yang berbeda. Misalnya, Anda mungkin menggunakan replika baca khusus untuk analitik atau penyerpihan.
+ Untuk contoh DB yang telah membaca replika yang berbeda Wilayah AWS, untuk mereplikasi database atau tabel yang berbeda dalam bentuk yang berbeda. Wilayah AWS

**catatan**  
Anda juga dapat menggunakan filter replikasi untuk menentukan basis data dan tabel apa yang direplikasi dengan instans DB MySQL primer yang dikonfigurasi sebagai replika dalam topologi replikasi masuk. Untuk informasi selengkapnya tentang konfigurasi ini, silakan lihat [Mengonfigurasi replikasi posisi file log biner dengan instans sumber eksternal](MySQL.Procedural.Importing.External.Repl.md).

**Topics**
+ [Mengatur parameter filter replikasi untuk RDS for MySQL](#USER_MySQL.Replication.ReadReplicas.ReplicationFilters.Configuring)
+ [Batasan filter replikasi untuk RDS for MySQL](#USER_MySQL.Replication.ReadReplicas.ReplicationFilters.Limitations)
+ [Contoh filter replikasi untuk RDS for MySQL](#USER_MySQL.Replication.ReadReplicas.ReplicationFilters.Examples)
+ [Melihat filter replikasi untuk replika baca](#USER_MySQL.Replication.ReadReplicas.ReplicationFilters.Viewing)

## Mengatur parameter filter replikasi untuk RDS for MySQL
<a name="USER_MySQL.Replication.ReadReplicas.ReplicationFilters.Configuring"></a>

Untuk mengonfigurasi filter replikasi, atur parameter filter replikasi berikut pada replika baca:
+ `replicate-do-db` – Mereplikasi perubahan ke basis data yang ditentukan. Ketika Anda menetapkan parameter ini untuk replika baca, hanya basis data yang ditentukan dalam parameter yang direplikasi.
+ `replicate-ignore-db` – Jangan mereplikasi perubahan ke basis data yang ditentukan. Ketika parameter `replicate-do-db` diatur untuk replika baca, parameter ini tidak dievaluasi.
+ `replicate-do-table` – Mereplikasi perubahan ke tabel yang ditentukan. Ketika Anda menetapkan parameter ini untuk replika baca, hanya tabel yang ditentukan dalam parameter yang direplikasi. Juga, ketika parameter `replicate-do-db` atau `replicate-ignore-db` diatur, pastikan untuk menyertakan basis data yang mencakup tabel tertentu dalam replikasi dengan replika baca.
+ `replicate-ignore-table` — Jangan mereplikasi perubahan ke tabel yang ditentukan. Ketika parameter `replicate-do-table` diatur untuk replika baca, parameter ini tidak dievaluasi.
+ `replicate-wild-do-table` – Mereplikasi tabel berdasarkan basis data dan pola nama tabel yang ditentukan. Karakter wildcard `%` dan `_` didukung. Ketika parameter `replicate-do-db` atau `replicate-ignore-db` diatur, pastikan untuk menyertakan basis data yang mencakup tabel tertentu dalam replikasi dengan replika baca.
+ `replicate-wild-ignore-table` – Jangan mereplikasi tabel berdasarkan basis data dan pola nama tabel yang ditentukan. Karakter wildcard `%` dan `_` didukung. Ketika parameter `replicate-do-table` atau `replicate-wild-do-table` diatur untuk replika baca, parameter ini tidak dievaluasi.

Parameter dievaluasi dalam urutan dalam daftar. Untuk informasi selengkapnya tentang cara kerja parameter ini, lihat dokumentasi MySQL:
+ Untuk informasi umum, lihat [Opsi dan Variabel Server Replika](https://dev.mysql.com/doc/refman/8.0/en/replication-options-replica.html).
+ Untuk informasi tentang cara parameter pemfilteran replikasi basis data dievaluasi, lihat [Evaluation of Database-Level Replication and Binary Logging Options](https://dev.mysql.com/doc/refman/8.0/en/replication-rules-db-options.html).
+ Untuk informasi tentang cara parameter filter replikasi basis data dievaluasi, lihat [Evaluasi Opsi Replikasi Tingkat Tabel](https://dev.mysql.com/doc/refman/8.0/en/replication-rules-table-options.html).

Secara default, masing-masing parameter ini memiliki nilai kosong. Pada setiap replika baca, Anda dapat menggunakan parameter ini untuk mengatur, mengubah, dan menghapus filter replikasi. Ketika Anda menetapkan salah satu parameter ini, pisahkan masing-masing filter dari yang lain dengan koma.

Anda dapat menggunakan karakter wildcard `%` dan `_` dalam parameter `replicate-wild-do-table` dan `replicate-wild-ignore-table`. Parameter wildcard `%` mencocokkan jumlah karakter berapa pun, dan wildcard `_` hanya mencocokkan satu karakter. 

Format pencatatan log biner instans DB sumber penting untuk replikasi karena menentukan catatan perubahan data. Pengaturan parameter `binlog_format` menentukan apakah replikasi berbasis baris atau berbasis pernyataan. Untuk informasi selengkapnya, lihat [Mengkonfigurasi MySQL RDS untuk pencatatan biner MySQL untuk database Single-AZ](USER_LogAccess.MySQL.BinaryFormat.md).

**catatan**  
Semua pernyataan bahasa definisi data (DDL) direplikasi sebagai pernyataan, terlepas dari pengaturan `binlog_format` pada instans DB sumber. 

## Batasan filter replikasi untuk RDS for MySQL
<a name="USER_MySQL.Replication.ReadReplicas.ReplicationFilters.Limitations"></a>

Batasan tersebut berlaku kepada filter replikasi untuk RDS for MySQL:
+ Setiap parameter filter replikasi memiliki batas 2.000 karakter.
+ Koma tidak didukung dalam filter replikasi untuk nilai parameter. Dalam daftar parameter, koma hanya dapat digunakan sebagai pemisah nilai. Misalnya, `ParameterValue='`a,b`'` tidak didukung, `ParameterValue='a,b'` tetapi.
+ Opsi MySQL `--binlog-do-db` dan `--binlog-ignore-db` untuk filter log biner tidak didukung.
+ Filter replikasi tidak mendukung transaksi XA.

  Untuk informasi selengkapnya, lihat [Restrictions on XA Transactions](https://dev.mysql.com/doc/refman/8.0/en/xa-restrictions.html) dalam dokumentasi MySQL.

## Contoh filter replikasi untuk RDS for MySQL
<a name="USER_MySQL.Replication.ReadReplicas.ReplicationFilters.Examples"></a>

Untuk mengonfigurasi filter replikasi untuk replika baca, modifikasi parameter filter replikasi dalam grup parameter yang terkait dengan replika baca tersebut.

**catatan**  
Anda tidak dapat mengubah grup parameter default. Jika replika baca menggunakan grup parameter default, buat grup parameter baru dan kaitkan dengan replika baca tersebut. Untuk mengetahui informasi selengkapnya tentang grup parameter DB, lihat [Grup parameter untuk RDS](USER_WorkingWithParamGroups.md).

Anda dapat mengatur parameter dalam grup parameter menggunakan Konsol Manajemen AWS, AWS CLI, atau RDS API. Untuk mengetahui informasi tentang mengatur parameter, lihat [](USER_WorkingWithParamGroups.Modifying.md). Ketika Anda mengatur parameter dalam grup parameter, semua instans DB yang terkait dengan grup parameter tersebut menggunakan pengaturan parameter. Jika Anda mengatur parameter filter replikasi dalam grup parameter, pastikan bahwa grup parameter dikaitkan hanya dengan replika baca. Biarkan parameter filter replikasi kosong untuk instans DB sumber.

Contoh berikut mengatur parameter menggunakan AWS CLI. Contoh ini menetapkan `ApplyMethod` ke `immediate` sehingga perubahan parameter terjadi segera setelah perintah CLI selesai. Jika Anda ingin menerapkan perubahan tertunda setelah replika baca di-boot ulang, atur `ApplyMethod` ke `pending-reboot`. 

Contoh berikut mengatur filter replikasi:
+ [Including databases in replication](#rep-filter-in-dbs-mysql)
+ [Including tables in replication](#rep-filter-in-tables-mysql)
+ [Including tables in replication with wildcard characters](#rep-filter-in-tables-wildcards-mysql)
+ [Excluding databases from replication](#rep-filter-ex-dbs-mysql)
+ [Excluding tables from replication](#rep-filter-ex-tables-mysql)
+ [Excluding tables from replication using wildcard characters](#rep-filter-ex-tables-wildcards-mysql)<a name="rep-filter-in-dbs-mysql"></a>

**Example Menyertakan basis data dalam replikasi**  
Contoh berikut menyertakan basis data `mydb1` dan `mydb2` dalam replikasi.  
Untuk Linux, macOS, atau Unix:  

```
aws rds modify-db-parameter-group \
  --db-parameter-group-name myparametergroup \
  --parameters "ParameterName=replicate-do-db,ParameterValue='mydb1,mydb2',ApplyMethod=immediate"
```
Untuk Windows:  

```
aws rds modify-db-parameter-group ^
  --db-parameter-group-name myparametergroup ^
  --parameters "ParameterName=replicate-do-db,ParameterValue='mydb1,mydb2',ApplyMethod=immediate"
```<a name="rep-filter-in-tables-mysql"></a>

**Example Menyertakan tabel dalam replikasi**  
Contoh berikut menyertakan tabel `table1` dan `table2` dalam `mydb1` basis data dalam replikasi.  
Untuk Linux, macOS, atau Unix:  

```
aws rds modify-db-parameter-group \
  --db-parameter-group-name myparametergroup \
  --parameters "ParameterName=replicate-do-table,ParameterValue='mydb1.table1,mydb1.table2',ApplyMethod=immediate"
```
Untuk Windows:  

```
aws rds modify-db-parameter-group ^
  --db-parameter-group-name myparametergroup ^
  --parameters "ParameterName=replicate-do-table,ParameterValue='mydb1.table1,mydb1.table2',ApplyMethod=immediate"
```<a name="rep-filter-in-tables-wildcards-mysql"></a>

**Example Menyertakan tabel dalam replikasi menggunakan karakter wildcard**  
Contoh berikut menyertakan tabel dengan nama berawalan `order` dan `return` dalam basis data `mydb` dalam replikasi.  
Untuk Linux, macOS, atau Unix:  

```
aws rds modify-db-parameter-group \
  --db-parameter-group-name myparametergroup \
  --parameters "ParameterName=replicate-wild-do-table,ParameterValue='mydb.order%,mydb.return%',ApplyMethod=immediate"
```
Untuk Windows:  

```
aws rds modify-db-parameter-group ^
  --db-parameter-group-name myparametergroup ^
  --parameters "ParameterName=replicate-wild-do-table,ParameterValue='mydb.order%,mydb.return%',ApplyMethod=immediate"
```<a name="rep-filter-ex-dbs-mysql"></a>

**Example Mengecualikan basis data dari replikasi**  
Contoh berikut mengecualikan basis data `mydb5` dan `mydb6` dari replikasi.  
Untuk Linux, macOS, atau Unix:  

```
aws rds modify-db-parameter-group \
  --db-parameter-group-name myparametergroup \
  --parameters "ParameterName=replicate-ignore-db,ParameterValue='mydb5,mydb6',ApplyMethod=immediate"
```
Untuk Windows:  

```
aws rds modify-db-parameter-group ^
  --db-parameter-group-name myparametergroup ^
  --parameters "ParameterName=replicate-ignore-db,ParameterValue='mydb5,mydb6',ApplyMethod=immediate"
```<a name="rep-filter-ex-tables-mysql"></a>

**Example Mengecualikan tabel dari replikasi**  
Contoh berikut mengecualikan tabel `table1` dalam basis data `mydb5` dan `table2` dalam basis data `mydb6` dari replikasi.  
Untuk Linux, macOS, atau Unix:  

```
aws rds modify-db-parameter-group \
  --db-parameter-group-name myparametergroup \
  --parameters "ParameterName=replicate-ignore-table,ParameterValue='mydb5.table1,mydb6.table2',ApplyMethod=immediate"
```
Untuk Windows:  

```
aws rds modify-db-parameter-group ^
  --db-parameter-group-name myparametergroup ^
  --parameters "ParameterName=replicate-ignore-table,ParameterValue='mydb5.table1,mydb6.table2',ApplyMethod=immediate"
```<a name="rep-filter-ex-tables-wildcards-mysql"></a>

**Example Mengecualikan tabel dari replikasi menggunakan karakter wildcard**  
Contoh berikut mengecualikan tabel dengan nama berawalan `order` dan `return` dalam basis data `mydb7` dari replikasi.  
Untuk Linux, macOS, atau Unix:  

```
aws rds modify-db-parameter-group \
  --db-parameter-group-name myparametergroup \
  --parameters "ParameterName=replicate-wild-ignore-table,ParameterValue='mydb7.order%,mydb7.return%',ApplyMethod=immediate"
```
Untuk Windows:  

```
aws rds modify-db-parameter-group ^
  --db-parameter-group-name myparametergroup ^
  --parameters "ParameterName=replicate-wild-ignore-table,ParameterValue='mydb7.order%,mydb7.return%',ApplyMethod=immediate"
```

## Melihat filter replikasi untuk replika baca
<a name="USER_MySQL.Replication.ReadReplicas.ReplicationFilters.Viewing"></a>

Anda dapat melihat filter replikasi untuk replika baca dengan cara berikut:
+ Memeriksa pengaturan parameter filter replikasi dalam grup parameter yang terkait dengan replika baca.

  Untuk petunjuk, lihat [Melihat nilai parameter untuk grup parameter DB di Amazon RDS ](USER_WorkingWithParamGroups.Viewing.md).
+ Dalam klien MySQL, hubungkan ke replika baca dan jalankan pernyataan `SHOW REPLICA STATUS`.

  Dalam output, bidang berikut menunjukkan filter replikasi untuk replika baca:
  + `Replicate_Do_DB`
  + `Replicate_Ignore_DB`
  + `Replicate_Do_Table`
  + `Replicate_Ignore_Table`
  + `Replicate_Wild_Do_Table`
  + `Replicate_Wild_Ignore_Table`

  Untuk mengetahui informasi selengkapnya tentang bidang ini, lihat [Checking Replication Status](https://dev.mysql.com/doc/refman/8.0/en/replication-administration-status.html) dalam dokumentasi MySQL.

# Mengonfigurasi replikasi tertunda dengan MySQL
<a name="USER_MySQL.Replication.ReadReplicas.DelayReplication"></a>

Anda dapat menggunakan replikasi tertunda sebagai strategi pemulihan bencana. Dengan replikasi tertunda, Anda menentukan jumlah waktu minimum, dalam detik, untuk menunda replikasi dari sumber ke replika baca. Jika terjadi bencana, seperti tabel yang terhapus secara tidak sengaja, Anda menyelesaikan langkah-langkah berikut untuk memulihkan dari bencana dengan cepat:
+ Hentikan replikasi ke replika baca sebelum perubahan yang menyebabkan bencana dikirim ke replika tersebut.

  Gunakan prosedur yang tersimpan di [mysql.rds\$1stop\$1replication](mysql-stored-proc-replicating.md#mysql_rds_stop_replication) untuk menghentikan replikasi.
+ Mulai replikasi dan tentukan bahwa replikasi berhenti secara otomatis di lokasi file log.

  Anda menentukan lokasi tepat sebelum bencana menggunakan prosedur tersimpan [](mysql-stored-proc-replicating.md#mysql_rds_start_replication_until).
+ Tingkatkan replika baca menjadi instans DB sumber baru dengan menggunakan petunjuk di [Mempromosikan replika baca menjadi instans DB mandiri](USER_ReadRepl.Promote.md).

**catatan**  
Pada RDS untuk MySQL 8.4, replikasi tertunda didukung untuk MySQL 8.4.3 dan yang lebih tinggi. Pada RDS for MySQL 8.0, replikasi tertunda didukung untuk MySQL 8.0.28 dan yang lebih tinggi. Pada RDS untuk MySQL 5.7, replikasi tertunda didukung untuk MySQL 5.7.44 dan yang lebih tinggi.
Gunakan prosedur yang tersimpan untuk mengonfigurasi replikasi tertunda. Anda tidak dapat mengonfigurasi replikasi tertunda dengan Konsol Manajemen AWS, AWS CLI API, atau Amazon RDS.
Anda dapat menggunakan replikasi berdasarkan pengidentifikasi transaksi global (GTIDs) dalam konfigurasi replikasi tertunda untuk versi berikut:  
RDS untuk MySQL versi 5.7.44 dan versi 5.7 yang lebih tinggi
RDS untuk MySQL versi 8.0.28 dan versi 8.0 yang lebih tinggi
RDS untuk MySQL versi 8.4.3 dan versi 8.4 yang lebih tinggi
Jika Anda menggunakan replikasi berbasis GTID, gunakan prosedur tersimpan [](mysql-stored-proc-gtid.md#mysql_rds_start_replication_until_gtid), bukan prosedur tersimpan [](mysql-stored-proc-replicating.md#mysql_rds_start_replication_until). Untuk informasi selengkapnya tentang replikasi, lihat [Menggunakan replikasi GTID berbasis](mysql-replication-gtid.md).

**Topics**
+ [Mengonfigurasi replikasi tertunda selama pembuatan replika baca](#USER_MySQL.Replication.ReadReplicas.DelayReplication.ReplicaCreation)
+ [Mengubah replikasi tertunda untuk replika baca yang sudah ada](#USER_MySQL.Replication.ReadReplicas.DelayReplication.ExistingReplica)
+ [Mengatur lokasi untuk menghentikan replikasi ke replika baca](#USER_MySQL.Replication.ReadReplicas.DelayReplication.StartUntil)
+ [Menaikkan replika baca](#USER_MySQL.Replication.ReadReplicas.DelayReplication.Promote)

## Mengonfigurasi replikasi tertunda selama pembuatan replika baca
<a name="USER_MySQL.Replication.ReadReplicas.DelayReplication.ReplicaCreation"></a>

Untuk mengonfigurasi replikasi tertunda untuk replika baca di masa mendatang yang dibuat dari instans DB, jalankan prosedur tersimpan [mysql.rds\$1set\$1configuration](mysql-stored-proc-configuring.md#mysql_rds_set_configuration) dengan parameter `target delay`.

**Untuk mengonfigurasi replikasi tertunda selama pembuatan replika baca**

1. Dengan menggunakan klien MySQL, hubungkan ke instans DB MySQL untuk menjadi sumber replika baca sebagai pengguna master.

1. Jalankan prosedur tersimpan [mysql.rds\$1set\$1configuration](mysql-stored-proc-configuring.md#mysql_rds_set_configuration) dengan parameter `target delay`.

   Misalnya, jalankan prosedur tersimpan berikut untuk menentukan bahwa replikasi ditunda setidaknya satu jam (3.600 detik) untuk replika baca yang dibuat dari instans DB saat ini.

   ```
   call mysql.rds_set_configuration('target delay', 3600);
   ```
**catatan**  
Setelah menjalankan prosedur tersimpan ini, replika baca apa pun yang Anda buat menggunakan AWS CLI atau Amazon RDS API dikonfigurasi dengan replikasi yang tertunda oleh jumlah detik yang ditentukan.

## Mengubah replikasi tertunda untuk replika baca yang sudah ada
<a name="USER_MySQL.Replication.ReadReplicas.DelayReplication.ExistingReplica"></a>

Untuk mengubah replikasi tertunda untuk replika baca yang ada, jalankan prosedur tersimpan [mysql.rds\$1set\$1source\$1delay](mysql-stored-proc-replicating.md#mysql_rds_set_source_delay).

**Untuk mengubah replikasi tertunda untuk replika baca yang sudah ada**

1. Dengan menggunakan klien MySQL, hubungkan ke replika baca sebagai pengguna master.

1. Gunakan prosedur yang tersimpan di [mysql.rds\$1stop\$1replication](mysql-stored-proc-replicating.md#mysql_rds_stop_replication) untuk menghentikan replikasi.

1. Jalankan prosedur tersimpan [mysql.rds\$1set\$1source\$1delay](mysql-stored-proc-replicating.md#mysql_rds_set_source_delay).

   Misalnya, jalankan prosedur tersimpan berikut untuk menentukan bahwa replikasi ke replika baca ditunda setidaknya satu jam (3600 detik).

   ```
   call mysql.rds_set_source_delay(3600);
   ```

1. Gunakan prosedur yang tersimpan di [mysql.rds\$1start\$1replication](mysql-stored-proc-replicating.md#mysql_rds_start_replication) untuk memulai replikasi.

## Mengatur lokasi untuk menghentikan replikasi ke replika baca
<a name="USER_MySQL.Replication.ReadReplicas.DelayReplication.StartUntil"></a>

Setelah menghentikan replikasi ke replika baca, Anda dapat memulai replikasi dan kemudian menghentikannya di lokasi file log biner yang ditentukan menggunakan prosedur tersimpan [](mysql-stored-proc-replicating.md#mysql_rds_start_replication_until).

**Untuk memulai replikasi ke replika baca dan menghentikan replikasi di lokasi tertentu**

1. Dengan menggunakan klien MySQL, hubungkan ke sumber instans DB MySQL sebagai pengguna master.

1. Jalankan prosedur yang tersimpan di [](mysql-stored-proc-replicating.md#mysql_rds_start_replication_until).

   Contoh berikut memulai replikasi dan mereplikasi perubahan hingga mencapai lokasi `120` di file biner `mysql-bin-changelog.000777`. Dalam skenario pemulihan bencana, asumsikan bahwa lokasi `120` tepat sebelum bencana.

   ```
   call mysql.rds_start_replication_until(
     'mysql-bin-changelog.000777',
     120);
   ```

Replikasi berhenti secara otomatis ketika stop point tercapai. Peristiwa RDS berikut dibuat: `Replication has been stopped since the replica reached the stop point specified by the rds_start_replication_until stored procedure`.

## Menaikkan replika baca
<a name="USER_MySQL.Replication.ReadReplicas.DelayReplication.Promote"></a>

Setelah replikasi dihentikan, dalam skenario pemulihan bencana, Anda dapat mempromosikan replika baca menjadi instans DB sumber baru. Untuk informasi tentang mempromosikan replika baca, lihat [Mempromosikan replika baca menjadi instans DB mandiri](USER_ReadRepl.Promote.md).

# Memperbarui replika baca dengan MySQL
<a name="USER_MySQL.Replication.ReadReplicas.Updates"></a>

Replika baca dirancang untuk mendukung kueri baca, tetapi Anda mungkin memerlukan pembaruan sesekali. Misalnya, Anda mungkin perlu menambahkan indeks untuk mengoptimalkan jenis kueri tertentu yang mengakses replika. 

Meskipun Anda dapat mengaktifkan pembaruan dengan mengatur `read_only` parameter ke `0` dalam grup parameter DB untuk replika baca, sebaiknya Anda tidak melakukannya karena dapat menyebabkan masalah jika replika baca menjadi tidak kompatibel dengan instans DB sumber. Untuk operasi pemeliharaan, kami menyarankan Anda menggunakan blue/green penerapan. Untuk informasi selengkapnya, lihat [Menggunakan Blue/Green Deployment untuk pembaruan database](blue-green-deployments.md).

Jika Anda menonaktifkan read-only pada replika baca, ubah nilai `read_only` parameter kembali `1` sesegera mungkin. 

# Bekerja dengan deployment replika baca multi-AZ dengan MySQL
<a name="USER_MySQL.Replication.ReadReplicas.MultiAZ"></a>

Anda dapat membuat replika baca dari deployment instans DB Multi-AZ atau tunggal-AZ. Anda menggunakan deployment Multi-AZ untuk meningkatkan dan ketersediaan data kritis, tetapi Anda tidak dapat menggunakan sekunder Multi-AZ untuk melayani kueri hanya baca. Sebagai gantinya, Anda dapat membuat replika baca dari instans DB Multi-AZ multi-lalu lintas tinggi untuk mengeluarkan kueri hanya baca. Jika instans sumber dari deployment Multi-AZ gagal karena replika baca sekunder, setiap replika baca terkait akan otomatis untuk menggunakan sumber sekunder (sekarang primer) sebagai sumber replikasinya. Untuk informasi selengkapnya, lihat [Mengonfigurasi dan mengelola penyebaran Multi-AZ untuk Amazon RDS](Concepts.MultiAZ.md). 

Anda dapat membuat replika baca sebagai instans DB Multi-AZ. Amazon RDS membuat instans siaga replika Anda di Zona Ketersediaan lain untuk dukungan failover untuk replika tersebut. Membuat replika baca Anda sebagai instans DB Multi-AZ tidak tergantung pada apakah basis data sumber adalah instans DB Multi-AZ. 

# Menggunakan replika baca cascading dengan for My RDS SQL
<a name="USER_MySQL.Replication.ReadReplicas.Cascading"></a>

RDSuntuk SQL dukungan saya cascading read replicas. Dengan *replika baca cascading*, Anda dapat menskalakan pembacaan tanpa menambahkan overhead ke sumber RDS Anda untuk instans DB Saya. SQL

Dengan replika baca cascading, instans RDS for My SQL DB Anda mengirimkan data ke replika baca pertama dalam rantai. Replika baca itu kemudian mengirimkan data ke replika kedua dalam rantai, dan seterusnya. Hasil akhirnya adalah bahwa semua replika baca dalam rantai memiliki perubahan dari instance RDS for My SQL DB, tetapi tanpa overhead hanya pada instance DB sumber.

Anda dapat membuat serangkaian hingga tiga replika baca dalam rantai dari sumber RDS untuk instans My SQL DB. Misalnya, anggaplah Anda memiliki instance RDS for My SQL DB,`mysql-main`. Anda dapat melakukan hal berikut:
+ Dimulai dengan `mysql-main`, buat replika baca pertama dalam rantai, `read-replica-1`.
+ Selanjutnya, dari `read-replica-1`, buat replika baca berikutnya dalam rantai, `read-replica-2`.
+ Akhirnya, dari `read-replica-2`, buat replika baca ketiga dalam rantai, `read-replica-3`.

Anda tidak dapat membuat replika baca lain di luar replika baca kaskade ketiga ini dalam rangkaian untuk `mysql-main`. Serangkaian contoh lengkap dari instans RDS for My SQL source DB hingga akhir serangkaian replika baca berjenjang dapat terdiri dari paling banyak empat instance DB.

Agar replika baca cascading berfungsi, setiap sumber RDS untuk instans My SQL DB harus mengaktifkan pencadangan otomatis. Untuk mengaktifkan pencadangan otomatis pada replika baca, pertama-tama buat replika baca, lalu ubah replika baca untuk mengaktifkan pencadangan otomatis. Untuk informasi selengkapnya, lihat [Membuat replika baca](USER_ReadRepl.Create.md).

Seperti halnya replika baca lainnya, Anda dapat mempromosikan replika baca yang merupakan bagian dari kaskade. Mempromosikan replika baca dari dalam rantai replika baca menghilangkan replika tersebut dari rantai. Misalnya, misalkan Anda ingin memindahkan sebagian beban kerja dari instans `mysql-main` DB Anda ke instans baru untuk digunakan oleh departemen akuntansi saja. Dengan asumsi rantai tiga replika baca dari contoh, Anda memutuskan untuk mempromosikan `read-replica-2`. Rantai terpengaruh sebagai berikut:
+ Mempromosikan `read-replica-2` menghapusnya dari rantai replikasi.
  + Replika ini sekarang menjadi instans DB baca/tulis penuh.
  + Replika ini terus mereplikasi menjadi `read-replica-3`, seperti yang dilakukan sebelum promosi.
+ `mysql-main` Anda terus mereplikasi ke `read-replica-1`.

Untuk informasi lebih lanjut tentang mempromosikan replika baca, lihat [Mempromosikan replika baca menjadi instans DB mandiri](USER_ReadRepl.Promote.md).

# Memantau kelambatan replikasi untuk replika SQL baca saya
<a name="USER_MySQL.Replication.ReadReplicas.Monitor"></a>

Untuk replika SQL baca saya, Anda dapat memantau kelambatan replikasi di Amazon CloudWatch dengan melihat metrik Amazon RDS`ReplicaLag`. Metrik `ReplicaLag` melaporkan nilai kolom `Seconds_Behind_Master` dari perintah `SHOW REPLICA STATUS`. 

Penyebab umum kelambatan replikasi untuk My SQL adalah sebagai berikut: 
+ Pemadaman jaringan.
+ Menulis ke tabel yang memiliki indeks berbeda pada replika baca. Jika parameter `read_only` diatur ke `0` pada replika baca, replikasi dapat rusak jika replika baca menjadi tidak kompatibel dengan instans DB sumber. Setelah Anda melakukan tugas pemeliharaan pada replika baca, sebaiknya Anda mengatur kembali parameter `read_only` ke `1`.
+ Menggunakan mesin penyimpanan nontransaksional seperti My. ISAM Replikasi hanya didukung untuk mesin penyimpanan InnoDB di My. SQL

Saat metrik `ReplicaLag` mencapai 0, replika telah menyamai instans DB sumber. Jika metrik `ReplicaLag` mengembalikan -1, maka replikasi saat ini tidak aktif. `ReplicaLag` = -1 setara dengan `Seconds_Behind_Master` = `NULL`. 

# Memulai dan menghentikan replikasi dengan replika baca MySQL
<a name="USER_MySQL.Replication.ReadReplicas.StartStop"></a>

Anda dapat menghentikan dan memulai ulang proses replikasi di instans DB Amazon RDS dengan memanggil prosedur yang disimpan sistem [mysql.rds\$1stop\$1replication](mysql-stored-proc-replicating.md#mysql_rds_stop_replication) dan [mysql.rds\$1start\$1replication](mysql-stored-proc-replicating.md#mysql_rds_start_replication). Anda dapat melakukan ini saat mereplikasi antara dua instans Amazon RDS untuk operasi jangka panjang seperti membuat indeks besar. Anda juga perlu menghentikan dan memulai replikasi saat mengimpor atau mengekspor basis data. Untuk informasi lebih lanjut, lihat [Mengimpor data ke database Amazon RDS for MySQL dengan downtime yang dikurangi](mysql-importing-data-reduced-downtime.md) dan [Mengekspor data dari instans DB MySQL dengan menggunakan replikasi](MySQL.Procedural.Exporting.NonRDSRepl.md). 

Jika replikasi dihentikan selama lebih dari 30 hari berturut-turut, baik secara manual atau karena kesalahan replikasi, Amazon RDS menghentikan replikasi antara instans DB sumber dan semua replika baca. Hal ini dilakukan untuk mencegah peningkatan persyaratan penyimpanan pada instans DB sumber dan waktu failover yang lama. Instans DB replika baca masih tersedia. Namun, replikasi tidak dapat dilanjutkan karena log biner yang diperlukan oleh replika baca dihapus dari instans DB sumber setelah replikasi dihentikan. Anda dapat membuat replika baca baru untuk instans DB sumber untuk memulihkan replikasi. 

# Memecahkan masalah replika SQL baca saya
<a name="USER_ReadRepl.Troubleshooting"></a>

Untuk instance SQL DB Saya, dalam beberapa kasus replika baca menyajikan kesalahan replikasi atau inkonsistensi data (atau keduanya) antara replika baca dan instance DB sumbernya. Masalah ini terjadi ketika beberapa peristiwa log biner (binlog) atau log redo InnoDB tidak dialirkan selama kegagalan replika baca atau instans DB sumber. Dalam kasus ini, hapus dan buat ulang replika baca secara manual. Anda dapat mengurangi kemungkinan terjadinya hal ini dengan menetapkan nilai parameter berikut: `sync_binlog=1` dan `innodb_flush_log_at_trx_commit=1`. Pengaturan ini dapat mengurangi performa, jadi uji dampaknya sebelum menerapkan perubahan di lingkungan produksi.

**Awas**  
Dalam grup parameter yang terkait dengan instans DB sumber, kami sarankan untuk menjaga nilai parameter ini: `sync_binlog=1` dan `innodb_flush_log_at_trx_commit=1`. Parameter ini dinamis. Jika Anda tidak ingin menggunakan pengaturan ini, sebaiknya setel sementara nilai-nilai tersebut sebelum menjalankan operasi apa pun pada instans DB sumber yang mungkin menyebabkannya dimulai ulang. Operasi ini termasuk, namun tidak terbatas pada, boot ulang, boot ulang dengan failover, tingkatkan versi basis data, dan mengubah kelas instans DB atau penyimpanannya. Rekomendasi yang sama berlaku untuk membuat replika baca baru untuk instans DB sumber.  
Kegagalan untuk mengikuti panduan ini meningkatkan risiko replika baca yang menghadirkan kesalahan replikasi atau inkonsistensi data (atau keduanya) antara replika baca dan instans DB sumbernya.

Teknologi replikasi untuk My SQL tidak sinkron. Karena mereka tidak sinkron, sesekali `BinLogDiskUsage` meningkatkan instans DB sumber dan `ReplicaLag` pada replika baca diharapkan. Misalnya, volume operasi tulis tinggi ke instans DB sumber dapat terjadi secara paralel. Sebaliknya, operasi ke replika baca diseret menggunakan utas I/O tunggal, yang dapat menyebabkan jeda antara instans sumber dan replika baca. Untuk informasi selengkapnya tentang replika hanya-baca dalam SQL dokumentasi Saya, lihat Detail implementasi [replikasi](https://dev.mysql.com/doc/refman/8.0/en/replication-implementation-details.html).

Anda dapat melakukan beberapa hal untuk mengurangi keterlambatan antara pembaruan ke instans DB sumber dan pembaruan berikutnya ke replika baca, seperti berikut:
+ Mengukur replika baca untuk memiliki ukuran penyimpanan dan kelas instans DB yang sebanding dengan instans DB sumber.
+ Memastikan kompatibilitas pengaturan parameter di grup parameter DB yang digunakan oleh instans DB sumber dan replika baca. Untuk mengetahui informasi selengkapnya dan instans, lihat diskusi tentang `max_allowed_packet` nanti di bagian ini.

Amazon RDS memantau status replikasi replika baca Anda dan memperbarui `Replication State` bidang instance replika baca `Error` jika replikasi berhenti karena alasan apa pun. Contohnya mungkin jika DML kueri yang dijalankan pada replika baca Anda bertentangan dengan pembaruan yang dibuat pada instans DB sumber. 

Anda dapat meninjau detail kesalahan terkait yang dilemparkan oleh SQL mesin Saya dengan melihat `Replication Error` bidang. Peristiwa yang menunjukkan status replika baca juga dihasilkan, termasuk [RDS-EVENT-0045](USER_Events.Messages.md#RDS-EVENT-0045), [RDS-EVENT-0046](USER_Events.Messages.md#RDS-EVENT-0046), dan [RDS-EVENT-0047](USER_Events.Messages.md#RDS-EVENT-0047). Untuk informasi selengkapnya tentang peristiwa dan berlangganan peristiwa, lihat [Bekerja dengan pemberitahuan RDS acara Amazon](USER_Events.md). Jika pesan SQL kesalahan saya dikembalikan, tinjau nomor kesalahan dalam [dokumentasi Pesan SQL galat saya](https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference.html).

Satu masalah umum yang dapat menyebabkan kesalahan replikasi adalah ketika nilai untuk `max_allowed_packet` parameter untuk replika baca lebih kecil dari `max_allowed_packet` untuk instans DB sumber. Parameter `max_allowed_packet` adalah parameter kustom yang dapat Anda atur di grup parameter DB. Anda gunakan `max_allowed_packet` untuk menentukan ukuran maksimum DML kode yang dapat dijalankan pada database. Dalam beberapa kasus, nilai `max_allowed_packet` dalam grup parameter DB yang dikaitkan dengan replika baca lebih kecil daripada nilai `max_allowed_packet` dalam grup parameter DB yang terkait dengan instans DB sumber. Dalam kasus ini, proses replikasi dapat melempar kesalahan `Packet bigger than 'max_allowed_packet' bytes` dan menghentikan replikasi. Untuk memperbaiki kesalahan, miliki instans DB sumber dan replika baca menggunakan grup parameter DB dengan nilai parameter `max_allowed_packet` yang sama. 

Situasi umum lainnya yang dapat menyebabkan kesalahan replikasi mencakup hal-hal berikut:
+ Tuliskan ke tabel di replika baca. Dalam beberapa kasus, Anda mungkin membuat indeks pada replika baca yang berbeda dari indeks pada instans DB sumber. Jika Anda melakukannya, atur parameter `read_only` ke `0` untuk membuat indeks. Jika Anda menulis ke tabel pada replika baca, replikasi dapat rusak jika replika baca menjadi tidak kompatibel dengan instans DB sumber. Setelah Anda melakukan tugas pemeliharaan pada replika baca, sebaiknya Anda mengatur kembali parameter `read_only` ke `1`.
+  Menggunakan mesin penyimpanan non-transaksional seperti My. ISAM Replika baca membutuhkan mesin penyimpanan transaksional. Replikasi hanya didukung untuk mesin penyimpanan InnoDB di My. SQL
+  Gunakan kueri nondeterministik yang tidak aman seperti `SYSDATE()`. Untuk informasi selengkapnya, lihat [Determination of safe and unsafe statements in binary logging](https://dev.mysql.com/doc/refman/8.0/en/replication-rbr-safe-unsafe.html). 

Jika Anda memutuskan bahwa Anda dapat melewati kesalahan dengan aman, Anda dapat mengikuti langkah-langkah yang dijelaskan di bagian [Melewatkan kesalahan replikasi saat ini untuk RDS untuk MySQL](Appendix.MySQL.CommonDBATasks.SkipError.md). Jika tidak, Anda dapat menghapus replika baca terlebih dahulu. Selanjutnya Anda membuat instans menggunakan pengenal instans DB yang sama sehingga titik akhir tetap sama dengan replika baca lama Anda. Jika kesalahan replikasi diperbaiki, `Replication State` berubah menjadi *mereplikasi*.

# Menggunakan replikasi GTID berbasis
<a name="mysql-replication-gtid"></a>

Konten berikut menjelaskan cara menggunakan pengidentifikasi transaksi global (GTIDs) dengan replikasi log biner (binlog) di antara Amazon RDS untuk instans My SQL DB. 

Jika Anda menggunakan replikasi binlog dan tidak terbiasa dengan replikasi GTID berbasis dengan MySQL, lihat [Replikasi dengan pengidentifikasi transaksi global](https://dev.mysql.com/doc/refman/5.7/en/replication-gtids.html) di dokumentasi Saya. SQL

GTIDreplikasi berbasis didukung untuk versi berikut:
+ Semua RDS untuk versi SQL 8.4 Saya
+ Semua RDS untuk versi My SQL 8.0
+ Semua RDS untuk versi SQL 5.7 Saya

Semua instans SQL DB Saya dalam konfigurasi replikasi harus memenuhi persyaratan versi ini.

**Topics**
+ [Ikhtisar pengidentifikasi transaksi global () GTIDs](#mysql-replication-gtid.overview)
+ [Parameter untuk replikasi GTID berbasis](#mysql-replication-gtid.parameters)
+ [Mengaktifkan replikasi berbasis GTID untuk replika baca baru untuk RDS untuk MySQL](mysql-replication-gtid.configuring-new-read-replicas.md)
+ [Mengaktifkan replikasi berbasis GTID untuk replika baca yang ada untuk RDS untuk MySQL](mysql-replication-gtid.configuring-existing-read-replicas.md)
+ [Menonaktifkan replikasi berbasis GTID untuk instans DB MySQL dengan replika baca](mysql-replication-gtid.disabling.md)

## Ikhtisar pengidentifikasi transaksi global () GTIDs
<a name="mysql-replication-gtid.overview"></a>

*Pengidentifikasi transaksi global (GTIDs)* adalah pengidentifikasi unik yang dihasilkan untuk transaksi Saya SQL yang berkomitmen. Anda dapat menggunakan GTIDs untuk membuat replikasi binlog lebih sederhana dan lebih mudah untuk memecahkan masalah.

Saya SQL menggunakan dua jenis transaksi yang berbeda untuk replikasi binlog:
+ *GTIDTransaksi* — Transaksi yang diidentifikasi oleh aGTID.
+ *Transaksi anonim* — Transaksi yang tidak GTID ditetapkan.

Dalam konfigurasi replikasi, GTIDs unik di semua instans DB. GTIDsmenyederhanakan konfigurasi replikasi karena ketika Anda menggunakannya, Anda tidak perlu merujuk ke posisi file log. GTIDsjuga memudahkan untuk melacak transaksi yang direplikasi dan menentukan apakah instance sumber dan replika konsisten.

Anda dapat menggunakan replikasi GTID berbasis untuk mereplikasi data dengan RDS replika SQL baca saya. Anda dapat mengonfigurasi replikasi GTID berbasis saat membuat replika baca baru, atau Anda dapat mengonversi replika baca yang ada untuk menggunakan GTID replikasi berbasis.

Anda juga dapat menggunakan replikasi GTID berbasis dalam konfigurasi replikasi tertunda dengan RDS for My. SQL Untuk informasi selengkapnya, lihat [Mengonfigurasi replikasi tertunda dengan MySQL](USER_MySQL.Replication.ReadReplicas.DelayReplication.md).

## Parameter untuk replikasi GTID berbasis
<a name="mysql-replication-gtid.parameters"></a>

Gunakan parameter berikut untuk mengkonfigurasi replikasi GTID berbasis.


| Parameter | Nilai valid | Deskripsi | 
| --- | --- | --- | 
|  `gtid_mode`  |  `OFF`, `OFF_PERMISSIVE`, `ON_PERMISSIVE`, `ON`  |  `OFF` menetapkan bahwa transaksi baru adalah transaksi anonim (yaitu, tidak memiliki GTIDs), dan transaksi harus anonim agar dapat direplikasi.  `OFF_PERMISSIVE` menentukan bahwa transaksi baru adalah transaksi anonim, tetapi semua transaksi dapat direplikasi.  `ON_PERMISSIVE`menetapkan bahwa transaksi baru adalah GTID transaksi, tetapi semua transaksi dapat direplikasi.  `ON`menetapkan bahwa transaksi baru adalah GTID transaksi, dan transaksi harus berupa GTID transaksi yang akan direplikasi.   | 
|  `enforce_gtid_consistency`  |  `OFF`, `ON`, `WARN`  |  `OFF`memungkinkan transaksi melanggar GTID konsistensi.  `ON`mencegah transaksi melanggar GTID konsistensi.  `WARN`memungkinkan transaksi melanggar GTID konsistensi tetapi menghasilkan peringatan ketika pelanggaran terjadi.   | 

**catatan**  
Dalam Konsol Manajemen AWS, `gtid_mode` parameter muncul sebagai`gtid-mode`.

Untuk replikasi GTID berbasis, gunakan pengaturan ini untuk grup parameter untuk instans DB Anda atau baca replika:
+ `ON`dan hanya `ON_PERMISSIVE` berlaku untuk replikasi keluar dari instance RDS DB. Kedua nilai ini menyebabkan instans RDS DB Anda digunakan GTIDs untuk transaksi yang direplikasi. `ON`mengharuskan database target juga menggunakan replikasi GTID berbasis. `ON_PERMISSIVE`membuat replikasi GTID berbasis opsional pada database target. 
+ `OFF_PERMISSIVE`, jika disetel, berarti instans RDS DB Anda dapat menerima replikasi masuk dari database sumber. Mereka dapat melakukan ini terlepas dari apakah database sumber menggunakan replikasi GTID berbasis.
+ `OFF`, jika disetel, berarti instans RDS DB Anda hanya menerima replikasi masuk dari database sumber yang tidak menggunakan replikasi berbasis. GTID 

Untuk informasi selengkapnya tentang grup parameter, lihat [Grup parameter untuk RDS](USER_WorkingWithParamGroups.md).

# Mengaktifkan replikasi berbasis GTID untuk replika baca baru untuk RDS untuk MySQL
<a name="mysql-replication-gtid.configuring-new-read-replicas"></a>

Jika replikasi berbasis GTID diaktifkan untuk instans DB RDS for MySQL, replikasi berbasis GTID dikonfigurasi secara otomatis untuk replika baca dari instans DB.

**Untuk mengaktifkan replikasi berbasis GTID untuk replika baca baru**

1. Pastikan grup parameter yang terkait dengan instans DB memiliki pengaturan parameter sebagai berikut:
   + `gtid_mode` – `ON` atau `ON_PERMISSIVE`
   + `enforce_gtid_consistency` – `ON`

   Untuk informasi selengkapnya tentang cara mengatur parameter konfigurasi menggunakan grup parameter, lihat [Grup parameter untuk RDS](USER_WorkingWithParamGroups.md).

1. Jika Anda mengubah grup parameter dari instans DB, boot ulang instans DB tersebut. Untuk informasi selengkapnya tentang cara melakukannya, lihat [Mem-boot ulang instans DB DB](USER_RebootInstance.md).

1.  Ciptakan satu replika baca atau lebih dari instans DB. Untuk informasi selengkapnya tentang cara melakukannya, lihat [Membuat replika baca](USER_ReadRepl.Create.md). 

Amazon RDS mencoba membuat replikasi berbasis GTID antara instans DB MySQL dan replika baca menggunakan `MASTER_AUTO_POSITION`. Jika upaya tersebut gagal, Amazon RDS menggunakan posisi file log untuk replikasi dengan replika baca. Untuk informasi selengkapnya tentang `MASTER_AUTO_POSITION`, lihat [GTID auto-positioning](https://dev.mysql.com/doc/refman/5.7/en/replication-gtids-auto-positioning.html) dalam dokumentasi MySQL.

# Mengaktifkan replikasi berbasis GTID untuk replika baca yang ada untuk RDS untuk MySQL
<a name="mysql-replication-gtid.configuring-existing-read-replicas"></a>

Untuk instans DB MySQL yang sudah ada dengan replika baca yang tidak menggunakan replikasi berbasis GTID, Anda dapat mengonfigurasi replikasi berbasis GTID antara instans DB dan replika baca.

**Untuk mengaktifkan replikasi berbasis GTID untuk replika baca yang sudah ada**

1. Jika instans DB atau replika baca apa pun menggunakan RDS for MySQL versi 8.0 yang lebih rendah dari versi 8.0.26, tingkatkan instans DB atau replika baca ke 8.0.26 atau MySQL versi 8.0 yang lebih tinggi. Semua RDS untuk MySQL 8.4 versi dan 5.7 versi mendukung replikasi berbasis GTID.

   Untuk informasi selengkapnya, lihat [Upgrade RDS untuk mesin MySQL DB](USER_UpgradeDBInstance.MySQL.md).

1. (Opsional) Atur ulang parameter GTID dan uji perilaku instans DB dan replika baca:

   1. Pastikan grup parameter yang terkait dengan instans DB MySQL dan setiap replika baca memiliki `enforce_gtid_consistency` yang diatur ke `WARN`.

      Untuk informasi selengkapnya tentang cara mengatur parameter konfigurasi menggunakan grup parameter, lihat [Grup parameter untuk RDS](USER_WorkingWithParamGroups.md).

   1. Jika Anda mengubah grup parameter dari instans DB, boot ulang instans DB tersebut. Jika Anda mengubah grup parameter untuk sebuah replika baca, boot ulang replika baca tersebut.

      Untuk informasi selengkapnya, lihat [Mem-boot ulang instans DB DB](USER_RebootInstance.md).

   1. Jalankan instans DB dan replika baca Anda dengan beban kerja normal Anda dan monitor file log.

      Jika Anda melihat peringatan tentang transaksi yang tidak kompatibel dengan GTID, sesuaikan agar aplikasi Anda hanya menggunakan fitur yang kompatibel dengan GTID. Pastikan instans DB tidak menghasilkan peringatan apa pun tentang transaksi yang tidak kompatibel dengan GTID sebelum melanjutkan ke langkah berikutnya.

1. Atur ulang parameter GTID untuk replikasi berbasis GTID yang memperbolehkan transaksi anonim hingga replika baca telah memproses semuanya.

   1. Pastikan grup parameter yang terkait dengan instans DB dan setiap replika baca memiliki pengaturan parameter sebagai berikut:
      + `gtid_mode` – `ON_PERMISSIVE`
      + `enforce_gtid_consistency` – `ON`

   1. Jika Anda mengubah grup parameter dari instans DB, boot ulang instans DB tersebut. Jika Anda mengubah grup parameter untuk sebuah replika baca, boot ulang replika baca tersebut.

1. Tunggu hingga semua transaksi anonim Anda direplikasi. Untuk memeriksa apakah semua transaksi tersebut sudah direplikasi, lakukan hal berikut:

   1. Jalankan pernyataan berikut pada instans DB sumber Anda. 

      **MySQL 8.4**

      ```
      SHOW BINARY LOG STATUS;
      ```

      **MySQL 5.7 dan 8.0**

      ```
      SHOW MASTER STATUS;
      ```

      Perhatikan nilai di kolom `File` dan `Position`.

   1. Pada setiap replika baca, gunakan informasi file dan posisi dari instans sumber dalam langkah sebelumnya untuk menjalankan kueri berikut.

      ```
      SELECT MASTER_POS_WAIT('file', position);
      ```

      Misalnya, jika nama file-nya adalah `mysql-bin-changelog.000031` dan posisinya adalah `107`, jalankan pernyataan berikut.

      ```
      SELECT MASTER_POS_WAIT('mysql-bin-changelog.000031', 107);
      ```

      Jika replika baca melewati posisi yang ditentukan, kueri akan segera ditampilkan. Jika tidak, fungsi tersebut akan menunggu. Lanjutkan ke langkah berikutnya jika kueri menampilkan semua replika baca.

1. Atur ulang parameter GTID untuk replikasi berbasis GTID saja.

   1. Pastikan grup parameter yang terkait dengan instans DB dan setiap replika baca memiliki pengaturan parameter sebagai berikut:
      + `gtid_mode` – `ON`
      + `enforce_gtid_consistency` – `ON`

   1. Boot ulang instans DB dan setiap replika baca.

1. Pada setiap replika baca, jalankan prosedur berikut.

   **MySQL 8.4 dan versi utama yang lebih tinggi**

   ```
   CALL mysql.rds_set_source_auto_position(1);
   ```

   **MySQL 8.0 dan versi utama yang lebih rendah**

   ```
   CALL mysql.rds_set_master_auto_position(1);
   ```

# Menonaktifkan replikasi berbasis GTID untuk instans DB MySQL dengan replika baca
<a name="mysql-replication-gtid.disabling"></a>

Anda dapat menonaktifkan replikasi berbasis GTID untuk instans DB MySQL dengan replika baca. 

**Menonaktifkan replikasi berbasis GTID untuk instans DB MySQL dengan replika baca**

1. Pada setiap replika baca, jalankan prosedur berikut:

   **MySQL 8.4 dan versi utama yang lebih tinggi**

   ```
   CALL mysql.rds_set_source_auto_position(0);
   ```

   **MySQL 8.0 dan versi utama yang lebih rendah**

   ```
   CALL mysql.rds_set_master_auto_position(0);
   ```

1. Atur ulang `gtid_mode` ke `ON_PERMISSIVE`.

   1. Pastikan grup parameter yang terkait dengan instans DB MySQL dan setiap replika baca memiliki `gtid_mode` yang diatur ke `ON_PERMISSIVE`.

      Untuk informasi selengkapnya tentang cara mengatur parameter konfigurasi menggunakan grup parameter, lihat [Grup parameter untuk RDS](USER_WorkingWithParamGroups.md).

   1. Boot ulang instans DB MySQL dan setiap replika baca. Untuk informasi selengkapnya tentang mem-boot ulang, lihat [Mem-boot ulang instans DB DB](USER_RebootInstance.md).

1. Atur ulang `gtid_mode` ke `OFF_PERMISSIVE`.

   1. Pastikan grup parameter yang terkait dengan instans DB MySQL dan setiap replika baca memiliki `gtid_mode` yang diatur ke `OFF_PERMISSIVE`.

   1. Boot ulang instans DB MySQL dan setiap replika baca.

1. Tunggu hingga semua transaksi GTID diterapkan pada semua replika baca. Untuk memeriksa apakah ini diterapkan, lakukan langkah-langkah berikut:

   1. Pada instance MySQL DB, jalankan perintah berikut:

      **MySQL 8.4**

      ```
      SHOW BINARY LOG STATUS
      ```

      **MySQL 5.7 dan 8.0**

      ```
      SHOW MASTER STATUS
      ```

      Output Anda harus mirip dengan output berikut.

      ```
      File                        Position
      ------------------------------------
      mysql-bin-changelog.000031      107
      ------------------------------------
      ```

      Perhatikan file dan posisi dalam output Anda.

   1. Pada setiap replika baca, gunakan file dan informasi posisi dari contoh sumbernya pada langkah sebelumnya untuk menjalankan kueri berikut:

      **MySQL 8.4 dan MySQL 8.0.26 dan versi MySQL 8.0 yang lebih tinggi**

      ```
      SELECT SOURCE_POS_WAIT('file', position);
      ```

      **MySQL 5.7**

      ```
      SELECT MASTER_POS_WAIT('file', position);
      ```

      Misalnya, jika nama file `mysql-bin-changelog.000031` dan posisinya`107`, jalankan pernyataan berikut:

      **MySQL 8.4 dan MySQL 8.0.26 dan versi MySQL 8.0 yang lebih tinggi**

      ```
      SELECT SOURCE_POS_WAIT('mysql-bin-changelog.000031', 107);
      ```

      **MySQL 5.7**

      ```
      SELECT MASTER_POS_WAIT('mysql-bin-changelog.000031', 107);
      ```

1. Setel ulang parameter GTID untuk menonaktifkan replikasi berbasis GTID.

   1. Pastikan grup parameter yang terkait dengan instans DB MySQL dan setiap replika baca memiliki pengaturan parameter sebagai berikut:
      + `gtid_mode` – `OFF`
      + `enforce_gtid_consistency` – `OFF`

   1. Boot ulang instans DB MySQL dan setiap replika baca.

# Mengonfigurasi replikasi posisi file log biner dengan instans sumber eksternal
<a name="MySQL.Procedural.Importing.External.Repl"></a>

Anda dapat menyiapkan replikasi antara instans DB RDS for MySQL atau MariaDB dan instans MySQL atau MariaDB yang berada di luar Amazon RDS menggunakan replikasi file log biner.

**Topics**
+ [Sebelum Anda mulai](#MySQL.Procedural.Importing.External.Repl.BeforeYouBegin)
+ [Mengonfigurasi replikasi posisi file log biner dengan instans sumber eksternal](#MySQL.Procedural.Importing.External.Repl.Procedure)

## Sebelum Anda mulai
<a name="MySQL.Procedural.Importing.External.Repl.BeforeYouBegin"></a>

Anda dapat mengonfigurasi replikasi menggunakan posisi file log biner transaksi yang direplikasi.

Izin yang diperlukan untuk memulai replikasi pada instans DB Amazon RDS dibatasi dan tidak tersedia untuk pengguna master Amazon RDS Anda. Karena itu, pastikan Anda menggunakan Amazon RDS [](mysql-stored-proc-replicating.md#mysql_rds_set_external_master) atau[](mysql-stored-proc-replicating.md#mysql_rds_set_external_source), dan [mysql.rds\$1start\$1replication](mysql-stored-proc-replicating.md#mysql_rds_start_replication) perintah untuk mengatur replikasi antara database langsung dan database Amazon RDS Anda.

Untuk mengatur format pencatatan log biner untuk basis data MySQL atau MariaDB, perbarui parameter `binlog_format`. Jika instans DB Anda menggunakan grup parameter instans DB default, buat grup parameter DB baru untuk memodifikasi `binlog_format` parameter. Di MariaDB dan MySQL 8.0 dan versi yang lebih rendah, defaultnya. `binlog_format` `MIXED` Namun, Anda juga dapat mengatur `binlog_format` ke `ROW` atau `STATEMENT` jika Anda memerlukan format log biner (binlog) tertentu. Boot ulang instans DB Anda agar perubahan diterapkan. Di MySQL 8.4 dan versi yang lebih tinggi, defaultnya. `binlog_format` `ROW`

Untuk informasi tentang mengatur parameter `binlog_format`, lihat [Mengkonfigurasi MySQL RDS untuk pencatatan biner MySQL untuk database Single-AZ](USER_LogAccess.MySQL.BinaryFormat.md). Untuk informasi tentang implikasi tipe replikasi MySQL yang berbeda-beda, lihat [Advantages and disadvantages of statement-based and row-based replication](https://dev.mysql.com/doc/refman/8.0/en/replication-sbr-rbr.html) dalam dokumentasi MySQL.

## Mengonfigurasi replikasi posisi file log biner dengan instans sumber eksternal
<a name="MySQL.Procedural.Importing.External.Repl.Procedure"></a>

Ikuti pedoman ini saat Anda menyiapkan instans sumber eksternal dan replika di Amazon RDS: 
+ Pantau peristiwa failover untuk instans DB Amazon RDS yang merupakan replika Anda. Jika terjadi failover, maka instans DB yang merupakan replika Anda dapat dibuat ulang pada host baru dengan alamat jaringan yang berbeda. Untuk informasi tentang cara pemonitoran peristiwa failover, lihat [Bekerja dengan pemberitahuan RDS acara Amazon](USER_Events.md).
+ Pertahankan binlog pada instans sumber Anda hingga Anda memverifikasi bahwa binlog tersebut telah diterapkan ke replika. Dengan mempertahankannya, Anda dapat memulihkan instans sumber Anda jika terjadi kegagalan.
+ Aktifkan pencadangan otomatis pada instans DB Amazon RDS Anda. Dengan mengaktifkan pencadangan otomatis, Anda dapat memulihkan replika ke titik waktu tertentu jika Anda perlu menyinkronkan ulang instans sumber dan replika Anda. Untuk informasi tentang pencadangan dan point-in-time pemulihan, lihat. [Mencadangkan, memulihkan, dan mengekspor data](CHAP_CommonTasks.BackupRestore.md)

**Mengonfigurasi replikasi file log biner dengan Instans sumber eksternal**

1. Jadikan instans MySQL atau MariaDB sumber sebagai hanya-baca.

   ```
   mysql> FLUSH TABLES WITH READ LOCK;
   mysql> SET GLOBAL read_only = ON;
   ```

1. Jalankan perintah `SHOW MASTER STATUS` pada instans MySQL atau MariaDB sumber untuk menentukan lokasi binlog.

   Anda menerima output yang mirip dengan contoh berikut.

   ```
   File                        Position  
   ------------------------------------
    mysql-bin-changelog.000031      107   
   ------------------------------------
   ```

1. Salin basis data dari instans eksternal ke instans DB Amazon RDS menggunakan `mysqldump`. Untuk basis data yang sangat besar, Anda mungkin ingin menggunakan prosedur di [Mengimpor data ke database Amazon RDS for MySQL dengan downtime yang dikurangi](mysql-importing-data-reduced-downtime.md). 

   Untuk Linux, macOS, atau Unix:

   ```
   mysqldump --databases database_name \
       --single-transaction \
       --compress \
       --order-by-primary \
       -u local_user \
       -plocal_password | mysql \
           --host=hostname \
           --port=3306 \
           -u RDS_user_name \
           -pRDS_password
   ```

   Untuk Windows:

   ```
   mysqldump --databases database_name ^
       --single-transaction ^
       --compress ^
       --order-by-primary ^
       -u local_user ^
       -plocal_password | mysql ^
           --host=hostname ^
           --port=3306 ^
           -u RDS_user_name ^
           -pRDS_password
   ```
**catatan**  
Pastikan tidak ada spasi di antara opsi `-p` dan sandi yang dimasukkan. 

   Untuk menentukan nama host, nama pengguna, port, dan kata sandi untuk menghubungkan ke instans DB Amazon RDS Anda, gunakan opsi `--host`, `--user (-u)`, `--port`, dan `-p` dalam perintah `mysql`. Nama host adalah nama Domain Name Service (DNS) dari titik akhir instans DB Amazon RDS, misalnya `myinstance.123456789012.us-east-1.rds.amazonaws.com`. Anda dapat menemukan nilai titik akhir dalam detail instans di Konsol Manajemen AWS.

1. Jadikan instans DB MySQL atau MariaDB sumber sebagai writeable (dapat diubah) lagi.

   ```
   mysql> SET GLOBAL read_only = OFF;
   mysql> UNLOCK TABLES;
   ```

   Untuk informasi lebih lanjut tentang cara membuat cadangan untuk digunakan dengan replikasi, lihat [dokumentasi MySQL](https://dev.mysql.com/doc/refman/8.0/en/replication-solutions-backups-read-only.html).

1. Di dalam Konsol Manajemen AWS, tambahkan alamat IP server yang menghosting database eksternal ke grup keamanan virtual private cloud (VPC) untuk instans Amazon RDS DB. Untuk informasi selengkapnya tentang cara memodifikasi grup keamanan VPC, lihat [Grup keamanan untuk VPC Anda](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html) dalam *Panduan Pengguna Amazon Virtual Private Cloud*. 

   Alamat IP dapat berubah jika kondisi berikut terpenuhi:
   + Anda menggunakan alamat IP publik untuk komunikasi antara instans sumber eksternal dan instans DB.
   + Instans sumber eksternal dihentikan dan dimulai ulang.

   Jika semua kondisi ini terpenuhi, verifikasikan alamat IP sebelum menambahkannya.

   Anda mungkin juga perlu mengonfigurasi jaringan lokal Anda untuk mengizinkan koneksi dari alamat IP instans DB Amazon RDS Anda. Anda melakukan ini agar jaringan lokal Anda dapat berkomunikasi dengan instans MySQL atau MariaDB eksternal Anda. Untuk menemukan alamat IP dari instans DB Amazon RDS, gunakan perintah `host`.

   ```
   host db_instance_endpoint
   ```

   Nama host adalah nama DNS dari titik akhir instans DB Amazon RDS.

1. Menggunakan klien pilihan Anda, hubungkan ke instans eksternal dan buat pengguna untuk digunakan untuk replikasi. Gunakan akun ini semata-mata untuk replikasi dan batasi hanya untuk domain Anda guna meningkatkan keamanan. Berikut adalah contohnya. 

   ```
   CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY 'password';
   ```
**catatan**  
Tentukan kata sandi selain prompt yang ditampilkan di sini sebagai praktik terbaik keamanan.

1. Untuk instans eksternal, berikan hak akses `REPLICATION CLIENT` dan `REPLICATION SLAVE` kepada pengguna replikasi Anda. Misalnya, untuk memberikan hak akses `REPLICATION CLIENT` dan `REPLICATION SLAVE` pada semua basis data untuk pengguna '`repl_user`' bagi domain Anda, jalankan perintah berikut.

   ```
   GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com';
   ```

1. Jadikan instans DB Amazon RDS sebagai replika. Untuk melakukannya, pertama-tama hubungkan ke instans DB Amazon RDS sebagai pengguna master. Kemudian mengidentifikasi database MySQL atau MariaDB eksternal sebagai contoh sumber dengan menggunakan perintah or. [](mysql-stored-proc-replicating.md#mysql_rds_set_external_source) [](mysql-stored-proc-replicating.md#mysql_rds_set_external_master) Gunakan nama file log master dan posisi log master yang Anda tentukan pada langkah 2. Perintah berikut adalah contohnya.

   **MySQL 8.4**

   ```
   CALL mysql.rds_set_external_source ('mysourceserver.mydomain.com', 3306, 'repl_user', 'password', 'mysql-bin-changelog.000031', 107, 1);
   ```

   **MariaDB dan MySQL 8.0 dan 5.7**

   ```
   CALL mysql.rds_set_external_master ('mymasterserver.mydomain.com', 3306, 'repl_user', 'password', 'mysql-bin-changelog.000031', 107, 1);
   ```
**catatan**  
Pada RDS untuk MySQL, Anda dapat memilih untuk menggunakan replikasi tertunda dengan menjalankan [mysql.rds\$1set\$1external\$1source\$1with\$1delay (RDS untuk MySQL mayor versi 8.4 dan lebih tinggi)](mysql-stored-proc-replicating.md#mysql_rds_set_external_source_with_delay) prosedur atau disimpan sebagai gantinya. [mysql.rds\$1set\$1external\$1master\$1with\$1delay (RDS untuk MariaDB dan RDS untuk MySQL mayor versi 8.0 dan lebih rendah)](mysql-stored-proc-replicating.md#mysql_rds_set_external_master_with_delay) Di RDS for MySQL, salah satu alasan menggunakan replikasi tertunda adalah untuk mengaktifkan pemulihan bencana dengan prosedur tersimpan [](mysql-stored-proc-replicating.md#mysql_rds_start_replication_until). Saat ini, RDS untuk MariaDB mendukung replikasi tertunda tetapi tidak mendukung prosedur `mysql.rds_start_replication_until`.

1. Di instans DB Amazon RDS, terbitkan perintah [mysql.rds\$1start\$1replication](mysql-stored-proc-replicating.md#mysql_rds_start_replication) untuk memulai replikasi.

   ```
   CALL mysql.rds_start_replication;
   ```

# Mengkonfigurasi multi-source-replication untuk Amazon RDS for MySQL
<a name="mysql-multi-source-replication"></a>

Dengan replikasi multi-sumber, Anda dapat menyiapkan instans Amazon RDS for MySQL DB sebagai replika yang menerima peristiwa log biner dari lebih dari satu RDS untuk instans DB sumber MySQL. Replikasi multi-sumber didukung untuk RDS untuk instance MySQL DB yang menjalankan versi mesin berikut:
+ Semua MySQL 8.4 versi
+ 8.0.35 dan versi minor yang lebih tinggi
+ 5.7.44 dan versi minor yang lebih tinggi

Untuk informasi tentang replikasi multi-sumber MySQL, lihat Replikasi Multi-Sumber MySQL dalam [dokumentasi MySQL](https://dev.mysql.com/doc/refman/8.0/en/replication-multi-source.html). Dokumentasi MySQL berisi informasi rinci tentang fitur ini, sementara topik ini menjelaskan cara mengkonfigurasi dan mengelola saluran replikasi multi-sumber pada RDS Anda untuk instance MySQL DB.

## Kasus penggunaan untuk replikasi multi-sumber
<a name="mysql-multi-source-replication-benefits"></a>

Kasus-kasus berikut adalah kandidat yang baik untuk menggunakan replikasi multi-sumber pada RDS untuk MySQL:
+ Aplikasi yang perlu menggabungkan atau menggabungkan beberapa pecahan pada instance DB terpisah menjadi satu pecahan.
+ Aplikasi yang perlu menghasilkan laporan dari data yang dikonsolidasikan dari berbagai sumber.
+ Persyaratan untuk membuat cadangan data jangka panjang terkonsolidasi yang didistribusikan di antara beberapa RDS untuk instance MySQL DB.

## Prasyarat untuk replikasi multi-sumber
<a name="mysql-multi-source-replication-prerequisites"></a>

Sebelum Anda mengonfigurasi replikasi multi-sumber, selesaikan prasyarat berikut.
+ Pastikan bahwa setiap sumber RDS untuk MySQL DB instance memiliki backup otomatis diaktifkan. Mengaktifkan pencadangan otomatis memungkinkan pencatatan biner. Untuk mempelajari cara mengaktifkan pencadangan otomatis, lihat. [Mengaktifkan pencadangan otomatis](USER_WorkingWithAutomatedBackups.Enabling.md)
+ Untuk menghindari kesalahan replikasi, sebaiknya Anda memblokir operasi penulisan ke instans DB sumber. Anda dapat melakukannya dengan mengatur `read-only` parameter ke `ON` dalam grup parameter kustom yang dilampirkan ke RDS untuk instance DB sumber MySQL. Anda dapat menggunakan Konsol Manajemen AWS atau AWS CLI untuk membuat grup parameter kustom baru atau untuk memodifikasi yang sudah ada. Untuk informasi selengkapnya, lihat [Membuat grup parameter DB di Amazon RDS ](USER_WorkingWithParamGroups.Creating.md) dan [](USER_WorkingWithParamGroups.Modifying.md).
+ Untuk setiap instans DB sumber, tambahkan alamat IP instans ke grup keamanan Amazon virtual private cloud (VPC) untuk instans DB multi-sumber. Untuk mengidentifikasi alamat IP dari instans DB sumber, Anda dapat menjalankan perintah`dig RDS Endpoint`. Jalankan perintah dari instans Amazon EC2 di VPC yang sama dengan instans DB multi-sumber tujuan. 
+ Untuk setiap instans DB sumber, gunakan klien untuk terhubung ke instans DB dan buat pengguna database dengan hak istimewa yang diperlukan untuk replikasi, seperti pada contoh berikut.

  ```
  CREATE USER 'repl_user' IDENTIFIED BY 'password';
  GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user';
  ```
**catatan**  
Dimulai dengan MySQL 8.4, hak istimewa telah `REPLICATION SLAVE` ditinggalkan dan diganti dengan. `REPLICATION REPLICA` Untuk MySQL 8.4 dan versi yang lebih baru, gunakan sintaks berikut sebagai gantinya:  

  ```
  CREATE USER 'repl_user' IDENTIFIED BY 'password';
  GRANT REPLICATION CLIENT, REPLICATION REPLICA ON *.* TO 'repl_user';
  ```

## Mengkonfigurasi saluran replikasi multi-sumber pada RDS untuk instans MySQL DB
<a name="mysql-multi-source-replication-configuring-channels"></a>

Mengkonfigurasi saluran replikasi multi-sumber mirip dengan mengkonfigurasi replikasi sumber tunggal. Untuk replikasi multi-sumber, pertama-tama Anda mengaktifkan logging biner pada instance sumber. Kemudian, Anda mengimpor data dari sumber ke replika multi-sumber. Kemudian, Anda memulai replikasi dari setiap sumber dengan menggunakan koordinat log biner atau dengan menggunakan pemosisian otomatis GTID.

Untuk mengonfigurasi RDS untuk instance MySQL DB sebagai replika multi-sumber dari dua atau lebih RDS untuk instance MySQL DB, lakukan langkah-langkah berikut.

**Topics**
+ [Langkah 1: Impor data dari instans DB sumber ke replika multi-sumber](#mysql-multi-source-replication-import)
+ [Langkah 2: Mulai replikasi dari instans DB sumber ke replika multi-sumber](#mysql-multi-source-replication-setting-up-start-replication-other)

### Langkah 1: Impor data dari instans DB sumber ke replika multi-sumber
<a name="mysql-multi-source-replication-import"></a>

Lakukan langkah-langkah berikut pada setiap instans DB sumber.

Sebelum Anda mengimpor data dari sumber ke replika multi-sumber, tentukan file log biner saat ini dan posisikan dengan menjalankan perintah. `SHOW MASTER STATUS` Catat detail ini untuk digunakan pada langkah berikutnya. Dalam contoh output ini, file adalah `mysql-bin-changelog.000031` dan posisinya adalah`107`.

**catatan**  
Dimulai dengan MySQL 8.4, perintah telah `SHOW MASTER STATUS` usang dan diganti dengan. `SHOW BINARY LOG STATUS` Untuk MySQL 8.4 dan versi yang lebih baru, gunakan sebagai gantinya. `SHOW BINARY LOG STATUS`

```
File                        Position   
-----------------------------------
mysql-bin-changelog.000031      107   
-----------------------------------
```

Sekarang salin database dari instance DB sumber ke replika multi-sumber dengan menggunakan`mysqldump`, seperti pada contoh berikut.

```
mysqldump --databases database_name \
 --single-transaction \
 --compress \
 --order-by-primary \
 -u RDS_user_name \
 -p RDS_password \
 --host=RDS Endpoint | mysql \
 --host=RDS Endpoint \
 --port=3306 \
 -u RDS_user_name \
-p RDS_password
```

Setelah menyalin database, Anda dapat mengatur parameter read-only ke instans `OFF` DB sumber.

### Langkah 2: Mulai replikasi dari instans DB sumber ke replika multi-sumber
<a name="mysql-multi-source-replication-setting-up-start-replication-other"></a>

Untuk setiap instans DB sumber, gunakan kredensi pengguna administratif untuk terhubung ke instance, dan jalankan dua prosedur tersimpan berikut. Prosedur tersimpan ini mengonfigurasi replikasi pada saluran dan memulai replikasi. Contoh ini menggunakan nama file binlog dan posisi dari output contoh pada langkah sebelumnya.

```
CALL mysql.rds_set_external_source_for_channel('mysourcehost.example.com', 3306, 'repl_user', 'password', 'mysql-bin-changelog.000031', 107, 1, 'channel_1');
CALL mysql.rds_start_replication_for_channel('channel_1');
```

Untuk informasi selengkapnya tentang menggunakan prosedur tersimpan ini dan lainnya untuk menyiapkan dan mengelola saluran replikasi Anda, lihat[Mengelola replikasi multi-sumber](mysql-stored-proc-multi-source-replication.md).

## Menggunakan filter dengan replikasi multi-sumber
<a name="mysql-multi-source-replication-filters"></a>

Anda dapat menggunakan filter replikasi untuk menentukan database dan tabel mana yang direplikasi dalam replika multi-sumber. Filter replikasi dapat menyertakan basis data dan tabel dalam replikasi atau mengecualikannya dari replikasi. Untuk informasi selengkapnya tentang filter replikasi, lihat[Mengonfigurasi filter replikasi dengan MySQL](USER_MySQL.Replication.ReadReplicas.ReplicationFilters.md).

Dengan replikasi multi-sumber, Anda dapat mengonfigurasi filter replikasi secara global atau di tingkat saluran. Pemfilteran tingkat saluran hanya tersedia dengan instans DB yang didukung yang menjalankan versi 8.0 atau versi 8.4. Contoh berikut menunjukkan cara mengonfigurasi filter secara global atau di tingkat saluran.

Perhatikan persyaratan dan perilaku berikut dengan pemfilteran dalam replikasi multi-sumber:
+ Kutipan belakang (``) di sekitar nama saluran diperlukan.
+ Jika Anda mengubah filter replikasi dalam grup parameter, replika multi-sumber `sql_thread` untuk semua saluran dengan pembaruan akan dimulai ulang untuk menerapkan perubahan secara dinamis. Jika pembaruan melibatkan filter global, maka semua saluran replikasi dalam status berjalan dimulai ulang.
+ Semua filter global diterapkan sebelum filter khusus saluran apa pun.
+ Jika filter diterapkan secara global dan pada tingkat saluran, maka hanya filter tingkat saluran yang diterapkan. Misalnya, jika filternya`replicate_ignore_db="db1,`channel_22`:db2"`, maka `replicate_ignore_db` disetel ke `db1` diterapkan ke semua saluran kecuali untuk`channel_22`, dan hanya `channel_22` mengabaikan perubahan dari`db2`.

Contoh 1: Mengatur filter global

Dalam contoh berikut, `temp_data` database dikecualikan dari replikasi di setiap saluran.

Untuk Linux, macOS, atau Unix:

```
aws rds modify-db-parameter-group \
--db-parameter-group-name myparametergroup \
--parameters "ParameterName=replicate-ignore-db,ParameterValue='temp_data',ApplyMethod=immediate"
```

Contoh 2: Mengatur filter tingkat saluran

Dalam contoh berikut, perubahan dari `sample22` database hanya disertakan dalam saluran`channel_22`. Demikian pula, perubahan dari `sample99` database hanya disertakan dalam saluran`channel_99`.

Untuk Linux, macOS, atau Unix:

```
aws rds modify-db-parameter-group \
--db-parameter-group-name myparametergroup \
--parameters "ParameterName=replicate-do-db,ParameterValue='\`channel_22\`:sample22,\`channel_99\`:sample99',ApplyMethod=immediate"
```

## Memantau saluran replikasi multi-sumber
<a name="mysql-multi-source-replication-monitoring"></a>

Anda dapat memantau saluran individual dalam replika multi-sumber dengan menggunakan metode berikut:
+ Untuk memantau status semua saluran atau saluran tertentu, sambungkan ke replika multi-sumber dan jalankan perintah `SHOW REPLICA STATUS` atau`SHOW REPLICA STATUS FOR CHANNEL 'channel_name'`. Untuk informasi selengkapnya, lihat [Memeriksa Status Replikasi](https://dev.mysql.com/doc/refman/8.0/en/replication-administration-status.html) dalam dokumentasi MySQL.
+ Untuk menerima pemberitahuan saat saluran replikasi dimulai, dihentikan, atau dihapus, gunakan pemberitahuan acara RDS. Untuk informasi selengkapnya, lihat [Bekerja dengan pemberitahuan RDS acara Amazon](USER_Events.md).
+ Untuk memantau lag untuk saluran tertentu, periksa `ReplicationChannelLag` metrik untuk itu. Titik data untuk metrik ini memiliki jangka waktu 60 detik (1 menit) yang tersedia selama 15 hari. Untuk menemukan lag saluran replikasi untuk saluran, gunakan pengenal instance dan nama saluran replikasi. Untuk menerima pemberitahuan ketika lag ini melebihi ambang batas tertentu, Anda dapat mengatur CloudWatch alarm. Untuk informasi selengkapnya, lihat [Memantau metrik Amazon RDS Aurora dengan Amazon CloudWatch](monitoring-cloudwatch.md).

## Pertimbangan dan praktik terbaik untuk replikasi multi-sumber
<a name="mysql-multi-source-replication-considerations"></a>

Sebelum Anda menggunakan replikasi multi-sumber pada RDS untuk MySQL, tinjau pertimbangan dan praktik terbaik berikut:
+ Pastikan bahwa instans DB yang dikonfigurasi sebagai replika multi-sumber memiliki sumber daya yang cukup seperti throughput, memori, CPU, dan IOPS untuk menangani beban kerja dari beberapa instance sumber.
+ Pantau pemanfaatan sumber daya secara teratur pada replika multi-sumber Anda dan sesuaikan konfigurasi penyimpanan atau instans untuk menangani beban kerja tanpa membebani sumber daya.
+ Anda dapat mengonfigurasi replikasi multi-utas pada replika multi-sumber dengan mengatur variabel `replica_parallel_workers` sistem ke nilai yang lebih besar dari. `0` Dalam hal ini, jumlah utas yang dialokasikan untuk setiap saluran adalah nilai variabel ini, ditambah satu utas koordinator untuk mengelola utas applier.
+ Konfigurasikan filter replikasi dengan tepat untuk menghindari konflik. Untuk mereplikasi seluruh database ke database lain pada replika, Anda dapat menggunakan opsi. `--replicate-rewrite-db` Misalnya, Anda dapat mereplikasi semua tabel dalam database A ke database B pada contoh replika. Pendekatan ini dapat membantu ketika semua instance sumber menggunakan konvensi penamaan skema yang sama. Untuk informasi tentang `--replicate-rewrite-db` opsi, lihat [Opsi Server Replika dan Variabel](https://dev.mysql.com/doc/refman/8.0/en/replication-options-replica.html) dalam dokumentasi MySQL.
+ Untuk menghindari kesalahan replikasi, hindari menulis ke replika. Kami menyarankan Anda mengaktifkan `read_only` parameter pada replika multi-sumber untuk memblokir operasi penulisan. Melakukannya membantu menghilangkan masalah replikasi yang disebabkan oleh operasi penulisan yang bertentangan.
+ Untuk meningkatkan kinerja operasi baca seperti jenis dan gabungan beban tinggi yang dijalankan pada replika multi-sumber, pertimbangkan untuk menggunakan RDS Optimized Reads. Fitur ini dapat membantu dengan kueri yang bergantung pada tabel sementara besar atau mengurutkan file. Untuk informasi selengkapnya, lihat [Meningkatkan kinerja kueri RDS untuk My SQL dengan Amazon RDS Optimized Reads](rds-optimized-reads.md).
+ Untuk meminimalkan kelambatan replikasi dan meningkatkan kinerja replika multi-sumber, pertimbangkan untuk mengaktifkan penulisan yang dioptimalkan. Untuk informasi selengkapnya, lihat [Meningkatkan performa penulisan dengan RDS Optimized Writes for MySQL](rds-optimized-writes.md).
+ Lakukan operasi manajemen (seperti mengubah konfigurasi) pada satu saluran pada satu waktu, dan hindari melakukan perubahan pada beberapa saluran dari beberapa koneksi. Praktik-praktik ini dapat menyebabkan konflik dalam operasi replikasi. Misalnya, mengeksekusi `rds_skip_repl_error_for_channel` dan `rds_start_replication_for_channel` prosedur secara bersamaan dari beberapa koneksi dapat menyebabkan melewatkan peristiwa pada saluran yang berbeda dari yang dimaksudkan.
+ Anda dapat mengaktifkan pencadangan pada instans replikasi multi-sumber dan mengekspor data dari instans tersebut ke bucket Amazon S3 untuk menyimpannya untuk tujuan jangka panjang. Namun, penting juga untuk mengonfigurasi cadangan dengan retensi yang sesuai pada instance sumber individual. Untuk informasi tentang mengekspor data snapshot ke Amazon S3, lihat. [Mengekspor data snapshot DB ke Amazon S3 untuk Amazon RDS](USER_ExportSnapshot.md)
+ Untuk mendistribusikan beban kerja baca pada replika multi-sumber, Anda dapat membuat replika baca dari replika multi-sumber. Anda dapat menemukan replika baca ini secara berbeda Wilayah AWS berdasarkan persyaratan aplikasi Anda. Untuk informasi selengkapnya tentang replika baca, lihat [Menggunakan replika baca MySQL](USER_MySQL.Replication.ReadReplicas.md).

## Keterbatasan untuk replikasi multi-sumber pada RDS untuk MySQL
<a name="mysql-multi-source-replication-limitations"></a>

Batasan berikut berlaku untuk replikasi multi-sumber pada RDS untuk MySQL:
+ Saat ini, RDS untuk MySQL mendukung konfigurasi maksimum 15 saluran untuk replika multi-sumber.
+ Instance replika baca tidak dapat dikonfigurasi sebagai replika multi-sumber.
+ Untuk mengonfigurasi replikasi multi-sumber pada RDS untuk MySQL yang menjalankan engine versi 5.7, Performance Schema harus diaktifkan pada instance replika. Mengaktifkan Skema Kinerja adalah opsional pada RDS untuk MySQL yang menjalankan engine versi 8.0 atau 8.4.
+ Untuk RDS untuk MySQL yang menjalankan engine versi 5.7, filter replikasi berlaku untuk semua saluran replikasi. Untuk RDS untuk MySQL yang menjalankan engine versi 8.0 atau 8.4, Anda dapat mengonfigurasi filter yang berlaku untuk semua saluran replikasi atau saluran individual.
+ Memulihkan snapshot RDS atau melakukan Point-in-time-Restore (PITR) tidak memulihkan konfigurasi saluran replika multi-sumber.
+ Saat Anda membuat replika baca dari replika multi-sumber, itu hanya mereplikasi data dari instance multi-sumber. Itu tidak mengembalikan konfigurasi saluran apa pun.
+ MySQL tidak mendukung pengaturan jumlah pekerja paralel yang berbeda untuk setiap saluran. Setiap saluran mendapatkan jumlah pekerja paralel yang sama berdasarkan `replica_parallel_workers` nilainya.

Batasan tambahan berikut berlaku jika target replikasi multi-sumber Anda adalah cluster DB multi-AZ:
+ Saluran harus dikonfigurasi untuk sumber RDS untuk instance MySQL sebelum penulisan ke instance itu terjadi.
+ Setiap sumber RDS untuk instance MySQL harus mengaktifkan replikasi berbasis GTID.
+ Peristiwa failover pada cluster DB menghapus konfigurasi replikasi multi-sumber. Memulihkan konfigurasi itu membutuhkan pengulangan langkah-langkah konfigurasi.