Menggunakan penerusan tulis lokal di klaster DB Amazon Aurora MySQL - 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 lokal di klaster DB Amazon Aurora MySQL

Penerusan tulis lokal (dalam klaster) memungkinkan aplikasi Anda mengeluarkan transaksi baca/tulis langsung pada Replika Aurora. Transaksi ini kemudian diteruskan ke instans DB penulis untuk di-commit. Anda dapat menggunakan penerusan tulis lokal ketika aplikasi Anda memerlukan konsistensi baca-setelah-tulis, yang merupakan kemampuan untuk membaca penulisan terbaru dalam suatu transaksi.

Replika baca menerima pembaruan secara asinkron dari penulis. Tanpa penerusan tulis, Anda harus bertransaksi pembacaan apa pun yang memerlukan konsistensi baca-setelah-tulis pada instans DB penulis. Atau Anda harus mengembangkan logika aplikasi khusus yang kompleks untuk memanfaatkan beberapa replika baca untuk skalabilitas. Aplikasi Anda harus sepenuhnya membagi semua lalu lintas baca dan tulis, sehingga mempertahankan dua set koneksi basis data untuk mengirim lalu lintas ke titik akhir yang benar. Overhead pengembangan ini memperumit desain aplikasi ketika kueri merupakan bagian dari satu sesi logis, atau transaksi, di dalam aplikasi. Selain itu, karena lag replikasi dapat berbeda di antara replika baca, sulit untuk mencapai konsistensi baca global di semua instans di dalam basis data.

Penerusan tulis menghindari kebutuhan untuk membagi transaksi tersebut atau mengirimkannya secara eksklusif ke penulis, yang menyederhanakan pengembangan aplikasi. Kemampuan baru ini memudahkan pencapaian skala baca untuk beban kerja yang perlu membaca penulisan terbaru dalam suatu transaksi dan tidak sensitif terhadap latensi penulisan.

Penerusan tulis lokal berbeda dari penerusan tulis global, yang meneruskan penulisan dari klaster DB sekunder ke klaster DB primer dalam basis data global Aurora. Anda dapat menggunakan penerusan tulis lokal dalam klaster DB yang merupakan bagian dari basis data global Aurora. Untuk informasi selengkapnya, lihat Menggunakan penerusan menulis dalam basis data global Amazon Aurora.

Penerusan tulis lokal membutuhkan Aurora MySQL versi 3.04 atau versi yang lebih tinggi.

Mengaktifkan penerusan tulis lokal

Secara default, penerusan tulis lokal tidak diaktifkan untuk klaster DB MySQL Aurora. Anda mengaktifkan penerusan tulis lokal pada tingkat klaster, bukan pada tingkat instans.

penting

Anda juga dapat mengaktifkan penerusan tulis lokal untuk replika baca lintas wilayah yang menggunakan pencatatan log biner, tetapi operasi tulis tidak diteruskan ke Wilayah AWS sumber. Operasi tulis diteruskan ke instans DB penulis dari klaster replika baca binlog.

Gunakan metode ini hanya jika Anda memiliki kasus penggunaan penulisan ke replika baca binlog di Wilayah AWS sekunder. Jika tidak, Anda mungkin berakhir dengan skenario “otak terbelah” di mana set data yang direplikasi tidak konsisten satu sama lain.

Kami menyarankan Anda menggunakan penerusan tulis global dengan basis data global, daripada penerusan tulis lokal pada replika baca lintas wilayah, kecuali benar-benar diperlukan. Untuk informasi selengkapnya, lihat Menggunakan penerusan menulis dalam basis data global Amazon Aurora.

Menggunakan AWS Management Console, pilih kotak centang Aktifkan penerusan tulis lokal di bawah Penerusan tulis replika baca saat Anda membuat atau memodifikasi klaster DB.

Untuk mengaktifkan penerusan tulis dengan AWS CLI, gunakan opsi --enable-local-write-forwarding. Opsi ini berfungsi saat Anda membuat klaster DB baru menggunakan perintah create-db-cluster. Opsi ini juga berfungsi saat Anda memodifikasi klaster DB yang ada dengan menggunakan perintah modify-db-cluster. Anda dapat menonaktifkan penerusan tulis dengan menggunakan opsi --no-enable-local-write-forwarding dengan perintah CLI yang sama ini.

Contoh berikut ini membuat sebuah klaster DB Aurora MySQL dengan penerusan tulis yang diaktifkan.

aws rds create-db-cluster \ --db-cluster-identifier write-forwarding-test-cluster \ --enable-local-write-forwarding \ --engine aurora-mysql \ --engine-version 8.0.mysql_aurora.3.04.0 \ --master-username myuser \ --master-user-password mypassword \ --backup-retention 1

Anda kemudian membuat instans DB penulis dan pembaca sehingga Anda dapat menggunakan penerusan tulis. Untuk informasi selengkapnya, lihat Membuat klaster DB Amazon Aurora.

Untuk mengaktifkan penerusan tulis menggunakan API Amazon RDS, atur parameter EnableLocalWriteForwarding ke true. Parameter ini berfungsi saat Anda membuat klaster DB baru menggunakan operasi CreateDBCluster. Opsi ini juga berfungsi saat Anda memodifikasi klaster DB yang ada dengan menggunakan operasi ModifyDBCluster. Anda dapat menonaktifkan penerusan tulis dengan mengatur parameter EnableLocalWriteForwarding ke false.

Mengaktifkan penerusan tulis untuk sesi basis data

Parameter aurora_replica_read_consistency adalah parameter DB dan parameter klaster DB yang memungkinkan penerusan tulis. Anda dapat menentukan EVENTUAL, SESSION, atau GLOBAL untuk tingkat konsistensi baca. Untuk mempelajari selengkapnya tentang tingkat konsistensi, lihat Konsistensi baca untuk penerusan tulis.

Aturan berikut berlaku untuk parameter ini:

  • Nilai default-nya adalah " (nol).

  • Penerusan tulis hanya tersedia jika Anda menyetel aurora_replica_read_consistency ke EVENTUAL, SESSION, atau GLOBAL. Parameter ini hanya relevan dalam instans pembaca klaster DB yang memiliki penerusan tulis diaktifkan.

  • Anda tidak dapat mengatur parameter ini (saat kosong) atau membatalkan pengaturan (saat sudah diatur) di dalam transaksi multipernyataan. Anda dapat mengubahnya dari satu nilai yang valid ke nilai valid lainnya selama transaksi tersebut, tetapi kami tidak merekomendasikan tindakan ini.

Memeriksa apakah klaster DB memiliki penerusan tulis yang diaktifkan

Untuk menentukan bahwa Anda dapat menggunakan penerusan tulis di klaster DB, konfirmasikan bahwa klaster memiliki atribut LocalWriteForwardingStatus disetel ke enabled.

Di AWS Management Console, pada tab Konfigurasi halaman detail untuk klaster, Anda melihat status Diaktifkan untuk Penerusan tulis replika baca lokal.

Untuk melihat status pengaturan penerusan tulis untuk semua klaster Anda, jalankan perintah AWS CLI berikut.

aws rds describe-db-clusters \ --query '*[].{DBClusterIdentifier:DBClusterIdentifier,LocalWriteForwardingStatus:LocalWriteForwardingStatus}' [ { "LocalWriteForwardingStatus": "enabled", "DBClusterIdentifier": "write-forwarding-test-cluster-1" }, { "LocalWriteForwardingStatus": "disabled", "DBClusterIdentifier": "write-forwarding-test-cluster-2" }, { "LocalWriteForwardingStatus": "requested", "DBClusterIdentifier": "test-global-cluster-2" }, { "LocalWriteForwardingStatus": "null", "DBClusterIdentifier": "aurora-mysql-v2-cluster" } ]

Sebuah klaster DB dapat memiliki nilai berikut untuk LocalWriteForwardingStatus:

  • disabled – Penerusan tulis dinonaktifkan.

  • disabling – Penerusan tulis dalam proses penonaktifan.

  • enabled – Penerusan tulis diaktifkan.

  • enabling – Penerusan tulis dalam proses pengaktifan.

  • null – Penerusan tulis tidak tersedia untuk klaster DB ini.

  • requested – Penerusan tulis telah diminta, tetapi belum aktif.

Kompatibilitas aplikasi dan SQL dengan penerusan tulis

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 klaster DB dengan penerusan tulis. Oleh karena itu, pengaturan EnableLocalWriteForwarding dinonaktifkan secara default untuk klaster DB. Sebelum diaktifkan, 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 DB dengan penerusan tulis yang diaktifkan. Pendekatan ini berfungsi jika penerusan tulis tidak diaktifkan dalam sesi oleh parameter konfigurasi aurora_replica_read_consistency. Jika Anda mencoba menggunakan suatu pernyataan yang tidak diizinkan karena adanya penerusan tulis, Anda akan melihat pesan kesalahan seperti berikut ini:

ERROR 1235 (42000): This version of MySQL doesn't yet support 'operation with write forwarding'.
Bahasa definisi data (DDL)

Hubungkan ke instans DB tulis 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 DB 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.

Transaksi XA

Anda tidak dapat menggunakan pernyataan berikut pada klaster DB saat penerusan tulis diaktifkan dalam sesi. Anda dapat menggunakan pernyataan ini pada klaster DB 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 DB dengan penerusan tulis yang diaktifkan.

LOAD DATA INFILE 'data.txt' INTO TABLE t1; LOAD XML LOCAL INFILE 'test.xml' INTO TABLE t1;
Pernyataan plugin

Anda tidak dapat menggunakan pernyataan berikut pada klaster DB 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 DB saat penerusan tulis diaktifkan dalam sesi. Anda dapat menggunakan pernyataan ini pada klaster DB 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;

Tingkat isolasi untuk penerusan tulis

Dalam sesi yang menggunakan penerusan tulis, Anda hanya dapat menggunakan tingkat isolasi REPEATABLE READ. Meskipun Anda juga dapat menggunakan tingkat isolasi READ COMMITTED dengan Replika Aurora, tingkat isolasi tersebut tidak berfungsi dengan penerusan tulis. Untuk informasi tentang tingkat isolasi REPEATABLE READ dan READ COMMITTED, lihat Aurora Tingkat isolasi saya SQL.

Konsistensi baca untuk penerusan tulis

Anda dapat mengontrol tingkat konsistensi baca di klaster DB. Tingkat konsistensi baca menentukan berapa lama klaster DB menunggu sebelum operasi baca untuk memastikan beberapa atau semua perubahan direplikasi dari penulis. Anda dapat menyesuaikan tingkat konsistensi baca untuk memastikan bahwa semua operasi tulis yang diteruskan dari sesi Anda terlihat dalam klaster DB sebelum kueri berikutnya. Anda juga dapat menggunakan pengaturan ini untuk memastikan kueri pada klaster DB selalu melihat pembaruan terkini dari penulis. Pengaturan ini juga berlaku untuk kueri yang dikirimkan oleh sesi lain atau klaster lainnya. Untuk menentukan jenis perilaku ini untuk aplikasi Anda, pilih nilai untuk parameter DB aurora_replica_read_consistency atau parameter klaster DB.

penting

Selalu atur parameter DB aurora_replica_read_consistency atau parameter klaster DB saat Anda ingin meneruskan penulisan. Jika Anda tidak mengaturnya, Aurora tidak akan meneruskan penulisan. Parameter ini mempunyai nilai kosong secara default, jadi pilih nilai tertentu apabila Anda menggunakan parameter ini. Parameter aurora_replica_read_consistency hanya memengaruhi klaster atau instans DB yang mengaktifkan penerusan tulis.

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

Anda dapat menentukan nilai berikut untuk parameter aurora_replica_read_consistency:

  • EVENTUAL – Hasil operasi tulis dalam sesi yang sama tidak terlihat sampai operasi tulis dilakukan pada instans DB penulis. 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. Ini adalah konsistensi yang sama seperti untuk klaster DB Aurora MySQL yang tidak menggunakan penerusan tulis.

  • SESSION – Semua kueri yang menggunakan penerusan tulis melihat hasil semua perubahan yang dilakukan dalam sesi tersebut. Perubahan dapat dilihat terlepas dari apakah transaksi dilakukan. Jika perlu, kueri menunggu hasil operasi tulis yang diteruskan untuk direplikasi.

  • GLOBAL – Sebuah sesi melihat semua perubahan yang dilakukan di semua sesi dan instans di dalam klaster DB. Setiap kueri mungkin akan menunggu selama periode yang berbeda-beda tergantung jumlah lag sesi. Kueri berlanjut saat klaster DB dimutakhirkan dengan semua data yang di-commit dari penulis, pada saat kueri dimulai.

Untuk informasi tentang parameter konfigurasi yang terlibat dalam penerusan tulis, lihat Parameter konfigurasi untuk penerusan tulis.

catatan

Anda juga dapat menggunakan aurora_replica_read_consistency sebagai variabel sesi, misalnya:

mysql> set aurora_replica_read_consistency = 'session';

Contoh menggunakan penerusan tulis

Contoh berikut ini menunjukkan efek parameter aurora_replica_read_consistency pada pernyataan INSERT yang berjalan diikuti oleh pernyataan SELECT. Hasilnya dapat berbeda, tergantung nilai aurora_replica_read_consistency dan 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.

Untuk informasi tentang cara menetapkan parameter DB, lihat .

contoh dengan aurora_replica_read_consistency diatur ke EVENTUAL

Menjalankan pernyataan INSERT, yang langsung diikuti dengan pernyataan SELECT, memunculkan nilai untuk COUNT(*) dengan jumlah baris sebelum baris baru disisipkan. Dengan menjalankan SELECT lagi beberapa saat kemudian, muncul hitungan baris yang diperbarui. Pernyataan SELECT tidak menunggu.

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)
contoh dengan aurora_replica_read_consistency diatur ke SESSION

Pernyataan SELECT langsung setelah INSERT akan menunggu sampai perubahan dari pernyataan INSERT terlihat. Pernyataan SELECT selanjutnya tidak menunggu.

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)
contoh dengan aurora_replica_read_consistency diatur ke GLOBAL

Setiap pernyataan SELECT menunggu sampai semua perubahan data, sejak waktu mulai pernyataan, terlihat sebelum melakukan kueri. Waktu tunggu untuk setiap pernyataan SELECT bervariasi, tergantung jumlah lag replikasi.

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

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

Transaksi dengan penerusan tulis

Jika mode akses transaksi disetel ke hanya-baca, penerusan tulis tidak digunakan. 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. 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 mengatur parameter aurora_fwd_writer_idle_timeout untuk meningkatkannya hingga satu hari. Transaksi yang melebihi batas waktu idle dibatalkan oleh instans tulis. 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 DB atau jika Anda menonaktifkan penerusan tulis.

Ketika instans penulis dalam sebuah klaster yang menggunakan penerusan tulis lokal dimulai ulang, transaksi dan kueri yang aktif dan diteruskan pada instans pembaca yang menggunakan penerusan tulis lokal akan ditutup secara otomatis. Setelah instans penulis tersedia lagi, Anda dapat mencoba kembali transaksi ini.

Parameter konfigurasi untuk penerusan tulis

Grup parameter DB Aurora mencakup pengaturan untuk fitur penerusan tulis. Detail tentang parameter ini dirangkum dalam tabel berikut, dengan catatan penggunaan setelah tabel.

Parameter Cakupan Tipe Nilai default Nilai valid
aurora_fwd_writer_idle_timeout Klaster Integer tanpa tanda 60 1-86.400
aurora_fwd_writer_max_connections_pct Klaster Integer panjang tanpa tanda 10 0–90
aurora_replica_read_consistency Klaster atau instans Enum '' (null) EVENTUAL, SESSION, GLOBAL

Untuk mengontrol permintaan tulis yang masuk, gunakan pengaturan ini:

  • aurora_fwd_writer_idle_timeout – Jumlah detik instans yang diperlukan oleh instans DB tulis untuk menunggu aktivitas pada koneksi yang diteruskan dari instans pembaca sebelum menutupnya. Jika sesi tetap idle setelah periode ini, Aurora akan membatalkan sesi.

  • 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 instans pembaca. Ini dinyatakan sebagai persentase dari pengaturan max_connections untuk penulis. 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 penulis saat penerusan tulis diaktifkan. Jika Anda menurunkan nilai, koneksi yang ada tidak akan terpengaruh. Aurora mempertimbangkan nilai baru pengaturan saat mencoba membuat koneksi baru dari klaster DB. Nilai defaultnya adalah 10, mewakili 10% dari nilai max_connections.

catatan

Karena aurora_fwd_writer_idle_timeout dan aurora_fwd_writer_max_connections_pct adalah parameter klaster, semua instans DB di setiap klaster memiliki nilai yang sama untuk parameter ini.

Untuk informasi selengkapnya tentang aurora_replica_read_consistency, lihat Konsistensi baca untuk penerusan tulis.

Untuk informasi selengkapnya tentang grup parameter DB, lihat .

Metrik Amazon CloudWatch dan variabel status Aurora MySQL untuk penerusan tulis

Metrik Amazon CloudWatch dan variabel status Aurora MySQL berikut ini berlaku saat Anda menggunakan penerusan tulis pada satu atau beberapa klaster DB. Semua metrik dan variabel status ini diukur pada instans DB penulis.

Metrik CloudWatch Variabel status Aurora MySQL Unit Deskripsi

ForwardingWriterDMLLatency

Milidetik

Rata-rata waktu untuk memproses setiap pernyataan DML yang diteruskan pada instans DB penulis.

Ini tidak termasuk waktu yang diperlukan klaster DB untuk meneruskan permintaan tulis, atau waktu untuk mereplikasi perubahan kembali ke penulis.

ForwardingWriterDMLThroughput

Hitungan per detik Jumlah pernyataan DML yang diteruskan yang diproses setiap detik oleh instans DB penulis ini.

ForwardingWriterOpenSessions

Aurora_fwd_writer_open_sessions Hitungan Jumlah sesi yang diteruskan pada instans DB tulis.

Aurora_fwd_writer_dml_stmt_count Hitungan Total jumlah pernyataan DML yang diteruskan ke instans DB penulis ini.

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

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

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

Metrik CloudWatch dan variabel status Aurora MySQL berikut ini diukur pada setiap instans DB pembaca dalam klaster DB dengan penerusan tulis yang diaktifkan.

Metrik CloudWatch Variabel status Aurora MySQL 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

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

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, dirata-ratakan 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 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:

  • penulis penuh

  • Terlalu banyak pernyataan yang diteruskan dalam proses.

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.

Mengidentifikasi transaksi dan kueri yang diteruskan

Anda dapat menggunakan tabel information_schema.aurora_forwarding_processlist untuk mengidentifikasi transaksi dan kueri yang diteruskan. Untuk informasi selengkapnya tentang tabel ini, lihat information_schema.aurora_forwarding_processlist.

Contoh berikut ini menunjukkan semua koneksi yang diteruskan pada instans DB tulis.

mysql> select * from information_schema.AURORA_FORWARDING_PROCESSLIST where IS_FORWARDED=1 order by REPLICA_SESSION_ID; +-----+----------+--------------------+----------+---------+------+--------------+--------------------------------------------+--------------+--------------------+---------------------------------+----------------------+----------------+ | ID | USER | HOST | DB | COMMAND | TIME | STATE | INFO | IS_FORWARDED | REPLICA_SESSION_ID | REPLICA_INSTANCE_IDENTIFIER | REPLICA_CLUSTER_NAME | REPLICA_REGION | +-----+----------+--------------------+----------+---------+------+--------------+--------------------------------------------+--------------+--------------------+---------------------------------+---------------------------------------+ | 648 | myuser | IP_address:port1 | sysbench | Query | 0 | async commit | UPDATE sbtest58 SET k=k+1 WHERE id=4802579 | 1 | 637 | my-db-cluster-instance-2 | my-db-cluster | us-west-2 | | 650 | myuser | IP_address:port2 | sysbench | Query | 0 | async commit | UPDATE sbtest54 SET k=k+1 WHERE id=2503953 | 1 | 639 | my-db-cluster-instance-2 | my-db-cluster | us-west-2 | +-----+----------+--------------------+----------+---------+------+--------------+--------------------------------------------+--------------+--------------------+---------------------------------+----------------------+----------------+

Pada instans DB pembaca penerusan, Anda dapat melihat thread yang terkait dengan koneksi DB penulis ini dengan menjalankan SHOW PROCESSLIST. Nilai REPLICA_SESSION_ID pada penulis, 637 dan 639, sama dengan nilai Id pada pembaca.

mysql> select @@aurora_server_id; +---------------------------------+ | @@aurora_server_id | +---------------------------------+ | my-db-cluster-instance-2 | +---------------------------------+ 1 row in set (0.00 sec) mysql> show processlist; +-----+----------+--------------------+----------+---------+------+--------------+---------------------------------------------+ | Id | User | Host | db | Command | Time | State | Info | +-----+----------+--------------------+----------+---------+------+--------------+---------------------------------------------+ | 637 | myuser | IP_address:port1 | sysbench | Query | 0 | async commit | UPDATE sbtest12 SET k=k+1 WHERE id=4802579 | | 639 | myuser | IP_address:port2 | sysbench | Query | 0 | async commit | UPDATE sbtest61 SET k=k+1 WHERE id=2503953 | +-----+----------+--------------------+----------+---------+------+--------------+---------------------------------------------+ 12 rows in set (0.00 sec)