

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

# Menggunakan penerusan tulis di dalam basis data global Aurora MySQL
<a name="aurora-global-database-write-forwarding-ams"></a>

**Topics**
+ [Ketersediaan wilayah dan versi penerusan tulis di Aurora MySQL](#aurora-global-database-write-forwarding-regions-versions-ams)
+ [Mengaktifkan penerusan tulis di Aurora MySQL](#aurora-global-database-write-forwarding-enabling-ams)
+ [Memeriksa apakah klaster sekunder telah mengaktifkan penerusan tulis di Aurora MySQL](#aurora-global-database-write-forwarding-describing-ams)
+ [Kompatibilitas aplikasi dan SQL dengan penerusan tulis di Aurora MySQL](#aurora-global-database-write-forwarding-compatibility-ams)
+ [Isolasi dan konsistensi untuk penerusan tulis di Aurora MySQL](#aurora-global-database-write-forwarding-isolation-ams)
+ [Menjalankan pernyataan multibagian dengan penerusan tulis di Aurora MySQL](#aurora-global-database-write-forwarding-multipart-ams)
+ [Transaksi dengan penerusan tulis di Aurora MySQL](#aurora-global-database-write-forwarding-txns-ams)
+ [Parameter konfigurasi untuk penerusan tulis di Aurora MySQL](#aurora-global-database-write-forwarding-params-ams)
+ [CloudWatch Metrik Amazon untuk penerusan tulis di Aurora MySQL](#aurora-global-database-write-forwarding-cloudwatch-ams)
+ [Variabel status Aurora MySQL untuk penerusan tulis](#aurora-global-database-write-forwarding-status-ams)

## Ketersediaan wilayah dan versi penerusan tulis di Aurora MySQL
<a name="aurora-global-database-write-forwarding-regions-versions-ams"></a>

Penerusan tulis didukung dengan Aurora MySQL 2.08.1 dan versi yang lebih tinggi, di setiap Wilayah di mana basis data global Aurora tersedia. MySQL-based 

Untuk informasi tentang versi dan ketersediaan Wilayah basis data global Aurora MySQL, lihat [Basis data global Aurora dengan Aurora MySQL](Concepts.Aurora_Fea_Regions_DB-eng.Feature.GlobalDatabase.md#Concepts.Aurora_Fea_Regions_DB-eng.Feature.GlobalDatabase.amy).

## Mengaktifkan penerusan tulis di Aurora MySQL
<a name="aurora-global-database-write-forwarding-enabling-ams"></a>

Secara default, penerusan tulis tidak diaktifkan saat Anda menambahkan klaster sekunder ke basis data global Aurora.

Untuk mengaktifkan penerusan tulis menggunakan Konsol Manajemen AWS, pilih kotak centang **Aktifkan penerusan tulis global di** bawah **Baca replika tulis penerusan** saat Anda menambahkan Wilayah untuk database global. Untuk klaster sekunder yang sudah ada, ubah klaster tersebut untuk **Mengaktifkan penerusan tulis global**. Untuk menonaktifkan penerusan tulis, kosongkan **Aktifkan penerusan tulis global** saat menambahkan Wilayah atau memodifikasi klaster sekunder.

 Untuk mengaktifkan penerusan tulis menggunakan AWS CLI, gunakan opsi. `--enable-global-write-forwarding` Opsi ini berfungsi saat Anda membuat klaster sekunder baru menggunakan perintah `create-db-cluster`. Opsi ini juga berfungsi saat Anda memodifikasi klaster sekunder yang ada dengan menggunakan perintah `modify-db-cluster`. Opsi ini mengharuskan basis data global menggunakan versi Aurora yang mendukung penerusan tulis. Anda dapat menonaktifkan penerusan tulis dengan menggunakan opsi `--no-enable-global-write-forwarding` dengan perintah CLI yang sama ini. 

 Untuk mengaktifkan penerusan tulis menggunakan API Amazon RDS, atur parameter `EnableGlobalWriteForwarding` ke `true`. Parameter ini berfungsi saat Anda membuat klaster sekunder baru menggunakan operasi `CreateDBCluster`. Opsi ini juga berfungsi saat Anda memodifikasi klaster sekunder yang ada dengan menggunakan operasi `ModifyDBCluster`. Opsi ini mengharuskan basis data global menggunakan versi Aurora yang mendukung penerusan tulis. Anda dapat menonaktifkan penerusan tulis dengan mengatur parameter `EnableGlobalWriteForwarding` ke `false`. 

**catatan**  
Agar sesi basis data memanfaatkan penerusan tulis, tentukan pengaturan untuk parameter konfigurasi `aurora_replica_read_consistency`. Lakukan hal ini di setiap sesi yang menggunakan fitur penerusan tulis. Untuk informasi tentang parameter ini, lihat [Isolasi dan konsistensi untuk penerusan tulis di Aurora MySQL](#aurora-global-database-write-forwarding-isolation-ams).   
Fitur RDS Proxy tidak mendukung nilai `SESSION` untuk variabel `aurora_replica_read_consistency`. Mengatur nilai ini dapat menghasilkan perilaku tak terduga.

Contoh CLI berikut menunjukkan bagaimana Anda dapat menyiapkan basis data global Aurora dengan penerusan tulis diaktifkan atau dinonaktifkan. Item yang disorot mewakili perintah dan opsi yang penting untuk menentukan dan menjaga infrastruktur yang konsisten untuk basis data global Aurora. 

 Contoh berikut membuat basis data global Aurora, klaster primer, dan klaster sekunder dengan penerusan tulis diaktifkan. Ganti pilihan Anda sendiri untuk nama pengguna, kata sandi, dan Wilayah AWS primer dan sekunder. 

```
# Create overall global database.
aws rds create-global-cluster --global-cluster-identifier write-forwarding-test \
  --engine aurora-mysql --engine-version 5.7.mysql_aurora.2.11.1 \
  --region {{us-east-1}}

# Create primary cluster, in the same AWS Region as the global database.
aws rds create-db-cluster --global-cluster-identifier write-forwarding-test \
  --db-cluster-identifier write-forwarding-test-cluster-1 \
  --engine aurora-mysql --engine-version 5.7.mysql_aurora.2.11.1 \
  --master-username {{user_name}} --master-user-password {{password}} \
  --region {{us-east-1}}

aws rds create-db-instance --db-cluster-identifier write-forwarding-test-cluster-1 \
  --db-instance-identifier write-forwarding-test-cluster-1-instance-1 \
  --db-instance-class db.r5.large \
  --engine aurora-mysql --engine-version 5.7.mysql_aurora.2.11.1 \
  --region {{us-east-1}}

aws rds create-db-instance --db-cluster-identifier write-forwarding-test-cluster-1 \
  --db-instance-identifier write-forwarding-test-cluster-1-instance-2 \
  --db-instance-class db.r5.large \
  --engine aurora-mysql --engine-version 5.7.mysql_aurora.2.11.1 \
  --region {{us-east-1}}

# Create secondary cluster, in a different AWS Region than the global database,
# with write forwarding enabled.
aws rds create-db-cluster --global-cluster-identifier write-forwarding-test \
  --db-cluster-identifier write-forwarding-test-cluster-2 \
  --engine aurora-mysql --engine-version 5.7.mysql_aurora.2.11.1 \
  --region {{us-east-2}} \
  --enable-global-write-forwarding

aws rds create-db-instance --db-cluster-identifier write-forwarding-test-cluster-2 \
  --db-instance-identifier write-forwarding-test-cluster-2-instance-1 \
  --db-instance-class db.r5.large \
  --engine aurora-mysql --engine-version 5.7.mysql_aurora.2.11.1 \
  --region {{us-east-2}}

aws rds create-db-instance --db-cluster-identifier write-forwarding-test-cluster-2 \
  --db-instance-identifier write-forwarding-test-cluster-2-instance-2 \
  --db-instance-class db.r5.large \
  --engine aurora-mysql --engine-version 5.7.mysql_aurora.2.11.1 \
  --region {{us-east-2}}
```

 Contoh berikut adalah lanjutan contoh sebelumnya. Contoh ini membuat klaster sekunder tanpa mengaktifkan penerusan tulis, kemudian mengaktifkan penerusan tulis. Setelah contoh ini selesai, semua klaster sekunder dalam basis data global mengaktifkan penerusan tulis.

```
# Create secondary cluster, in a different AWS Region than the global database,
# without write forwarding enabled.
aws rds create-db-cluster --global-cluster-identifier write-forwarding-test \
  --db-cluster-identifier write-forwarding-test-cluster-2 \
  --engine aurora-mysql --engine-version 5.7.mysql_aurora.2.11.1 \
  --region {{us-west-1}}

aws rds create-db-instance --db-cluster-identifier write-forwarding-test-cluster-2 \
  --db-instance-identifier write-forwarding-test-cluster-2-instance-1 \
  --db-instance-class db.r5.large \
  --engine aurora-mysql --engine-version 5.7.mysql_aurora.2.11.1 \
  --region {{us-west-1}}

aws rds create-db-instance --db-cluster-identifier write-forwarding-test-cluster-2 \
  --db-instance-identifier write-forwarding-test-cluster-2-instance-2 \
  --db-instance-class db.r5.large \
  --engine aurora-mysql --engine-version 5.7.mysql_aurora.2.11.1 \
  --region {{us-west-1}}

aws rds modify-db-cluster --db-cluster-identifier write-forwarding-test-cluster-2 \
  --region {{us-east-2}} \
  --enable-global-write-forwarding
```

## Memeriksa apakah klaster sekunder telah mengaktifkan penerusan tulis di Aurora MySQL
<a name="aurora-global-database-write-forwarding-describing-ams"></a>

 Untuk menentukan apakah Anda dapat menggunakan penerusan tulis dari klaster sekunder, Anda dapat memeriksa apakah klaster tersebut memiliki atribut `"GlobalWriteForwardingStatus": "enabled"`. 

Di Konsol Manajemen AWS, pada tab **Konfigurasi** halaman detail untuk cluster, Anda melihat status **Enabled** for **Global read replica write forwarding**.

Untuk melihat status setelan penerusan tulis global untuk semua cluster Anda, jalankan perintah berikut. AWS CLI 

Klaster sekunder menunjukkan nilai `"enabled"` atau `"disabled"` untuk menunjukkan apakah penerusan tulis diaktifkan atau dinonaktifkan. Nilai `null` menunjukkan bahwa penerusan tulis tidak tersedia untuk klaster tersebut. Klaster ini bukan bagian dari basis data global, atau merupakan klaster primer, bukan klaster sekunder. Nilainya juga bisa `"enabling"` atau `"disabling"` jika penerusan tulis sedang dalam proses diaktifkan atau dinonaktifkan.

**Example**  

```
aws rds describe-db-clusters \
--query '*[].{DBClusterIdentifier:DBClusterIdentifier,GlobalWriteForwardingStatus:GlobalWriteForwardingStatus}'

[
    {
        "GlobalWriteForwardingStatus": "enabled",
        "DBClusterIdentifier": "aurora-write-forwarding-test-replica-1"
    },
    {
        "GlobalWriteForwardingStatus": "disabled",
        "DBClusterIdentifier": "aurora-write-forwarding-test-replica-2"
    },
    {
        "GlobalWriteForwardingStatus": null,
        "DBClusterIdentifier": "non-global-cluster"
    }
]
```

 Untuk menemukan semua klaster sekunder yang memiliki penerusan tulis global, jalankan perintah berikut. Perintah ini juga mengembalikan titik akhir pembaca klaster ini. Anda menggunakan titik akhir pembaca klaster sekunder ketika Anda menggunakan penerusan tulis dari sekunder ke primer dalam basis data global Aurora Anda. 

**Example**  

```
aws rds describe-db-clusters --query 'DBClusters[].{DBClusterIdentifier:DBClusterIdentifier,GlobalWriteForwardingStatus:GlobalWriteForwardingStatus,ReaderEndpoint:ReaderEndpoint} | [?GlobalWriteForwardingStatus == `enabled`]'
[
    {
        "GlobalWriteForwardingStatus": "enabled",
        "ReaderEndpoint": "aurora-write-forwarding-test-replica-1.cluster-ro-cnpexample.us-west-2.rds.amazonaws.com",
        "DBClusterIdentifier": "aurora-write-forwarding-test-replica-1"
    }
]
```

## Kompatibilitas aplikasi dan SQL dengan penerusan tulis di Aurora MySQL
<a name="aurora-global-database-write-forwarding-compatibility-ams"></a>

Anda dapat menggunakan jenis pernyataan SQL berikut dengan penerusan tulis:
+ Pernyataan bahasa manipulasi data (DML), seperti `INSERT`, `DELETE`, dan `UPDATE`. Ada beberapa pembatasan pada properti pernyataan ini yang dapat Anda gunakan dengan penerusan tulis, seperti yang dijelaskan di bawah ini.
+ Pernyataan `SELECT ... LOCK IN SHARE MODE` dan `SELECT FOR UPDATE`.
+ Pernyataan `PREPARE` dan `EXECUTE`.

 Pernyataan tertentu tidak diizinkan atau dapat menghasilkan hasil usang saat Anda menggunakannya dalam basis data global dengan penerusan tulis. Dengan demikian, pengaturan `EnableGlobalWriteForwarding` dinonaktifkan secara default untuk klaster sekunder. Sebelum mengaktifkan pengaturan tersebut, periksa untuk memastikan bahwa kode aplikasi Anda tidak terpengaruh oleh pembatasan ini. 

 Batasan berikut berlaku untuk pernyataan SQL yang Anda gunakan untuk penerusan tulis. Dalam beberapa kasus, Anda dapat menggunakan pernyataan pada klaster sekunder dengan penerusan tulis yang diaktifkan pada tingkat klaster. Pendekatan ini berfungsi jika penerusan tulis tidak diaktifkan dalam sesi oleh parameter konfigurasi `aurora_replica_read_consistency`. Mencoba menggunakan pernyataan saat tidak diizinkan karena penerusan tulis menyebabkan pesan kesalahan dengan format berikut. 

```
ERROR 1235 (42000): This version of MySQL doesn't yet support '{{operation}} with write forwarding'.
```

**Bahasa definisi data (DDL)**  
 Buat koneksi ke klaster primer untuk menjalankan pernyataan DDL. Anda tidak dapat menjalankannya dari instans DB pembaca.

**Memperbarui tabel permanen menggunakan data dari tabel sementara**  
 Anda dapat menggunakan tabel sementara pada klaster sekunder dengan penerusan tulis yang diaktifkan. Namun, Anda tidak dapat menggunakan pernyataan DML untuk mengubah tabel permanen jika pernyataan tersebut mengacu pada tabel sementara. Misalnya, Anda tidak dapat menggunakan pernyataan `INSERT ... SELECT` yang mengambil data dari tabel sementara. Tabel sementara ada pada klaster sekunder dan tidak tersedia ketika pernyataan berjalan pada klaster primer. 

**Transaksi XA**  
 Anda tidak dapat menggunakan pernyataan berikut pada klaster sekunder saat penerusan tulis diaktifkan dalam sesi. Anda dapat menggunakan pernyataan ini pada klaster sekunder yang tidak memiliki penerusan tulis yang diaktifkan, atau dalam sesi dengan pengaturan `aurora_replica_read_consistency` yang kosong. Sebelum mengaktifkan penerusan tulis dalam sebuah sesi, periksa apakah kode Anda menggunakan pernyataan ini.   

```
XA {START|BEGIN} xid [JOIN|RESUME]
XA END xid [SUSPEND [FOR MIGRATE]]
XA PREPARE xid
XA COMMIT xid [ONE PHASE]
XA ROLLBACK xid
XA RECOVER [CONVERT XID]
```

**Pernyataan LOAD untuk tabel permanen**  
 Anda tidak dapat menggunakan pernyataan berikut pada klaster sekunder dengan penerusan tulis yang diaktifkan.   

```
LOAD DATA INFILE 'data.txt' INTO TABLE t1;
        LOAD XML LOCAL INFILE 'test.xml' INTO TABLE t1;
```
 Anda dapat memuat data ke dalam tabel sementara pada klaster sekunder. Namun, pastikan Anda menjalankan semua pernyataan `LOAD` yang mengacu pada tabel permanen hanya ada pada klaster primer. 

**Pernyataan plugin**  
 Anda tidak dapat menggunakan pernyataan berikut pada klaster sekunder dengan penerusan tulis yang diaktifkan.   

```
INSTALL PLUGIN example SONAME 'ha_example.so';
UNINSTALL PLUGIN example;
```

**Pernyataan SAVEPOINT**  
 Anda tidak dapat menggunakan pernyataan berikut pada klaster sekunder saat penerusan tulis diaktifkan dalam sesi. Anda dapat menggunakan pernyataan ini pada klaster sekunder yang tidak memiliki penerusan tulis yang diaktifkan, atau dalam sesi dengan pengaturan `aurora_replica_read_consistency` yang kosong. Periksa apakah kode Anda menggunakan pernyataan ini sebelum mengaktifkan penerusan tulis dalam sebuah sesi.   

```
SAVEPOINT t1_save;
ROLLBACK TO SAVEPOINT t1_save;
RELEASE SAVEPOINT t1_save;
```

## Isolasi dan konsistensi untuk penerusan tulis di Aurora MySQL
<a name="aurora-global-database-write-forwarding-isolation-ams"></a>

 Dalam sesi yang menggunakan penerusan tulis, Anda hanya dapat menggunakan tingkat isolasi `REPEATABLE READ`. Meskipun Anda juga dapat menggunakan tingkat isolasi `READ COMMITTED` dengan klaster hanya-baca di Wilayah AWS sekunder, tingkat isolasi tersebut tidak berfungsi dengan penerusan tulis. Untuk informasi tentang tingkat isolasi `REPEATABLE READ` dan `READ COMMITTED`, lihat [Tingkat isolasi Aurora MySQL](AuroraMySQL.Reference.IsolationLevels.md). 

 Anda dapat mengontrol tingkat konsistensi baca di klaster sekunder. Tingkat konsistensi baca menentukan seberapa lama waktu tunggu klaster sekunder sebelum setiap operasi baca untuk memastikan bahwa beberapa atau semua perubahan direplikasi dari klaster primer. Anda dapat menyesuaikan tingkat konsistensi baca untuk memastikan bahwa semua operasi tulis yang diteruskan dari sesi Anda terlihat dalam klaster sekunder sebelum kueri berikutnya. Anda juga dapat menggunakan pengaturan ini untuk memastikan bahwa kueri pada klaster sekunder selalu melihat pembaruan terkini dari klaster primer. Hal ini bahkan berlaku untuk yang dikirimkan oleh sesi lain atau klaster lainnya. Untuk menentukan jenis perilaku ini untuk aplikasi Anda, Anda memilih nilai untuk parameter tingkat sesi `aurora_replica_read_consistency`. 

**penting**  
Selalu atur parameter `aurora_replica_read_consistency` untuk sesi apa pun yang ingin Anda terapkan penerusan tulis. Jika tidak, Aurora tidak mengaktifkan penerusan tulis untuk sesi tersebut. Parameter ini mempunyai nilai kosong secara default, jadi pilih nilai tertentu apabila Anda menggunakan parameter ini. Parameter `aurora_replica_read_consistency` memiliki efek hanya pada klaster sekunder dengan penerusan tulis diaktifkan.  
Untuk Aurora MySQL versi 2 dan versi 3 sebelum 3.04, gunakan `aurora_replica_read_consistency` sebagai variabel sesi. Untuk Aurora MySQL versi 3.04 dan lebih tinggi, Anda dapat menggunakan `aurora_replica_read_consistency` sebagai variabel sesi atau sebagai parameter klaster DB.

 Untuk parameter `aurora_replica_read_consistency`, Anda dapat menentukan nilai `EVENTUAL`, `SESSION`, dan `GLOBAL`. 

 Saat Anda meningkatkan tingkat konsistensi, aplikasi Anda menghabiskan lebih banyak waktu menunggu perubahan disebarkan antar AWS Wilayah. Anda dapat memilih keseimbangan antara waktu respons yang cepat dan memastikan bahwa perubahan yang dilakukan di dalam lokasi lainnya sepenuhnya tersedia sebelum kueri Anda berjalan. 

 Dengan konsistensi baca yang disetel ke`EVENTUAL`, kueri di AWS Wilayah sekunder yang menggunakan penerusan tulis mungkin melihat data yang sedikit basi karena kelambatan replikasi. Hasil operasi tulis dalam sesi yang sama tidak terlihat sampai operasi tulis dilakukan pada Wilayah primer dan direplikasi ke Wilayah saat ini. Kueri tidak menunggu hasil yang diperbarui untuk tersedia. Dengan demikian, kueri dapat mengambil data yang lebih lama atau data yang diperbarui, bergantung pada waktu pernyataan dan jumlah lag replikasi. 

 Dengan konsistensi baca disetel ke`SESSION`, semua kueri di AWS Wilayah sekunder yang menggunakan penerusan tulis melihat hasil dari semua perubahan yang dibuat dalam sesi tersebut. Perubahan dapat dilihat terlepas dari apakah transaksi dilakukan. Jika perlu, kueri menunggu hasil operasi tulis yang diteruskan untuk direplikasi ke Wilayah saat ini. Kueri tidak menunggu hasil yang diperbarui dari operasi tulis yang dilakukan di Wilayah lain atau dalam sesi lain di dalam Wilayah saat ini. 

 Dengan konsistensi baca diatur ke`GLOBAL`, sesi di AWS Wilayah sekunder melihat perubahan yang dibuat oleh sesi itu. Ini juga melihat semua perubahan yang dilakukan dari AWS Wilayah primer dan AWS Wilayah sekunder lainnya. Setiap kueri mungkin akan menunggu selama periode yang berbeda-beda tergantung jumlah lag sesi. Kueri berlanjut saat klaster sekunder dimutakhirkan dengan semua data yang di-commit dari klaster primer, pada saat kueri dimulai. 

 Untuk informasi selengkapnya tentang semua parameter yang terlibat dalam penerusan tulis, lihat [Parameter konfigurasi untuk penerusan tulis di Aurora MySQL](#aurora-global-database-write-forwarding-params-ams). 

### Contoh menggunakan penerusan tulis
<a name="aurora-global-database-write-forwarding-examples-ams"></a>

Contoh-contoh ini menggunakan `aurora_replica_read_consistency` sebagai variabel sesi. Untuk Aurora MySQL versi 3.04 dan lebih tinggi, Anda dapat menggunakan `aurora_replica_read_consistency` sebagai variabel sesi atau sebagai parameter klaster DB.

Dalam contoh ini, klaster primer berada di Wilayah AS Timur (Virginia Utara). Klaster sekunder berada di Wilayah AS Timur (Ohio). Contoh ini menunjukkan efek menjalankan pernyataan `INSERT` yang diikuti dengan pernyataan `SELECT`. Tergantung nilai pengaturan `aurora_replica_read_consistency`, hasilnya mungkin berbeda tergantung waktu pernyataan. Untuk mencapai konsistensi yang lebih tinggi, Anda mungkin menunggu sebentar sebelum mengeluarkan pernyataan `SELECT`. Atau Aurora dapat secara otomatis menunggu sampai hasil selesai mereplikasi sebelum melanjutkan dengan `SELECT`.

Dalam contoh ini, ada pengaturan konsistensi baca `eventual`. Menjalankan pernyataan `INSERT` yang langsung diikuti oleh pernyataan `SELECT` tetap mengembalikan nilai `COUNT(*)`. Nilai ini mencerminkan jumlah baris sebelum baris baru disisipkan. Dengan menjalankan `SELECT` lagi beberapa saat kemudian, muncul hitungan baris yang diperbarui. Pernyataan `SELECT` tidak menunggu.

```
mysql> set aurora_replica_read_consistency = 'eventual';
mysql> select count(*) from t1;
+----------+
| count(*) |
+----------+
|        5 |
+----------+
1 row in set (0.00 sec)
mysql> insert into t1 values (6); select count(*) from t1;
+----------+
| count(*) |
+----------+
|        5 |
+----------+
1 row in set (0.00 sec)
mysql> select count(*) from t1;
+----------+
| count(*) |
+----------+
|        6 |
+----------+
1 row in set (0.00 sec)
```

Dengan pengaturan konsistensi baca `session`, pernyataan `SELECT` langsung setelah `INSERT` akan menunggu sampai perubahan dari pernyataan `INSERT` terlihat. Pernyataan `SELECT` selanjutnya tidak menunggu.

```
mysql> set aurora_replica_read_consistency = 'session';
mysql> select count(*) from t1;
+----------+
| count(*) |
+----------+
|        6 |
+----------+
1 row in set (0.01 sec)
mysql> insert into t1 values (6); select count(*) from t1; select count(*) from t1;
Query OK, 1 row affected (0.08 sec)
+----------+
| count(*) |
+----------+
|        7 |
+----------+
1 row in set (0.37 sec)
+----------+
| count(*) |
+----------+
|        7 |
+----------+
1 row in set (0.00 sec)
```

 Dengan pengaturan konsistensi baca tetap disetel ke `session`, memperkenalkan waktu tunggu singkat setelah melaksanakan pernyataan `INSERT` membuat hitungan baris yang diperbarui tersedia pada saat pernyataan `SELECT` berikutnya berjalan. 

```
mysql> insert into t1 values (6); select sleep(2); select count(*) from t1;
Query OK, 1 row affected (0.07 sec)
+----------+
| sleep(2) |
+----------+
|        0 |
+----------+
1 row in set (2.01 sec)
+----------+
| count(*) |
+----------+
|        8 |
+----------+
1 row in set (0.00 sec)
```

 Dengan pengaturan konsistensi baca `global`, setiap pernyataan `SELECT` menunggu untuk memastikan bahwa semua data berubah sejak waktu mulai laporan terlihat sebelum melakukan kueri. Durasi tunggu untuk setiap pernyataan `SELECT` berbeda-beda, tergantung jumlah lag replikasi antara klaster primer dan sekunder. 

```
mysql> set aurora_replica_read_consistency = 'global';
mysql> select count(*) from t1;
+----------+
| count(*) |
+----------+
|        8 |
+----------+
1 row in set (0.75 sec)
mysql> select count(*) from t1;
+----------+
| count(*) |
+----------+
|        8 |
+----------+
1 row in set (0.37 sec)
mysql> select count(*) from t1;
+----------+
| count(*) |
+----------+
|        8 |
+----------+
1 row in set (0.66 sec)
```

## Menjalankan pernyataan multibagian dengan penerusan tulis di Aurora MySQL
<a name="aurora-global-database-write-forwarding-multipart-ams"></a>

 Pernyataan DML mungkin terdiri atas beberapa bagian, seperti pernyataan `INSERT ... SELECT` atau pernyataan `DELETE ... WHERE`. Dalam kasus ini, seluruh pernyataan diteruskan ke klaster primer dan berjalan di sana.

## Transaksi dengan penerusan tulis di Aurora MySQL
<a name="aurora-global-database-write-forwarding-txns-ams"></a>

 Apakah transaksi diteruskan ke klaster primer ditentukan oleh mode akses transaksi. Anda dapat menentukan mode akses untuk transaksi dengan menggunakan pernyataan `SET TRANSACTION` atau pernyataan `START TRANSACTION`. Anda juga dapat menentukan mode akses transaksi dengan mengubah nilai variabel sesi [transaction\_read\_only](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_transaction_read_only). Anda dapat mengubah nilai sesi ini hanya saat Anda terhubung dengan klaster DB yang memiliki penerusan tulis diaktifkan.

 Jika transaksi yang berlangsung lama tidak mengeluarkan pernyataan apa pun dalam waktu yang lama, transaksi tersebut kemungkinan melebihi periode batas waktu idle. Periode ini memiliki nilai default satu menit. Anda dapat meningkatkannya hingga satu hari. Transaksi yang melebihi batas waktu idle dibatalkan oleh klaster primer. Pernyataan berikutnya yang Anda kirimkan akan menerima kesalahan waktu habis. Kemudian Aurora akan mengembalikan transaksi. 

 Jenis kesalahan ini dapat terjadi dalam kasus lain ketika penerusan tulis menjadi tidak tersedia. Misalnya, Aurora membatalkan transaksi apa pun yang menggunakan penerusan tulis jika Anda memulai ulang klaster primer atau jika Anda menonaktifkan pengaturan konfigurasi penerusan tulis. 

## Parameter konfigurasi untuk penerusan tulis di Aurora MySQL
<a name="aurora-global-database-write-forwarding-params-ams"></a>

 Grup parameter klaster Aurora mencakup pengaturan untuk fitur penerusan tulis. Karena ini adalah parameter klaster, semua instans DB di setiap klaster memiliki nilai yang sama untuk variabel ini. Detail tentang parameter ini dirangkum dalam tabel berikut, dengan catatan penggunaan setelah tabel.


| Nama | Cakupan | Tipe | Nilai default | Nilai valid | 
| --- | --- | --- | --- | --- | 
| aurora\_fwd\_master\_idle\_timeout (Aurora MySQL versi 2) | Global  | integer tanpa tanda | 60 | 1-86.400 | 
| aurora\_fwd\_master\_max\_connections\_pct (Aurora MySQL versi 2) | Global | integer panjang tanpa tanda | 10 | 0–90 | 
| aurora\_fwd\_writer\_idle\_timeout (Aurora MySQL versi 3) | Global | integer tanpa tanda | 60 | 1-86.400 | 
| aurora\_fwd\_writer\_max\_connections\_pct (Aurora MySQL versi 3) | Global | integer panjang tanpa tanda | 10 | 0–90 | 
| aurora\_replica\_read\_consistency | Sesi untuk versi 2 dan versi 3 lebih rendah dari 3.04, Global untuk versi 3.04 dan lebih tinggi | Enum | '' (null) | EVENTUAL, SESSION, GLOBAL | 

Untuk mengontrol permintaan tulis yang masuk dari klaster sekunder, gunakan pengaturan ini pada klaster primer: 
+  `aurora_fwd_master_idle_timeout`, `aurora_fwd_writer_idle_timeout`: Jumlah detik yang diperlukan klaster primer untuk menunggu aktivitas pada koneksi yang diteruskan dari klaster sekunder sebelum menutupnya. Jika sesi tetap idle setelah periode ini, Aurora akan membatalkan sesi. 
+  `aurora_fwd_master_max_connections_pct`, `aurora_fwd_writer_max_connections_pct`: Batas atas pada koneksi basis data yang dapat digunakan pada instans DB penulis untuk menangani kueri yang diteruskan dari pembaca. Opsi ini dinyatakan dalam bentuk persentase pengaturan `max_connections` untuk instans DB dalam klaster primer. Misalnya, jika `max_connections` adalah 800 dan `aurora_fwd_master_max_connections_pct` atau `aurora_fwd_writer_max_connections_pct` adalah 10, maka penulis mengizinkan maksimal 80 sesi terusan serentak. Koneksi ini berasal dari pool koneksi yang sama yang dikelola oleh pengaturan `max_connections`. 

   Pengaturan ini hanya berlaku pada klaster primer, saat satu atau beberapa klaster sekunder memiliki penerusan tulis yang diaktifkan. Jika Anda menurunkan nilai, koneksi yang ada tidak akan terpengaruh. Aurora mempertimbangkan nilai baru pengaturan saat mencoba membuat koneksi baru dari klaster sekunder. Nilai default adalah 10, mewakili 10% dari nilai `max_connections` . Jika Anda mengaktifkan penerusan kueri di klaster sekunder mana pun, pengaturan ini harus memiliki nilai bukan nol agar operasi tulis dari klaster sekunder dapat berhasil. Jika nilainya nol, operasi tulis menerima kode kesalahan `ER_CON_COUNT_ERROR` dengan pesan `Not enough connections on writer to handle your request`. 

`aurora_replica_read_consistency`Parameter memungkinkan penerusan tulis. Anda menggunakannya dalam setiap sesi. Anda dapat menentukan `EVENTUAL`, `SESSION`, atau `GLOBAL` untuk tingkat konsistensi baca. Untuk mempelajari selengkapnya tentang tingkat konsistensi, lihat [Isolasi dan konsistensi untuk penerusan tulis di Aurora MySQL](#aurora-global-database-write-forwarding-isolation-ams). Aturan berikut berlaku untuk parameter ini:
+  Nilai default adalah " (kosong). 
+ Penerusan tulis tersedia dalam sebuah sesi hanya jika `aurora_replica_read_consistency` diatur ke `EVENTUAL` atau `SESSION` atau `GLOBAL`. Parameter ini hanya relevan dalam instans pembaca klaster sekunder yang memiliki penerusan tulis diaktifkan dan yang berada di dalam basis data global Aurora. 
+  Anda tidak dapat mengatur variabel ini (saat kosong) atau membatalkan pengaturan (saat sudah diatur) di dalam transaksi multipernyataan. Namun, Anda dapat mengubahnya dari satu nilai yang valid (`EVENTUAL`, `SESSION`, atau `GLOBAL`) ke nilai valid lainnya (`EVENTUAL`, `SESSION`, atau `GLOBAL`) selama transaksi tersebut. 
+  Variabel tidak boleh `SET` ketika penerusan tulis tidak diaktifkan pada klaster sekunder.

## CloudWatch Metrik Amazon untuk penerusan tulis di Aurora MySQL
<a name="aurora-global-database-write-forwarding-cloudwatch-ams"></a>

 CloudWatch Metrik Amazon berikut berlaku untuk klaster utama saat Anda menggunakan penerusan tulis pada satu atau beberapa klaster sekunder. Metrik ini semua diukur pada DB instance dalam cluster primer. 


| CloudWatch metrik | Unit | Deskripsi | 
| --- | --- | --- | 
| `AuroraDMLRejectedMasterFull` | Hitungan | Jumlah kueri yang diteruskan yang ditolak karena sesi penuh pada instance DB penulis.<br />Untuk Aurora MySQL versi 2. | 
| `AuroraDMLRejectedWriterFull` | Hitungan | Jumlah kueri yang diteruskan yang ditolak karena sesi penuh pada instance DB penulis.<br />Untuk Aurora MySQL versi 3. | 
| `ForwardingMasterDMLLatency` | Milidetik | Rata-rata waktu untuk memproses setiap pernyataan DML yang diteruskan pada instans DB penulis.<br />Ini tidak termasuk waktu yang diperlukan klaster sekunder untuk meneruskan permintaan tulis, atau waktu untuk mereplikasi perubahan kembali ke klaster sekunder.<br />Untuk Aurora MySQL versi 2. | 
| `ForwardingMasterDMLThroughput` | Hitungan per detik | Jumlah pernyataan DML yang diteruskan yang diproses setiap detik oleh instans DB penulis ini.<br />Untuk Aurora MySQL versi 2. | 
| `ForwardingMasterOpenSessions` | Hitungan | Jumlah sesi yang diteruskan pada instans DB tulis.<br />Untuk Aurora MySQL versi 2. | 
| `ForwardingWriterDMLLatency` | Milidetik | Rata-rata waktu untuk memproses setiap pernyataan DML yang diteruskan pada instans DB penulis.<br />Ini tidak termasuk waktu yang diperlukan klaster sekunder untuk meneruskan permintaan tulis, atau waktu untuk mereplikasi perubahan kembali ke klaster sekunder.<br />Untuk Aurora MySQL versi 3. | 
| `ForwardingWriterDMLThroughput` | Hitungan per detik | Jumlah pernyataan DML yang diteruskan yang diproses setiap detik oleh instans DB penulis ini.Untuk Aurora MySQL versi 3. | 
| `ForwardingWriterOpenSessions` | Hitungan | Jumlah sesi yang diteruskan pada instans DB tulis.Untuk Aurora MySQL versi 3. | 

 CloudWatch Metrik berikut berlaku untuk setiap cluster sekunder. Metrik ini diukur pada setiap DB instance pembaca dalam cluster sekunder dengan penerusan tulis yang diaktfikan. 


| CloudWatch metrik | Unit | Deskripsi | 
| --- | --- | --- | 
| `ForwardingReplicaDMLLatency` | Milidetik | Rata-rata waktu respons DML yang diteruskan pada replika. | 
| `ForwardingReplicaDMLThroughput` | Hitungan per detik | Jumlah pernyataan DML yang diteruskan yang diproses setiap detiknya. | 
| `ForwardingReplicaOpenSessions` | Hitungan | Jumlah sesi yang menggunakan penerusan tulis pada instans DB pembaca. | 
| `ForwardingReplicaReadWaitLatency` | Milidetik | Rata-rata waktu tunggu yang diperlukan sebuah pernyataan `SELECT` di instans DB pembaca untuk menunggu agar dapat mengimbangi klaster primer.<br />Batas tunggu instans DB pembaca sebelum memproses kueri ditentukan oleh pengaturan `aurora_replica_read_consistency`. | 
| `ForwardingReplicaReadWaitThroughput` | Hitungan per detik | Jumlah total pernyataan SELECT yang diproses setiap detik di semua sesi yang meneruskan tulis. | 
|  `ForwardingReplicaSelectLatency` | Milidetik | Latensi SELECT yang diteruskan, rata-rata atas semua pernyataan SELECT yang diteruskan dalam periode pemantauan. | 
|  `ForwardingReplicaSelectThroughput` | Hitungan per detik | Rata-rata throughput SELECT per detik yang diteruskan dalam periode pemantauan. | 

## Variabel status Aurora MySQL untuk penerusan tulis
<a name="aurora-global-database-write-forwarding-status-ams"></a>

 Variabel status MySQL Aurora berikut berlaku untuk cluster utama ketika Anda menggunakan penerusan tulis pada satu atau lebih cluster sekunder. Semua metrik ini diukur pada instans DB penulis dalam klaster primer. 


| Variabel status Aurora MySQL | Unit | Deskripsi | 
| --- | --- | --- | 
| Aurora\_fwd\_master\_dml\_stmt\_count | Hitungan | Total jumlah pernyataan DML yang diteruskan ke instans DB penulis ini.Untuk Aurora MySQL versi 2. | 
| Aurora\_fwd\_master\_dml\_stmt\_duration | Mikrodetik | Total durasi pernyataan DML yang diteruskan ke instans DB penulis ini.<br />Untuk Aurora MySQL versi 2. | 
| Aurora\_fwd\_master\_open\_sessions | Hitungan | Jumlah sesi yang diteruskan pada instans DB tulis.<br />Untuk Aurora MySQL versi 2. | 
| Aurora\_fwd\_master\_select\_stmt\_count | Hitungan | Total jumlah pernyataan `SELECT` yang diteruskan ke instans DB penulis ini.<br />Untuk Aurora MySQL versi 2. | 
| Aurora\_fwd\_master\_select\_stmt\_duration | Mikrodetik | Total durasi pernyataan `SELECT` yang diteruskan ke instans DB penulis ini.<br />Untuk Aurora MySQL versi 2. | 
| Aurora\_fwd\_writer\_dml\_stmt\_count | Hitungan | Total jumlah pernyataan DML yang diteruskan ke instans DB penulis ini.Untuk Aurora MySQL versi 3. | 
| Aurora\_fwd\_writer\_dml\_stmt\_duration | Mikrodetik | Total durasi pernyataan DML yang diteruskan ke instans DB penulis ini. | 
| Aurora\_fwd\_writer\_open\_sessions | Hitungan | Jumlah sesi yang diteruskan pada instans DB tulis.Untuk Aurora MySQL versi 3. | 
| Aurora\_fwd\_writer\_select\_stmt\_count | Hitungan | Total jumlah pernyataan `SELECT` yang diteruskan ke instans DB penulis ini.Untuk Aurora MySQL versi 3. | 
| Aurora\_fwd\_writer\_select\_stmt\_duration | Mikrodetik | Total durasi pernyataan `SELECT` yang diteruskan ke instans DB penulis ini.<br />Untuk Aurora MySQL versi 3. | 

 Variabel status MySQL Aurora berikut berlaku untuk setiap cluster sekunder. Metrik-metrik ini diukur pada setiap instans DB pembaca dalam klaster sekunder dengan penerusan tulis yang diaktifkan. 


| Variabel status Aurora MySQL | Unit | Deskripsi | 
| --- | --- | --- | 
| Aurora\_fwd\_replica\_dml\_stmt\_count | Hitungan | Total jumlah pernyataan DML yang diteruskan ke instans DB pembaca ini. | 
| Aurora\_fwd\_replica\_dml\_stmt\_duration | Mikrodetik | Total durasi semua pernyataan DML yang diteruskan ke instans DB pembaca ini. | 
| Aurora\_fwd\_replica\_errors\_session\_limit | Hitungan | Jumlah sesi yang ditolak oleh klaster primer karena salah satu kondisi kesalahan berikut:[See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/AmazonRDS/latest/AuroraUserGuide/aurora-global-database-write-forwarding-ams.html) | 
| Aurora\_fwd\_replica\_open\_sessions | Hitungan | Jumlah sesi yang menggunakan penerusan tulis pada instans DB pembaca. | 
| Aurora\_fwd\_replica\_read\_wait\_count | Hitungan | Total jumlah tunggu baca-sesudah-tulis pada instans DB pembaca ini.  | 
| Aurora\_fwd\_replica\_read\_wait\_duration | Mikrodetik | Total durasi tunggu karena pengaturan konsistensi baca pada instans DB pembaca ini. | 
| Aurora\_fwd\_replica\_select\_stmt\_count | Hitungan | Total jumlah pernyataan SELECT yang diteruskan ke instans DB pembaca ini. | 
| Aurora\_fwd\_replica\_select\_stmt\_duration | Mikrodetik | Total durasi pernyataan SELECT yang diteruskan ke instans DB pembaca ini.  | 