Menggunakan penerusan tulis dalam database global Aurora My SQL - Amazon Aurora

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

Menggunakan penerusan tulis dalam database global Aurora My SQL

Ketersediaan wilayah dan versi penerusan tulis di Aurora My SQL

Penerusan tulis didukung dengan Aurora My SQL 2.08.1 dan versi yang lebih tinggi, di setiap Wilayah di mana basis data global berbasis Aurora My tersedia. SQL

Untuk informasi tentang versi dan ketersediaan Wilayah basis data SQL global Aurora My, lihat. Database global Aurora dengan Aurora My SQL

Mengaktifkan penerusan tulis di Aurora My SQL

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 --no-enable-global-write-forwarding opsi dengan perintah yang sama CLI ini.

Untuk mengaktifkan penerusan tulis menggunakan Amazon RDSAPI, setel EnableGlobalWriteForwarding parameter 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 My SQL.

Fitur RDS Proxy tidak mendukung SESSION nilai untuk aurora_replica_read_consistency variabel. Menetapkan nilai ini dapat menimbulkan perilaku tak terduga.

CLIContoh berikut menunjukkan bagaimana Anda dapat mengatur database 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 mengaktifkan penerusan tulis di Aurora My SQL

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" } ]

Aplikasi dan SQL kompatibilitas dengan penerusan tulis di Aurora My SQL

Anda dapat menggunakan jenis SQL pernyataan berikut dengan penerusan tulis:

  • Pernyataan bahasa manipulasi data (DML), sepertiINSERT,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 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.

Pembatasan berikut berlaku untuk SQL pernyataan yang Anda gunakan dengan 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)

Connect ke cluster utama untuk menjalankan DDL pernyataan. 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 DML pernyataan untuk memodifikasi tabel permanen jika pernyataan 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]
LOADpernyataan 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;
SAVEPOINTpernyataan

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 My SQL

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 My SQL versi 2 dan versi 3 lebih rendah dari 3.04, gunakan aurora_replica_read_consistency sebagai variabel sesi. Untuk Aurora My SQL versi 3.04 dan yang lebih tinggi, Anda dapat menggunakan aurora_replica_read_consistency variabel sesi atau sebagai parameter cluster 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 menulis penerusan di Aurora My SQL.

Contoh menggunakan penerusan tulis

Contoh-contoh ini menggunakan aurora_replica_read_consistency sebagai variabel sesi. Untuk Aurora My SQL versi 3.04 dan yang lebih tinggi, Anda dapat menggunakan aurora_replica_read_consistency variabel sesi atau sebagai parameter cluster 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 multipart dengan penerusan tulis di Aurora My SQL

DMLPernyataan dapat terdiri dari beberapa bagian, seperti INSERT ... SELECT pernyataan atau DELETE ... WHERE pernyataan. Dalam kasus ini, seluruh pernyataan diteruskan ke klaster primer dan berjalan di sana.

Transaksi dengan penerusan tulis di Aurora My SQL

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 Aurora My SQL session. tx_read_only Anda hanya dapat mengubah nilai sesi ini saat Anda terhubung dengan klaster sekunder 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 menulis penerusan di Aurora My SQL

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 SQL Versi saya 2) Global integer tanpa tanda 60 1-86.400
aurora_fwd_master_max_connections_pct(Aurora SQL Versi saya 2) Global integer panjang tanpa tanda 10 0–90
aurora_fwd_writer_idle_timeout(Aurora SQL Versi saya 3) Global integer tanpa tanda 60 1-86.400
aurora_fwd_writer_max_connections_pct(Aurora SQL Versi saya 3) Global integer panjang tanpa tanda 10 0–90
aurora_replica_read_consistency Sesi 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.

Parameter aurora_replica_read_consistency adalah parameter tingkat sesi yang 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 My SQL. Aturan berikut berlaku untuk parameter ini:

  • Ini adalah parameter tingkat sesi. 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.

  • Mengatur variabel sesi pada klaster primer tidak memiliki efek apa pun. Jika Anda mencoba mengubah variabel ini pada klaster primer, Anda akan menerima kesalahan.

CloudWatch Metrik Amazon untuk penerusan tulis di Aurora My SQL

CloudWatch Metrik Amazon dan variabel status Aurora SQL My berikut berlaku untuk klaster utama saat Anda menggunakan penerusan tulis pada satu atau beberapa klaster sekunder. Semua metrik ini diukur pada instans DB penulis dalam klaster primer.

CloudWatch metrik Aurora Variabel status saya SQL Unit Deskripsi

AuroraDMLRejectedMasterFull

Hitung

Jumlah kueri yang diteruskan yang ditolak karena sesi penuh pada instance DB penulis.

Untuk Aurora SQL Versi saya 2.

AuroraDMLRejectedWriterFull

Hitung

Jumlah kueri yang diteruskan yang ditolak karena sesi penuh pada instance DB penulis.

Untuk Aurora SQL Versi saya 3.

ForwardingMasterDMLLatency

Milidetik

Rata-rata waktu untuk memproses setiap DML pernyataan yang diteruskan pada instance 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 SQL Versi saya 2.

ForwardingMasterDMLThroughput

Hitungan per detik

Jumlah DML pernyataan diteruskan diproses setiap detik oleh instance DB penulis ini.

Untuk Aurora SQL Versi saya 2.

ForwardingMasterOpenSessions

Aurora_fwd_master_open_sessions Hitung

Jumlah sesi yang diteruskan pada instans DB tulis.

Untuk Aurora SQL Versi saya 2.

Aurora_fwd_master_dml_stmt_count Hitung

Jumlah total DML pernyataan yang diteruskan ke instance DB penulis ini.

Untuk Aurora SQL Versi saya 2.

Aurora_fwd_master_dml_stmt_duration Mikrodetik

Total durasi DML pernyataan yang diteruskan ke instance DB penulis ini.

Untuk Aurora SQL Versi saya 2.

Aurora_fwd_master_select_stmt_count Hitung

Total jumlah pernyataan SELECT yang diteruskan ke instans DB penulis ini.

Untuk Aurora SQL Versi saya 2.

Aurora_fwd_master_select_stmt_duration Mikrodetik

Total durasi pernyataan SELECT yang diteruskan ke instans DB penulis ini.

Untuk Aurora SQL Versi saya 2.

ForwardingWriterDMLLatency

Milidetik

Rata-rata waktu untuk memproses setiap DML pernyataan yang diteruskan pada instance 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 SQL Versi saya 3.

ForwardingWriterDMLThroughput

Hitungan per detik

Jumlah DML pernyataan diteruskan diproses setiap detik oleh instance DB penulis ini.

Untuk Aurora SQL Versi saya 3.

ForwardingWriterOpenSessions

Aurora_fwd_writer_open_sessions Hitung

Jumlah sesi yang diteruskan pada instans DB tulis.

Untuk Aurora SQL Versi saya 3.

Aurora_fwd_writer_dml_stmt_count Hitung

Jumlah total DML pernyataan yang diteruskan ke instance DB penulis ini.

Untuk Aurora SQL Versi saya 3.

Aurora_fwd_writer_dml_stmt_duration Mikrodetik Total durasi DML pernyataan yang diteruskan ke instance DB penulis ini.

Aurora_fwd_writer_select_stmt_count Hitung

Total jumlah pernyataan SELECT yang diteruskan ke instans DB penulis ini.

Untuk Aurora SQL Versi saya 3.

Aurora_fwd_writer_select_stmt_duration Mikrodetik

Total durasi pernyataan SELECT yang diteruskan ke instans DB penulis ini.

Untuk Aurora SQL Versi saya 3.

CloudWatch Metrik berikut dan variabel Aurora SQL My status berlaku untuk setiap cluster sekunder. Metrik-metrik ini diukur pada setiap instans DB pembaca dalam klaster sekunder dengan penerusan tulis yang diaktifkan.

CloudWatch metrik Aurora Variabel status saya SQL Unit Deskripsi

ForwardingReplicaDMLLatency

Milidetik Waktu respons rata-rata diteruskan DMLs pada replika.

ForwardingReplicaDMLThroughput

Hitungan per detik Jumlah DML pernyataan yang diteruskan diproses setiap detik.

ForwardingReplicaOpenSessions

Aurora_fwd_replica_open_sessions Hitung 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.

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.

Aurora_fwd_replica_dml_stmt_count Hitung Jumlah total DML pernyataan yang diteruskan dari instance DB pembaca ini.

Aurora_fwd_replica_dml_stmt_duration Mikrodetik Total durasi semua DML pernyataan yang diteruskan dari instans DB pembaca ini.

Aurora_fwd_replica_errors_session_limit Hitung

Jumlah sesi yang ditolak oleh klaster primer karena salah satu kondisi kesalahan berikut:

  • penulis penuh

  • Terlalu banyak pernyataan yang diteruskan dalam proses.

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.