Menggunakan replika baca MariaDB - Layanan Basis Data Relasional Amazon

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

Menggunakan replika baca MariaDB

Setelah itu, Anda bisa menemukan informasi spesifik tentang menggunakan replika baca di Amazon RDS for MariaDB. Untuk mengetahui informasi umum tentang replika baca dan petunjuk penggunaannya, lihat Menggunakan replika baca instans DB.

Mengonfigurasi replika baca dengan MariaDB

Sebelum instans DB MariaDB dapat berfungsi sebagai sumber replikasi, pastikan untuk mengaktifkan pencadangan otomatis pada instans DB sumber dengan mengatur periode retensi cadangan ke nilai selain 0. Persyaratan ini juga berlaku untuk replika baca yang merupakan instans DB sumber untuk replika baca lain.

Anda dapat membuat hingga 15 replika baca dari satu instans DB dalam Wilayah yang sama. Agar replikasi beroperasi secara efektif, setiap replika baca harus memiliki jumlah sumber daya komputasi dan penyimpanan yang sama seperti instans DB sumber. Jika Anda menskalakan instans DB sumber, replika baca juga perlu diskalakan.

RDS for MariaDB mendukung replika baca berjenjang. Untuk mempelajari cara mengonfigurasi replika baca berjenjang, lihat Menggunakan replika baca berjenjang dengan RDS for MariaDB.

Anda dapat menjalankan beberapa replika baca, membuat dan menghapus tindakan pada saat yang sama yang mereferensikan instans DB sumber yang sama. Saat Anda melakukan tindakan ini, tidak boleh ada lebih dari 15 replika baca untuk setiap instans sumber.

Mengonfigurasi filter replikasi dengan MariaDB

Anda dapat menggunakan filter replikasi untuk mengetahui basis data dan tabel mana yang direplikasi dengan replika baca. Filter replikasi dapat menyertakan basis data dan tabel ke dalam replikasi atau mengecualikan mereka dari replikasi.

Berikut ini adalah beberapa kasus penggunaan untuk replikasi filter:

  • Untuk mengurangi ukuran replika baca. Dengan filter replikasi, Anda dapat mengecualikan basis data dan tabel yang tidak diperlukan pada replika baca.

  • Untuk mengecualikan basis data dan tabel dari replika baca untuk alasan keamanan.

  • Untuk mereplikasi basis data yang berbeda dan tabel untuk kasus penggunaan tertentu di replika baca yang berbeda. Misalnya, Anda mungkin menggunakan replika baca khusus untuk analitik atau penyerpihan.

  • Untuk instans DB yang memiliki replika baca berbeda Wilayah AWS, untuk mereplikasi basis data atau tabel yang berbeda secara berbeda Wilayah AWS.

catatan

Anda juga dapat menggunakan filter replikasi untuk menentukan basis data dan tabel apa yang direplikasi dengan instans DB MariaDB primer yang dikonfigurasi sebagai replika dalam topologi replikasi masuk. Untuk mengetahui informasi selengkapnya tentang konfigurasi ini, lihat Mengonfigurasi replikasi posisi file log biner dengan instans sumber eksternal.

Mengatur parameter filter replikasi untuk RDS for MariaDB

Untuk mengonfigurasi filter replikasi, atur parameter filter replikasi berikut pada replika baca:

  • replicate-do-db — Mereplikasi perubahan ke basis data yang ditentukan. Ketika Anda menetapkan parameter ini untuk replika baca, hanya basis data yang ditentukan dalam parameter yang direplikasi.

  • replicate-ignore-db — Jangan mereplikasi perubahan ke basis data yang ditentukan. Ketika parameter replicate-do-db diatur untuk replika baca, parameter ini tidak dievaluasi.

  • replicate-do-table — Mereplikasi perubahan ke tabel yang ditentukan. Ketika Anda menetapkan parameter ini untuk replika baca, hanya tabel yang ditentukan dalam parameter yang direplikasi. Juga, ketika parameter replicate-do-db atau replicate-ignore-db diatur, basis data yang mencakup tabel tertentu harus disertakan dalam replikasi dengan replika baca.

  • replicate-ignore-table — Jangan mereplikasi perubahan ke tabel yang ditentukan. Ketika parameter replicate-do-table diatur untuk replika baca, parameter ini tidak dievaluasi.

  • replicate-wild-do-table — Mereplikasi tabel berdasarkan basis data dan pola nama tabel yang ditentukan. Karakter wildcard % dan _ didukung. Ketika parameter replicate-do-db atau replicate-ignore-db diatur, pastikan untuk menyertakan basis data yang mencakup tabel tertentu dalam replikasi dengan replika baca.

  • replicate-wild-ignore-table — Jangan mereplikasi tabel berdasarkan basis data dan pola nama tabel yang ditentukan. Karakter wildcard % dan _ didukung. Ketika parameter replicate-do-table atau replicate-wild-do-table diatur untuk replika baca, parameter ini tidak dievaluasi.

Parameter dievaluasi sesuai dengan urutannya dalam daftar. Untuk mengetahui informasi selengkapnya tentang cara kerja parameter ini, lihat Dokumentasi MariaDB.

Secara default, masing-masing parameter ini memiliki nilai kosong. Pada setiap replika baca, Anda dapat menggunakan parameter ini untuk mengatur, mengubah, dan menghapus filter replikasi. Ketika Anda menetapkan salah satu parameter ini, pisahkan masing-masing filter dari yang lain dengan koma.

Anda dapat menggunakan karakter wildcard % dan _ dalam parameter replicate-wild-do-table dan replicate-wild-ignore-table. Parameter wildcard % mencocokkan dengan sejumlah karakter, dan wildcard _ hanya mencocokkan satu karakter.

Format logging biner dari instans DB sumber penting untuk replikasi karena menentukan catatan perubahan data. Pengaturan parameter binlog_format menentukan apakah replikasi berbasis baris atau berbasis pernyataan. Untuk informasi selengkapnya, lihat Format pengelogan biner.

catatan

Semua pernyataan bahasa definisi data (DDDL) direplikasi sebagai pernyataan, terlepas dari pengaturan binlog_format pada instans DB sumber.

Keterbatasan filter replikasi untuk RDS for MariaDB

Keterbatasan tersebut berlaku kepada filter replikasi untuk RDS for MariaDB:

  • Setiap parameter filter replikasi memiliki batas 2.000 karakter.

  • Koma tidak didukung dalam filter replikasi.

  • Opsi MariaDB binlog_do_db dan binlog_ignore_db untuk filter log biner tidak didukung.

  • Filter replikasi tidak mendukung transaksi XA.

    Untuk mengetahui informasi selengkapnya, lihat Pembatasan pada Transaksi XA dalam dokumentasi MySQL.

  • Filter replikasi tidak didukung RDS for MariaDB versi 10.2.

Contoh filter replikasi untuk RDS for MariaDB

Untuk mengonfigurasi filter replikasi untuk replika baca, modifikasi parameter filter replikasi dalam grup parameter yang terkait dengan replika baca tersebut.

catatan

Anda tidak dapat mengubah grup parameter default. Jika replika baca menggunakan grup parameter default, buat grup parameter baru dan kaitkan dengan replika baca tersebut. Untuk informasi selengkapnya tentang grup parameter DB, lihat Menggunakan grup parameter.

Anda dapat mengatur parameter dalam grup parameter menggunakan AWS Management Console, AWS CLI, atau API RDS. Untuk informasi tentang mengatur parameter, lihat Memodifikasi parameter dalam grup parameter DB. Ketika Anda mengatur parameter dalam grup parameter, semua instans DB yang terkait dengan grup parameter tersebut menggunakan pengaturan parameter. Jika Anda mengatur parameter filter replikasi dalam grup parameter, pastikan bahwa grup parameter dikaitkan hanya dengan replika baca. Biarkan parameter filter replikasi kosong untuk instans DB sumber.

Contoh berikut mengatur parameter menggunakan AWS CLI. Contoh ini menetapkan ApplyMethod ke immediate sehingga perubahan parameter terjadi segera setelah perintah CLI selesai. Jika Anda ingin menerapkan perubahan tertunda setelah replika baca di-reboot, atur ApplyMethod ke pending-reboot.

Contoh berikut mengatur filter replikasi:

contoh Termasuk basis data dalam replikasi

Contoh berikut menyertakan basis data mydb1 dan mydb2 dalam replikasi. Ketika Anda mengatur replicate-do-db untuk replika baca, hanya basis data yang ditentukan dalam parameter yang direplikasi.

Untuk Linux, macOS, atau Unix:

aws rds modify-db-parameter-group \ --db-parameter-group-name myparametergroup \ --parameters "[{"ParameterName": "replicate-do-db", "ParameterValue": "mydb1,mydb2", "ApplyMethod":"immediate"}]"

Untuk Windows:

aws rds modify-db-parameter-group ^ --db-parameter-group-name myparametergroup ^ --parameters "[{"ParameterName": "replicate-do-db", "ParameterValue": "mydb1,mydb2", "ApplyMethod":"immediate"}]"
contoh Termasuk tabel dalam replikasi

Contoh berikut menyertakan tabel table1 dan table2 dalam basis data mydb1 dalam replikasi.

Untuk Linux, macOS, atau Unix:

aws rds modify-db-parameter-group \ --db-parameter-group-name myparametergroup \ --parameters "[{"ParameterName": "replicate-do-table", "ParameterValue": "mydb1.table1,mydb1.table2", "ApplyMethod":"immediate"}]"

Untuk Windows:

aws rds modify-db-parameter-group ^ --db-parameter-group-name myparametergroup ^ --parameters "[{"ParameterName": "replicate-do-table", "ParameterValue": "mydb1.table1,mydb1.table2", "ApplyMethod":"immediate"}]"
contoh Menyertakan tabel dalam replikasi menggunakan karakter wildcard

Contoh berikut menyertakan tabel dengan nama berawalan orders dan returns dalam basis data mydb dalam replikasi.

Untuk Linux, macOS, atau Unix:

aws rds modify-db-parameter-group \ --db-parameter-group-name myparametergroup \ --parameters "[{"ParameterName": "replicate-wild-do-table", "ParameterValue": "mydb.orders%,mydb.returns%", "ApplyMethod":"immediate"}]"

Untuk Windows:

aws rds modify-db-parameter-group ^ --db-parameter-group-name myparametergroup ^ --parameters "[{"ParameterName": "replicate-wild-do-table", "ParameterValue": "mydb.orders%,mydb.returns%", "ApplyMethod":"immediate"}]"
contoh Mengeluarkan karakter wildcard dalam nama

Contoh berikut menunjukkan kepada Anda cara menggunakan karakter escape \ untuk mengeluarkan karakter wildcard yang merupakan bagian dari nama.

Asumsikan bahwa Anda memiliki beberapa nama tabel dalam basis data mydb1 yang dimulai dengan my_table, dan Anda ingin menyertakan tabel ini dalam replikasi. Nama tabel meliputi garis bawah, yang juga merupakan karakter wildcard, sehingga contoh ini melepaskan garis bawah dalam nama tabel.

Untuk Linux, macOS, atau Unix:

aws rds modify-db-parameter-group \ --db-parameter-group-name myparametergroup \ --parameters "[{"ParameterName": "replicate-wild-do-table", "ParameterValue": "my\_table%", "ApplyMethod":"immediate"}]"

Untuk Windows:

aws rds modify-db-parameter-group ^ --db-parameter-group-name myparametergroup ^ --parameters "[{"ParameterName": "replicate-wild-do-table", "ParameterValue": "my\_table%", "ApplyMethod":"immediate"}]"
contoh Mengecualikan basis data dari replikasi

Contoh berikut mengecualikan basis data mydb1 dan mydb2 dari replikasi.

Untuk Linux, macOS, atau Unix:

aws rds modify-db-parameter-group \ --db-parameter-group-name myparametergroup \ --parameters "[{"ParameterName": "replicate-ignore-db", "ParameterValue": "mydb1,mydb2", "ApplyMethod":"immediate"}]"

Untuk Windows:

aws rds modify-db-parameter-group ^ --db-parameter-group-name myparametergroup ^ --parameters "[{"ParameterName": "replicate-ignore-db", "ParameterValue": "mydb1,mydb2", "ApplyMethod":"immediate"}]"
contoh Mengecualikan tabel dari replikasi

Contoh berikut mengecualikan tabel table1 dan table2 dalam basis data mydb1 dari replikasi.

Untuk Linux, macOS, atau Unix:

aws rds modify-db-parameter-group \ --db-parameter-group-name myparametergroup \ --parameters "[{"ParameterName": "replicate-ignore-table", "ParameterValue": "mydb1.table1,mydb1.table2", "ApplyMethod":"immediate"}]"

Untuk Windows:

aws rds modify-db-parameter-group ^ --db-parameter-group-name myparametergroup ^ --parameters "[{"ParameterName": "replicate-ignore-table", "ParameterValue": "mydb1.table1,mydb1.table2", "ApplyMethod":"immediate"}]"
contoh Mengecualikan tabel dari replikasi menggunakan karakter wildcard

Contoh berikut mengecualikan tabel dengan nama berawalan orders dan returns dalam basis data mydb dari replikasi.

Untuk Linux, macOS, atau Unix:

aws rds modify-db-parameter-group \ --db-parameter-group-name myparametergroup \ --parameters "[{"ParameterName": "replicate-wild-ignore-table", "ParameterValue": "mydb.orders%,mydb.returns%", "ApplyMethod":"immediate"}]"

Untuk Windows:

aws rds modify-db-parameter-group ^ --db-parameter-group-name myparametergroup ^ --parameters "[{"ParameterName": "replicate-wild-ignore-table", "ParameterValue": "mydb.orders%,mydb.returns%", "ApplyMethod":"immediate"}]"

Melihat filter replikasi untuk replika baca

Anda dapat melihat filter replikasi untuk replika baca dengan cara berikut:

  • Memeriksa pengaturan parameter filter replikasi dalam grup parameter yang terkait dengan replika baca.

    Untuk mengetahui petunjuknya, lihat Melihat nilai parameter untuk grup parameter DB.

  • Dalam klien MariaDB, hubungkan ke replika baca dan jalankan pernyataan SHOW REPLICA STATUS.

    Dalam output, bidang berikut menunjukkan filter replikasi untuk replika baca:

    • Replicate_Do_DB

    • Replicate_Ignore_DB

    • Replicate_Do_Table

    • Replicate_Ignore_Table

    • Replicate_Wild_Do_Table

    • Replicate_Wild_Ignore_Table

    Untuk mengetahui informasi selengkapnya tentang bidang ini, lihat Memeriksa Status Replikasi dalam dokumentasi MySQL.

    catatan

    Versi sebelumnya dari MariaDB menggunakan SHOW SLAVE STATUS, bukan SHOW REPLICA STATUS. Jika Anda menggunakan MariaDB sebelum versi 10.5, gunakan SHOW SLAVE STATUS.

Mengonfigurasi replikasi tertunda dengan MariaDB

Anda dapat menggunakan replikasi tertunda sebagai strategi pemulihan bencana. Dengan replikasi tertunda, Anda menentukan jumlah waktu minimum, dalam detik, untuk menunda replikasi dari sumber ke replika baca. Jika terjadi bencana, seperti tabel yang terhapus secara tidak sengaja, Anda menyelesaikan langkah-langkah berikut untuk memulihkan dari bencana dengan cepat:

catatan
  • Replikasi tertunda didukung untuk versi MariaDB 10.6 dan yang lebih tinggi.

  • Gunakan prosedur yang tersimpan untuk mengonfigurasi replikasi tertunda. Anda tidak dapat mengonfigurasi replikasi tertunda dengan AWS Management Console, AWS CLI, atau Amazon RDS API.

  • Anda dapat menggunakan replikasi berdasarkan pengidentifikasi transaksi global (GTID) dalam konfigurasi replikasi tertunda.

Mengonfigurasi replikasi tertunda selama pembuatan replika baca

Untuk mengonfigurasi replikasi tertunda untuk replika baca di masa mendatang yang dibuat dari instans DB, jalankan prosedur tersimpan mysql.rds_set_configuration dengan parameter target delay.

Untuk mengonfigurasi replikasi tertunda selama pembuatan replika baca
  1. Dengan menggunakan klien MariaDB, hubungkan ke instans DB MariaDB untuk menjadi sumber replika baca sebagai pengguna master.

  2. Jalankan prosedur tersimpan mysql.rds_set_configuration dengan parameter target delay.

    Misalnya, jalankan prosedur tersimpan berikut untuk menentukan bahwa replikasi ditunda setidaknya satu jam (3.600 detik) untuk replika baca yang dibuat dari instans DB saat ini.

    call mysql.rds_set_configuration('target delay', 3600);
    catatan

    Setelah menjalankan prosedur tersimpan ini, replika baca apa pun yang Anda buat menggunakan AWS CLI atau API Amazon RDS dikonfigurasi dengan replikasi tertunda selama jumlah detik yang ditentukan.

Mengubah replikasi tertunda untuk replika baca yang sudah ada

Untuk mengubah replikasi tertunda untuk replika baca yang ada, jalankan prosedur tersimpan mysql.rds_set_source_delay.

Untuk mengubah replikasi tertunda untuk replika baca yang sudah ada
  1. Dengan menggunakan klien MariaDB, hubungkan ke replika baca sebagai pengguna master.

  2. Gunakan prosedur yang tersimpan di mysql.rds_stop_replication untuk menghentikan replikasi.

  3. Jalankan prosedur yang tersimpan di mysql.rds_set_source_delay.

    Misalnya, jalankan prosedur tersimpan berikut untuk menentukan bahwa replikasi ke replika baca ditunda setidaknya satu jam (3600 detik).

    call mysql.rds_set_source_delay(3600);
  4. Gunakan prosedur yang tersimpan di mysql.rds_start_replication untuk memulai replikasi.

Mempromosikan replika baca

Setelah replikasi dihentikan, dalam skenario pemulihan bencana, Anda dapat mempromosikan replika baca menjadi instans DB sumber baru. Untuk mengetahui informasi tentang cara mempromosikan replika baca, lihat Mempromosikan replika baca menjadi instans DB mandiri.

Memperbarui replika baca dengan MariaDB

Replika baca dirancang untuk mendukung kueri baca, tetapi Anda mungkin memerlukan pembaruan sesekali. Misalnya, Anda mungkin perlu menambahkan indeks untuk mempercepat jenis kueri tertentu yang mengakses replika. Anda dapat mengaktifkan pembaruan dengan mengatur parameter read_only untuk 0 dalam grup parameter DB untuk replika baca.

Menggunakan deployment replika baca multi-AZ dengan MariaDB

Anda dapat membuat replika baca dari deployment instans DB Multi-AZ atau tunggal-AZ. Anda menggunakan deployment Multi-AZ untuk meningkatkan dan ketersediaan data kritis, tetapi Anda tidak dapat menggunakan sekunder Multi-AZ untuk melayani kueri baca-saja. Sebagai gantinya, Anda dapat membuat replika baca dari instans DB Multi-AZ multi-lalu lintas tinggi untuk mengeluarkan kueri baca-saja. Jika instans sumber dari deployment Multi-AZ gagal karena replika baca sekunder, setiap replika baca terkait akan otomatis untuk menggunakan sumber sekunder (sekarang primer) sebagai sumber replikasinya. Untuk informasi selengkapnya, lihat Mengonfigurasi dan mengelola deployment Multi-AZ.

Anda dapat membuat replika baca sebagai instans DB Multi-AZ. Amazon RDS membuat instans siaga replika Anda di Zona Ketersediaan lain untuk dukungan failover untuk replika tersebut. Membuat replika baca Anda sebagai instans DB Multi-AZ tidak tergantung pada apakah basis data sumber adalah instans DB Multi-AZ.

Menggunakan replika baca berjenjang dengan RDS for MariaDB

RDS for MariaDB mendukung replika baca berjenjang. Dengan replika baca berjenjang, Anda dapat menskalakan pembacaan tanpa menambahkan overhead ke instans DB RDS for MariaDB Anda.

Dengan replika baca berjenjang, instans DB RDS for MariaDB Anda mengirimkan data ke replika baca pertama dalam rantai. Replika baca tersebut kemudian mengirimkan data ke replika kedua dalam rantai, dan seterusnya. Hasil akhirnya adalah bahwa semua replika baca dalam rantai memiliki perubahan dari instans DB RDS for MariaDB, tetapi tanpa overhead hanya pada instans DB sumber.

Anda dapat membuat serangkaian hingga tiga replika baca dalam rantai dari instans DB RDS for MariaDB sumber. Misalnya, anggaplah bahwa Anda memiliki instans DB RDS for MariaDB, mariadb-main. Anda dapat melakukan hal berikut:

  • Dimulai dengan mariadb-main, buat replika baca pertama dalam rantai, read-replica-1.

  • Selanjutnya, dari read-replica-1, buat replika baca berikutnya dalam rantai, read-replica-2.

  • Akhirnya, dari read-replica-2, buat replika baca ketiga dalam rantai, read-replica-3.

Anda tidak dapat membuat replika baca lain di luar replika baca berjenjang ketiga ini dalam seri untuk. mariadb-main Serangkaian instans lengkap dari instans DB RDS for MariaDB hingga akhir serangkaian replika baca berjenjang dapat terdiri dari paling banyak empat instans DB.

Agar replika baca berjenjang berfungsi, setiap sumber instans DB RDS for MariaDB harus mengaktifkan pencadangan otomatis. Untuk mengaktifkan pencadangan otomatis pada replika baca, pertama-tama buat replika baca, lalu ubah replika baca untuk mengaktifkan pencadangan otomatis. Untuk informasi selengkapnya, lihat Membuat replika baca.

Seperti halnya replika baca lainnya, Anda dapat mempromosikan replika baca yang merupakan bagian dari kaskade. Mempromosikan replika baca dari dalam rantai replika baca menghilangkan replika itu dari rantai. Misalnya, misalkan Anda ingin memindahkan sebagian beban kerja dari instans mariadb-main DB Anda ke instans baru untuk digunakan oleh departemen akuntansi saja. Dengan asumsi rantai tiga replika baca dari contoh, Anda memutuskan untuk mempromosikan read-replica-2. Rantai terpengaruh sebagai berikut:

  • Mempromosikan read-replica-2 menghapusnya dari rantai replikasi.

    • Sekarang menjadi instans DB baca/tulis penuh.

    • Itu terus bereplikasi read-replica-3, seperti yang dilakukan sebelum promosi.

  • mariadb-main Anda terus mereplikasi ke read-replica-1.

Untuk mengetahui informasi selengkapnya tentang cara mempromosikan replika baca, lihat Mempromosikan replika baca menjadi instans DB mandiri.

Memantau replika baca MariaDB

Untuk replika baca MariaDB, Anda dapat memantau kelambatan replikasi di Amazon CloudWatch dengan melihat metrik Amazon RDS. ReplicaLag Metrik ReplicaLag melaporkan nilai dari kolom Seconds_Behind_Master dari perintah SHOW REPLICA STATUS.

catatan

Versi sebelumnya dari MariaDB menggunakan SHOW SLAVE STATUS, bukan SHOW REPLICA STATUS. Jika Anda menggunakan MariaDB sebelum versi 10.5, gunakan SHOW SLAVE STATUS.

Penyebab umum keterlambatan replikasi untuk MariaDB adalah sebagai berikut:

  • Pemadaman jaringan.

  • Menulis ke tabel dengan indeks pada replika baca. Jika parameter read_only tidak diatur ke 0 pada replika baca, hal ini dapat merusak replikasi.

  • Gunakan mesin penyimpanan nontransaksional seperti MyISAM. Replikasi hanya didukung untuk mesin penyimpanan InnoDB pada MariaDB.

Saat metrik ReplicaLag mencapai 0, replika telah menyamai instans DB sumber. Jika metrik ReplicaLag menampilkan -1, replikasi saat ini tidak aktif. ReplicaLag = -1 setara dengan Seconds_Behind_Master = NULL.

Memulai dan menghentikan replikasi dengan replika baca MariaDB

Anda dapat menghentikan dan memulai ulang proses replikasi di instans Amazon RDS DB dengan memanggil prosedur yang disimpan sistem mysql.rds_stop_replication dan mysql.rds_start_replication. Anda dapat melakukan ini saat mereplikasi antara dua instans Amazon RDS untuk operasi jangka panjang seperti membuat indeks besar. Anda juga perlu menghentikan dan memulai replikasi saat mengimpor atau mengekspor basis data. Untuk informasi selengkapnya, lihat Mengimpor data ke basis data Amazon RDS MariaDB atau MySQL dengan lebih sedikit waktu henti dan Mengekspor data dari instans DB MySQL dengan menggunakan replikasi.

Jika replikasi dihentikan selama lebih dari 30 hari berturut-turut, baik secara manual atau karena kesalahan replikasi, Amazon RDS menghentikan replikasi antara instans DB sumber dan semua replika baca. Hal ini dilakukan untuk mencegah peningkatan persyaratan penyimpanan pada instans DB sumber dan waktu failover yang lama. Instans DB replika baca masih tersedia. Namun, replikasi tidak dapat dilanjutkan karena log biner yang diperlukan oleh replika baca dihapus dari instans DB sumber setelah replikasi dihentikan. Anda dapat membuat replika baca baru untuk instans DB sumber untuk memulihkan replikasi.

Pemecahan Masalah kendala 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 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 instans replika baca untuk Error jika replikasi berhenti karena alasan apa pun. Contohnya mungkin jika kueri DML yang dijalankan pada replika baca Anda bertentangan dengan pembaruan yang dilakukan 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 Menggunakan pemberitahuan peristiwa Amazon RDS. Jika muncul pesan kesalahan MariaDB, periksa kesalahan di dokumentasi pesan kesalahan MariaDB.

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. Parameter max_allowed_packet adalah parameter kustom yang dapat Anda atur dalam grup parameter DB yang digunakan untuk menentukan ukuran maksimum kode DML yang dapat dijalankan pada basis data. 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 replika baca MyISAM. memerlukan mesin penyimpanan transaksional. Replikasi hanya didukung untuk mesin penyimpanan InnoDB pada MariaDB.

  • Gunakan kueri nondeterministik yang tidak aman seperti SYSDATE(). Untuk informasi selengkapnya, lihat Penentuan laporan yang aman dan tidak aman dalam pengelogan biner.

Jika Anda memutuskan bahwa Anda dapat melewati kesalahan dengan aman, Anda dapat mengikuti langkah-langkah yang dijelaskan dalam Melewati kesalahan replikasi saat ini. 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 kejadian 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 kinerja, jadi uji dampaknya sebelum menerapkan perubahan di lingkungan produksi.