Di blog ini, saya akan membahas aspek-aspek penting untuk diuji saat membuat tolok ukur pengaturan iterasi Anda. MySQL memiliki alat hebat yang dapat digunakan untuk menguji kinerjanya. Mereka:
sysbench – https://github.com/akopytov/sysbench
BMK-kit – http://dimitrik.free.fr/blog/posts/mysql-perf-bmk-kit.html
mysqlslap – https://dev.mysql.com/doc/refman/8.0/en/mysqlslap.html
LinkBench – https://github.com/facebookarchive/linkbench
Saya tidak akan menjelaskan cara menggunakannya di sini, karena Anda dapat menemukan petunjuk di tautan yang disediakan atau di blog Percona dengan menjelajahi tag sysbench, benchmark, metrik, dan metrik kategori.
Namun, sebagian besar instruksi mempertimbangkan server MySQL mandiri. Jika Anda ingin menguji cara kerja pengaturan berulang, Anda mungkin ingin melakukan beberapa pemeriksaan lainnya.
Bisakah Replika mencapai server sumber?
Untuk menjawab pertanyaan ini, Anda perlu menjalankan sekali di mesin sumber dan memantau latensi replika. Anda dapat melakukannya dengan memeriksa
memperlihatkan Duplikat, salinan persis Kondisi (
memperlihatkan status budak) keluaran, terutama nilai
Seconds_Behind_Source (
detik_behind_the_master ) parameter. Parameter yang sama dengan “Penundaan Replikasi MySQL” Bagan berikut “Ringkasan Replikasi MySQL” Dashboard di Percona Monitoring and Management (PMM).
Ulasan yang lebih maju adalah perbandingan
Exec_Source_Log_Pos (
Exec_Master_Log_Pos )
Relay_Log_File Dengan
Baca_Sumber_Log_Pos (
Baca_Master_Log_Pos )
Source_Log_File pasangan sejak saat itu
Seconds_Behind_Source Mereka mungkin terpengaruh oleh perintah yang berjalan lama dan mengembalikan nilai yang salah.
Jika Anda melihat peningkatan latensi, Anda dapat menyetel server replika Anda dengan menambahkan paralelisasi. Periksa juga opsi caranya
binlog_transaction_dependency_tracking Bekerja: https://dev.mysql.com/doc/refman/8.0/en/replication-options-binary-log.html#sysvar_binlog_transaction_dependency_tracking
Bisakah Replica menjalankan kueri saat menerapkan pembaruan dari server sumber?
Setelah Anda puas dengan penundaan replikasi, Anda dapat menambahkan beban yang ingin Anda jalankan pada tiruan ini dan menguji kinerjanya. Misalnya, jika Anda berencana menggunakan replika untuk menangani kueri hanya-baca, Anda bisa menerapkan kriteria baca-saja di dalamnya. Anda harus memperhatikan kinerja benchmark read-only dan penundaan replikasi.
Jika Anda berencana untuk menjalankan kueri analitik pada tiruan: ujilah. Jika Anda berencana menggunakan replika ini untuk pencadangan: Ambil cadangan dan ukur pengaruhnya terhadap kinerja replikasi.
Replikasi sinkron
Solusi replikasi serentak seperti Galera, Percona XtraDB Cluster (PXC), dan Group Replication dipengaruhi oleh waktu henti kontrol aliran. Anda dapat menggunakan PMM untuk memantaunya.
Untuk kluster PXC/Galera, lihat grafiknya “Waktu berhenti kontrol aliran” Dibawah Ringkasan Kluster PXC/Galera Dasbor.
Atau Anda dapat melihat nilainya
wsrep_flow_control_paused Variabel. Lihat Galera Flow Control di Percona XtraDB Cluster untuk MySQL untuk lebih jelasnya.
Untuk Replikasi Grup, Anda harus memeriksa nilai
COUNT_TRANSACTIONS_REMOTE_IN_APPLIER_QUEUE kolom di tabel
kinerja_skema.replication_group_member_stats . Ini menunjukkan berapa banyak transaksi yang menunggu untuk diterapkan dalam antrian node sekunder.
Anda juga dapat menonton “ulangi penundaan” Bagan berikut “Duplikasi Grup MySQL” Dasbor di PMM
Tes terbaik Anda adalah produksi Anda
Seperti yang dinyatakan oleh Dmitri Kravchuk dalam Fosdem 2020:
Meskipun tolok ukur seperti itu akan sulit dibuat di server yang menerima entri pengguna, tolok ukur ini relatif mudah untuk disalin. Yang harus Anda lakukan adalah membuat salinan server produksi Anda dan belum membuatnya tersedia untuk aplikasi. Pertama, lihat apakah ia dapat menangani penundaan pengulangan saat idle, lalu mulailah menambahkan beban ke dalamnya. Anda juga dapat menggunakan fitur Mirroring ProxySQL Note. Namun, Anda harus memeriksa apakah beberapa batasan yang dijelaskan dalam posting ini masih berlaku.
Seberapa cepat replika tiba?
Hal lain yang mungkin ingin Anda uji adalah seberapa cepat pembaruan diambil dari server sumber setelah penundaan dalam mencobanya kembali. Untuk melakukan pengujian ini, hentikan replika saat beban server sumber sedang berjalan, mulai ulang setelah jangka waktu tertentu, dan perhatikan penundaan replikasi. Jika Anda menguji versi yang menyediakan beban hanya baca, izinkan pengujian beban untuk dilanjutkan.
Yang terbaik adalah melakukan stop, wait, dan start dalam serangkaian perintah, jadi Anda akan memiliki kendali atas berapa lama berhenti. Misalnya, untuk menghentikan replika selama satu jam, gunakan perintah berikut:
HENTIKAN REPLIKA; PILIH TIDUR (3600); MULAI REPLIKA;
Berhenti Duplikat, salinan persis; Pilih tidur(3600); Mulailah Duplikat, salinan persis; |
Kemudian tunggu Replika berjalan:
pilih SERVICE_STATE dari performance_schema.replication_applier_status;
Pilih SERVICE_STATE dari performance_schema.replication_applier_status; |
Saat kueri ini diaktifkan, mulailah memantau nilainya
Seconds_Behind_Source Pada
memperlihatkan Duplikat, salinan persis Kondisi keluaran hingga menjadi 0. Catat waktu ketika ini terjadi. Dengan cara ini, Anda akan tahu berapa banyak waktu yang dibutuhkan untuk menerapkan satu jam perubahan.
Hasil
Anda dapat menggunakan alat pembandingan yang sama yang direkomendasikan untuk server MySQL mandiri untuk melakukan tes kinerja terhadap pengaturan replikasi. Anda hanya perlu memantau delay replay beserta karakteristik performa lainnya.