Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Pemecahan Masalah batasan replika baca MariaDB
Teknologi replikasi untuk MariaDB bersifat asinkron. Karena mereka tidak sinkron, sesekali BinLogDiskUsage
meningkatkan instans DB sumber dan ReplicaLag
pada replika baca diharapkan. Misalnya, volume operasi tulis tinggi ke instans DB sumber dapat terjadi secara paralel. Sebaliknya, operasi ke replika baca diseret menggunakan utas I/O tunggal, yang dapat menyebabkan jeda antara instans sumber dan replika baca. Untuk mengetahui informasi selengkapnya tentang replika hanya baca di dokumentasi MariaDB, buka Ringkasan replikasi
Anda dapat melakukan beberapa hal untuk mengurangi keterlambatan antara pembaruan ke instans DB sumber dan pembaruan berikutnya ke replika baca, seperti berikut:
-
Mengukur replika baca untuk memiliki ukuran penyimpanan dan kelas instans DB yang sebanding dengan instans DB sumber.
-
Memastikan kompatibilitas pengaturan parameter di grup parameter DB yang digunakan oleh instans DB sumber dan replika baca. Untuk mengetahui informasi selengkapnya dan instans, lihat diskusi tentang
max_allowed_packet
nanti di bagian ini.
Amazon RDS memantau status replikasi replika baca Anda dan memperbarui Replication State
bidang instance replika baca Error
jika replikasi berhenti karena alasan apa pun. Contohnya mungkin jika DML kueri yang dijalankan pada replika baca Anda bertentangan dengan pembaruan yang dibuat pada instans DB sumber.
Anda dapat meninjau perincian kesalahan terkait yang disebabkan oleh mesin MariaDB dengan melihat kolom Replication Error
. Peristiwa yang menunjukkan status replika baca juga dihasilkan, termasuk RDS-EVENT-0045, RDS-EVENT-0046, dan RDS-EVENT-0047. Untuk mengetahui informasi selengkapnya tentang acara dan berlangganan acara, lihat Bekerja dengan pemberitahuan RDS acara Amazon. Jika muncul pesan kesalahan MariaDB, periksa kesalahan di MariaDB error message documentation
Satu masalah umum yang dapat menyebabkan kesalahan replikasi adalah ketika nilai untuk max_allowed_packet
parameter untuk replika baca lebih kecil dari max_allowed_packet
untuk instans DB sumber. max_allowed_packet
Parameter adalah parameter khusus yang dapat Anda atur dalam grup parameter DB yang digunakan untuk menentukan ukuran maksimum DML kode yang dapat dijalankan pada database. Dalam beberapa kasus, nilai parameter max_allowed_packet
dalam grup parameter DB yang terkait dengan instans DB sumber lebih kecil dari nilai parameter max_allowed_packet
dalam grup parameter DB yang terkait dengan replika baca sumber. Dalam kasus ini, proses replikasi dapat menyebabkan kesalahan (Paket lebih besar dari byte ‘maks_allowed_packet’) dan menghentikan replikasi. Anda dapat memperbaiki kesalahan dengan memiliki replika sumber dan baca, gunakan grup parameter DB yang sama max_allowed_packet
nilai parameter.
Situasi umum lainnya yang dapat menyebabkan kesalahan replikasi mencakup hal-hal berikut:
Menulis ke tabel di replika baca. Jika Anda membuat indeks pada replika baca, parameter
read_only
harus diatur ke 0 untuk membuat indeks. Jika Anda menulis pada replika baca, tindakan ini dapat merusak replikasi.-
Menggunakan mesin penyimpanan non-transaksional seperti MyISAM. read replicas membutuhkan mesin penyimpanan transaksional. Replikasi hanya didukung untuk mesin penyimpanan InnoDB pada MariaDB.
-
Gunakan kueri nondeterministik yang tidak aman seperti
SYSDATE()
. Untuk informasi selengkapnya, lihat Determination of safe and unsafe statements in binary logging.
Jika Anda memutuskan bahwa Anda dapat melewati kesalahan dengan aman, Anda dapat mengikuti langkah-langkah yang dijelaskan dalam Melewatkan kesalahan replikasi saat ini untuk My RDS SQL. Jika tidak, Anda dapat menghapus replika baca dan membuat instans menggunakan pengidentifikasi instans DB yang sama sehingga titik akhir tetap sama dengan replika baca lama Anda. Jika kesalahan replikasi diperbaiki, Replication State
berubah menjadi mereplikasi.
Untuk instans DB MariaDB, dalam beberapa kasus, replika baca tidak dapat dialihkan ke yang sekunder jika beberapa peristiwa log biner (binlog) tidak di-flush saat kegagalan. Dalam kasus ini, hapus dan buat ulang replika baca secara manual. Anda dapat mengurangi kemungkinan terjadinya hal ini dengan menetapkan nilai parameter berikut: sync_binlog=1
dan innodb_flush_log_at_trx_commit=1
. Pengaturan ini dapat mengurangi performa, jadi uji dampaknya sebelum menerapkan perubahan di lingkungan produksi.