Untuk menambahkan lebih banyak budak ke pengaturan replikasi MySQL tanpa menyebabkan masalah kinerja, pertimbangkan untuk mengadopsi arsitektur replikasi berlapis-lapis daripada menghubungkan semua budak secara langsung ke sumber utama. Ketika banyak budak terhubung langsung ke satu sumber, itu meningkatkan beban pada sumber itu karena masing -masing budak mempertahankan koneksi dan sumber yang perlu mengirim data log biner ke masing -masing, yang dapat menjadi hambatan jaringan dan kinerja. Sebagai gantinya, konfigurasikan replikasi secara hierarkis dengan memiliki sumber utama replikasi ke satu atau beberapa replika perantara, yang kemudian mereplikasi ke sisa budak. Metode ini mengurangi jumlah koneksi langsung ke primer dan mendistribusikan beban replikasi lebih merata di seluruh server.
Replika perantara harus dikonfigurasi untuk mencatat pembaruan biner sendiri (dengan `log_slave_updates` diaktifkan), sehingga mereka dapat berfungsi sebagai sumber untuk replika hilir. Pengaturan ini secara efektif menciptakan rantai atau pohon replikasi, yang secara signifikan dapat meningkatkan kinerja dan skalabilitas.
Selain itu, mode replikasi memainkan peran penting dalam kinerja dan konsistensi data. MySQL mendukung mode replikasi asinkron dan semi-sinkron. Replikasi asinkron memungkinkan server utama melanjutkan dengan transaksi tanpa menunggu budak, meningkatkan throughput tulis tetapi mungkin menyebabkan lag replikasi. Replikasi semi-sinkron memastikan bahwa setidaknya satu budak mengakui transaksi sebelum primer melakukan itu, meningkatkan konsistensi data dengan sedikit biaya ke latensi. Sesuaikan pengaturan ini sesuai dengan persyaratan konsistensi dan latensi aplikasi.
Untuk mengoptimalkan lebih lanjut, selarahkan utas replikasi pada budak. Dari MySQL 5.6 dan seterusnya, replikasi multi-threaded didukung, memungkinkan beberapa utas SQL untuk menerapkan acara log relai secara paralel. Ini dapat mengurangi lag replikasi, terutama ketika beban kerja melibatkan banyak database atau tabel yang dapat diproses secara independen oleh banyak utas.
Konfigurasi Disk I/O juga penting: Log Log Relay dan File Basis Data pada drive fisik terpisah untuk meminimalkan pertengkaran I/O. Ini dapat membantu budak mengikuti aliran replikasi lebih efisien.
Dalam lingkungan yang besar, pertimbangkan untuk membagi tanggung jawab dengan mendelegasikan berbagai database atau tabel ke replika yang berbeda untuk menyeimbangkan beban dan mencegah pertengkaran pada replika tunggal.
Saat menambahkan budak baru, penting untuk menyediakannya dengan benar:
- Tetapkan `server_id` unik untuk menghindari konflik.
- Inisialisasi budak dengan snapshot atau cadangan data primer untuk memastikannya mulai mereplikasi dari titik yang konsisten.
- Mengkonfigurasi slave dengan detail koneksi sumber dan pengaturan replikasi.
-Gunakan opsi seperti `--kip-slave-start` selama inisialisasi untuk mencegah replikasi mulai sebelum waktunya.
- Mulai replikasi setelah pengaturan selesai dan monitor untuk lag atau kesalahan apa pun.
Mencadangkan dan memulihkan data tentang budak baru dapat dilakukan dengan menggunakan alat -alat seperti `Mysqldump`, Percona Xtrabackup, atau plugin klon MySQL, tergantung pada toleransi ukuran dan downtime. Utilitas XTrabackup dapat membuat cadangan panas tanpa mengunci database sumber, meminimalkan downtime.
Untuk sinkronisasi dan penyeimbangan beban awal, alat-alat seperti PT-Table-Sync dapat membantu memastikan konsistensi data antara master dan slave setelah restorasi.
Untuk meringkas, strategi utama untuk menambahkan lebih banyak budak tanpa degradasi kinerja meliputi:
- Gunakan topologi replikasi hierarkis dengan replika menengah.
- Mengaktifkan `log_slave_updates` pada replika perantara.
- Pilih antara mode replikasi asinkron dan semi-sinkron berdasarkan kebutuhan konsistensi dan latensi.
- Mempekerjakan replikasi multi-benang pada budak.
- Mengoptimalkan I/O dengan memisahkan log relai dan file data secara fisik.
- Mendistribusikan beban kerja replikasi berdasarkan basis data atau pemisahan tabel.
- Dengan hati -hati menyediakan budak baru dengan ID server unik dan snapshot yang konsisten.
- Gunakan alat cadangan dan sinkronisasi yang sesuai untuk pengaturan awal.
- Monitor lag replikasi dan metrik kinerja terus menerus.
Pendekatan ini membantu mempertahankan arsitektur replikasi yang dapat diskalakan dan berkinerja ketika jumlah budak tumbuh, menghindari kemacetan pada sumber utama dan memastikan throughput replikasi yang efisien.
Prosedur praktis terperinci untuk menyiapkan dan mengelola ini dapat ditemukan dalam dokumentasi resmi MySQL dan dari penyedia layanan MySQL yang berpengalaman yang berspesialisasi dalam arsitektur ketersediaan dan replikasi tinggi.