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
Topik
- Ketersediaan wilayah dan versi penerusan tulis di Aurora MySQL
- Mengaktifkan penerusan tulis di Aurora MySQL
- Memeriksa apakah klaster sekunder telah mengaktifkan penerusan tulis di Aurora MySQL
- Kompatibilitas aplikasi dan SQL dengan penerusan tulis di Aurora MySQL
- Isolasi dan konsistensi untuk penerusan tulis di Aurora MySQL
- Menjalankan pernyataan multibagian dengan penerusan tulis di Aurora MySQL
- Transaksi dengan penerusan tulis di Aurora MySQL
- Parameter konfigurasi untuk penerusan tulis di Aurora MySQL
- CloudWatch Metrik Amazon untuk penerusan tulis di Aurora MySQL
- Variabel status Aurora MySQL untuk penerusan tulis
Ketersediaan wilayah dan versi penerusan tulis di Aurora MySQL
Penerusan tulis didukung dengan Aurora MySQL 2.08.1 dan versi yang lebih tinggi, di setiap Wilayah di mana basis data global berbasis Aurora MySQL tersedia.
Untuk informasi tentang versi dan ketersediaan Wilayah basis data global Aurora MySQL, lihat Basis data global Aurora dengan Aurora MySQL.
Mengaktifkan penerusan tulis di Aurora MySQL
Secara default, penerusan tulis tidak diaktifkan saat Anda menambahkan klaster sekunder ke basis data global Aurora.
Untuk mengaktifkan penerusan tulis menggunakan AWS Management Console, 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.
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-usernameuser_name
--master-user-passwordpassword
\ --regionus-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 \ --regionus-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 \ --regionus-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 \ --regionus-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 \ --regionus-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 \ --regionus-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 \ --regionus-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 \ --regionus-west-1
aws rds modify-db-cluster --db-cluster-identifier write-forwarding-test-cluster-2 \ --regionus-east-2
\ --enable-global-write-forwarding
Memeriksa apakah klaster sekunder telah mengaktifkan penerusan tulis di Aurora MySQL
Untuk menentukan apakah Anda dapat menggunakan penerusan tulis dari klaster sekunder, Anda dapat memeriksa apakah klaster tersebut memiliki atribut "GlobalWriteForwardingStatus": "enabled"
.
Di AWS Management Console, 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.
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.
contoh
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
Anda dapat menggunakan jenis pernyataan SQL berikut dengan penerusan tulis:
-
Pernyataan bahasa manipulasi data (DML), seperti
INSERT
,DELETE
, danUPDATE
. 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
danSELECT FOR UPDATE
. -
Pernyataan
PREPARE
danEXECUTE
.
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
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 Aurora Tingkat isolasi saya SQL.
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 keEVENTUAL
, 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 keSESSION
, 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 keGLOBAL
, 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 berlangsung ketika cluster sekunder up-to-date dengan semua data yang dikomit dari cluster 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.
Contoh menggunakan penerusan tulis
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
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
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
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
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 pengaturanmax_connections
untuk instans DB dalam klaster primer. Misalnya, jikamax_connections
adalah 800 danaurora_fwd_master_max_connections_pct
atauaurora_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 pengaturanmax_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 kesalahanER_CON_COUNT_ERROR
dengan pesanNot 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. Aturan berikut berlaku untuk parameter ini:
-
Nilai default adalah " (kosong).
-
Penerusan tulis tersedia dalam sebuah sesi hanya jika
aurora_replica_read_consistency
diatur keEVENTUAL
atauSESSION
atauGLOBAL
. 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
, atauGLOBAL
) ke nilai valid lainnya (EVENTUAL
,SESSION
, atauGLOBAL
) selama transaksi tersebut. -
Variabel tidak boleh
SET
ketika penerusan tulis tidak diaktifkan pada klaster sekunder.
CloudWatch Metrik Amazon untuk penerusan tulis di Aurora MySQL
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 |
---|---|---|
|
Hitung |
Jumlah kueri yang diteruskan yang ditolak karena sesi penuh pada instance DB penulis. Untuk Aurora MySQL versi 2. |
|
Hitung |
Jumlah kueri yang diteruskan yang ditolak karena sesi penuh pada instance DB penulis. Untuk Aurora MySQL versi 3. |
|
Milidetik |
Rata-rata waktu untuk memproses setiap pernyataan DML yang diteruskan pada instans DB penulis. Ini tidak termasuk waktu yang diperlukan klaster sekunder untuk meneruskan permintaan tulis, atau waktu untuk mereplikasi perubahan kembali ke klaster sekunder. Untuk Aurora MySQL versi 2. |
|
Hitungan per detik |
Jumlah pernyataan DML yang diteruskan yang diproses setiap detik oleh instans DB penulis ini. Untuk Aurora MySQL versi 2. |
|
Hitungan |
Jumlah sesi yang diteruskan pada instans DB tulis. Untuk Aurora MySQL versi 2. |
|
Milidetik |
Rata-rata waktu untuk memproses setiap pernyataan DML yang diteruskan pada instans DB penulis. Ini tidak termasuk waktu yang diperlukan klaster sekunder untuk meneruskan permintaan tulis, atau waktu untuk mereplikasi perubahan kembali ke klaster sekunder. Untuk Aurora MySQL versi 3. |
|
Hitungan per detik | Jumlah pernyataan DML yang diteruskan yang diproses setiap detik oleh instans DB penulis ini. Untuk Aurora MySQL versi 3. |
|
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 |
---|---|---|
|
Milidetik | Waktu respons rata-rata diteruskan DMLs pada replika. |
|
Hitungan per detik | Jumlah pernyataan DML yang diteruskan yang diproses setiap detiknya. |
|
Hitungan | Jumlah sesi yang menggunakan penerusan tulis pada instans DB pembaca. |
|
Milidetik |
Rata-rata waktu tunggu yang diperlukan sebuah pernyataan Batas tunggu instans DB pembaca sebelum memproses kueri ditentukan oleh pengaturan |
|
Hitungan per detik | Jumlah total pernyataan SELECT yang diproses setiap detik di semua sesi yang meneruskan tulis. |
|
Milidetik | Latensi SELECT yang diteruskan, rata-rata atas semua pernyataan SELECT yang diteruskan dalam periode pemantauan. |
|
Hitungan per detik | Rata-rata throughput SELECT per detik yang diteruskan dalam periode pemantauan. |
Variabel status Aurora MySQL untuk penerusan tulis
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 |
Hitung | 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. Untuk Aurora MySQL versi 2. |
Aurora_fwd_master_open_sessions |
Hitungan |
Jumlah sesi yang diteruskan pada instans DB tulis. Untuk Aurora MySQL versi 2. |
Aurora_fwd_master_select_stmt_count |
Hitungan |
Total jumlah pernyataan Untuk Aurora MySQL versi 2. |
Aurora_fwd_master_select_stmt_duration |
Mikrodetik |
Total durasi pernyataan 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 |
Hitung | Jumlah sesi yang diteruskan pada instans DB tulis. Untuk Aurora MySQL versi 3. |
Aurora_fwd_writer_select_stmt_count |
Hitung | Total jumlah pernyataan |
Aurora_fwd_writer_select_stmt_duration |
Mikrodetik |
Total durasi pernyataan 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 |
Hitung | 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:
|
Aurora_fwd_replica_open_sessions |
Hitung | Jumlah sesi yang menggunakan penerusan tulis pada instans DB pembaca. |
Aurora_fwd_replica_read_wait_count |
Hitung | Jumlah total read-after-write menunggu 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. |