Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Mengoptimalkan replikasi log biner untuk Aurora My SQL
Setelah itu, Anda dapat mempelajari cara mengoptimalkan kinerja replikasi log biner dan memecahkan masalah terkait di Aurora My. SQL
Tip
Diskusi ini menganggap bahwa Anda sudah familiar dengan mekanisme replikasi log SQL biner saya dan cara kerjanya. Untuk informasi latar belakang, lihat Implementasi Replikasi
Replikasi log biner multithreaded
Dengan replikasi log biner multithreaded, sebuah SQL thread membaca peristiwa dari log relai dan mengantrekannya agar thread pekerja dapat diterapkan. SQL Thread SQL pekerja dikelola oleh utas koordinator. Peristiwa log biner diterapkan secara paralel jika memungkinkan.
Replikasi log biner multithreaded didukung di Aurora My versi SQL 3, dan di Aurora My versi 2.12.1 dan lebih tinggi. SQL
Ketika instans Aurora My SQL DB dikonfigurasi untuk menggunakan replikasi log biner, secara default instance replika menggunakan replikasi single-threaded untuk Aurora My versi lebih rendah dari 3.04. SQL Untuk mengaktifkan replikasi multi-thread, Anda memperbarui parameter replica_parallel_workers
ke nilai yang lebih besar dari nol di grup parameter kustom Anda.
Untuk Aurora My SQL versi 3.04 dan yang lebih tinggi, replikasi multithreaded secara default, dengan disetel ke. replica_parallel_workers
4
Anda dapat memodifikasi parameter ini di grup parameter kustom Anda.
Opsi konfigurasi berikut dapat membantu Anda menyesuaikan replikasi multi-thread. Untuk informasi penggunaan, lihat Opsi dan Variabel Replikasi dan Pencatatan Biner
Konfigurasi yang optimal akan bergantung pada beberapa faktor. Misalnya, performa replikasi log biner dipengaruhi oleh karakteristik beban kerja basis data Anda dan kelas instans DB tempat replika berjalan. Oleh karena itu, kami menyarankan Anda menguji secara menyeluruh semua perubahan pada parameter konfigurasi ini sebelum menerapkan pengaturan parameter baru ke instance produksi:
-
binlog_group_commit_sync_delay
-
binlog_group_commit_sync_no_delay_count
-
binlog_transaction_dependency_history_size
-
binlog_transaction_dependency_tracking
-
replica_preserve_commit_order
-
replica_parallel_type
-
replica_parallel_workers
Di Aurora My SQL versi 3.06 dan lebih tinggi, Anda dapat meningkatkan kinerja replika log biner saat mereplikasi transaksi untuk tabel besar dengan lebih dari satu indeks sekunder. Fitur ini memperkenalkan kumpulan utas untuk menerapkan perubahan indeks sekunder secara paralel pada replika binlog. Fitur ini dikendalikan oleh parameter cluster aurora_binlog_replication_sec_index_parallel_workers
DB, yang mengontrol jumlah total thread paralel yang tersedia untuk menerapkan perubahan indeks sekunder. Parameter diatur ke 0
(dinonaktifkan) secara default. Mengaktifkan fitur ini tidak memerlukan instance restart. Untuk mengaktifkan fitur ini, hentikan replikasi yang sedang berlangsung, atur jumlah thread parallel worker yang diinginkan, lalu mulai replikasi lagi.
Anda juga dapat menggunakan parameter ini sebagai variabel global, di mana n
adalah jumlah utas pekerja paralel:
SET global aurora_binlog_replication_sec_index_parallel_workers=
n
;
Mengoptimalkan replikasi binlog (Aurora My 2.10 dan lebih tinggi) SQL
Di Aurora My SQL 2.10 dan yang lebih tinggi, Aurora secara otomatis menerapkan optimasi yang dikenal sebagai cache binlog I/O ke replikasi log biner. Dengan membuat cache peristiwa binlog yang paling baru di-commit, optimisasi ini dirancang untuk meningkatkan performa thread dump binlog sambil membatasi dampak pada transaksi latar depan di instans sumber binlog.
catatan
Memori yang digunakan untuk fitur ini tidak tergantung pada SQL binlog_cache
pengaturan Saya.
Fitur ini tidak berlaku untuk instans Aurora DB yang menggunakan kelas instans db.t2
dan db.t3
.
Anda tidak perlu menyesuaikan parameter konfigurasi apa pun untuk mengaktifkan optimisasi ini. Secara khusus, jika Anda menyesuaikan parameter konfigurasi aurora_binlog_replication_max_yield_seconds
ke nilai bukan nol di versi Aurora SQL My sebelumnya, atur kembali ke nol untuk Aurora SQL My 2.10 dan yang lebih tinggi.
Variabel status aurora_binlog_io_cache_reads
dan aurora_binlog_io_cache_read_requests
tersedia di Aurora My SQL 2.10 dan lebih tinggi. Variabel status ini membantu Anda untuk memantau seberapa sering data dibaca dari cache I/O binlog.
-
aurora_binlog_io_cache_read_requests
menunjukkan jumlah permintaan baca I/O binlog dari cache. -
aurora_binlog_io_cache_reads
: menunjukkan jumlah baca I/O binlog yang mengambil informasi dari cache.
SQLKueri berikut menghitung persentase permintaan baca binlog yang memanfaatkan informasi yang di-cache. Dalam hal ini, makin dekat rasionya ke 100, makin baik.
mysql> SELECT (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='aurora_binlog_io_cache_reads') / (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='aurora_binlog_io_cache_read_requests') * 100 as binlog_io_cache_hit_ratio; +---------------------------+ | binlog_io_cache_hit_ratio | +---------------------------+ | 99.99847949080622 | +---------------------------+
Fitur cache I/O binlog juga menyertakan metrik baru yang terkait dengan thread dump binlog. Thread dump adalah thread yang dibuat saat replika binlog baru terhubung ke instans sumber binlog.
Metrik thread dump dicetak ke log basis data setiap 60 detik dengan awalan [Dump thread
metrics]
. Metrik ini mencakup informasi untuk setiap replika binlog seperti Secondary_id
, Secondary_uuid
, nama file binlog, dan posisi yang dibaca setiap replika. Metrik ini juga mencakup Bytes_behind_primary
yang merepresentasikan jarak dalam byte antara sumber replikasi dan replika. Metrik ini mengukur lag thread I/O replika. Angka itu berbeda dari lag utas SQL applier replika, yang diwakili oleh seconds_behind_master
metrik pada replika binlog. Anda dapat menentukan apakah replika binlog mengimbangi atau tertinggal di belakang sumber dengan memeriksa apakah jaraknya berkurang atau bertambah.
Mengoptimalkan replikasi binlog (Aurora My SQL versi 2 hingga 2.09)
Untuk mengoptimalkan replikasi log biner untuk Aurora SQL My, Anda menyesuaikan parameter pengoptimalan tingkat cluster berikut. Parameter ini membantu Anda menentukan keseimbangan yang tepat antara latensi pada instans sumber binlog dan lag replikasi.
-
aurora_binlog_use_large_read_buffer
-
aurora_binlog_read_buffer_size
-
aurora_binlog_replication_max_yield_seconds
catatan
Untuk cluster My SQL 5.7 yang kompatibel, Anda dapat menggunakan parameter ini di Aurora My SQL versi 2 hingga 2.09.*. Di Aurora My SQL 2.10.0 dan yang lebih tinggi, parameter ini digantikan oleh pengoptimalan cache I/O binlog dan Anda tidak perlu menggunakannya.
Topik
Gambaran umum buffer baca besar dan optimisasi hasil maks
Anda mungkin mengalami penurunan performa replikasi log biner saat thread dump log biner mengakses volume klaster Aurora sementara klaster ini memproses sejumlah besar transaksi. Anda dapat menggunakan parameter aurora_binlog_use_large_read_buffer
, aurora_binlog_replication_max_yield_seconds
, dan aurora_binlog_read_buffer_size
untuk membantu meminimalkan jenis pertentangan ini.
Misalkan Anda memiliki situasi di mana aurora_binlog_replication_max_yield_seconds
disetel ke nilai yang lebih besar dari 0 dan file binlog terkini thread dump berstatus aktif. Dalam hal ini, thread dump log biner menunggu hingga beberapa detik agar file binlog saat ini diisi oleh transaksi. Periode tunggu ini menghindari pertentangan yang dapat timbul dari replikasi setiap binlog peristiwa secara individual. Namun, hal ini akan meningkatkan lag replika untuk replika log biner. Replika tersebut dapat tertinggal di belakang sumber dengan jumlah detik yang sama seperti pengaturan aurora_binlog_replication_max_yield_seconds
.
File binlog terkini adalah file binlog yang sedang dibaca oleh thread dump untuk melakukan replikasi. Kami menganggap bahwa file binlog aktif jika file binlog ini memperbarui atau terbuka untuk diperbarui oleh transaksi masuk. Setelah Aurora My SQL mengisi file binlog aktif, My SQL membuat dan beralih ke file binlog baru. File binlog lama menjadi tidak aktif. File ini tidak diperbarui oleh transaksi masuk lagi.
catatan
Sebelum menyesuaikan parameter ini, ukur latensi dan throughput transaksi Anda dari waktu ke waktu. Anda mungkin menemukan bahwa performa replikasi log biner stabil dan memiliki latensi rendah bahkan jika ada pertentangan sesekali.
aurora_binlog_use_large_read_buffer
-
Jika parameter ini diatur ke 1, Aurora My SQL mengoptimalkan replikasi log biner berdasarkan pengaturan parameter dan.
aurora_binlog_read_buffer_size
aurora_binlog_replication_max_yield_seconds
Jikaaurora_binlog_use_large_read_buffer
0, Aurora My SQL mengabaikan nilai dan parameter.aurora_binlog_read_buffer_size
aurora_binlog_replication_max_yield_seconds
aurora_binlog_read_buffer_size
-
Thread dump log biner dengan buffer baca yang lebih besar meminimalkan jumlah operasi I/O baca dengan membaca lebih banyak peristiwa untuk setiap I/O. Parameter
aurora_binlog_read_buffer_size
mengatur ukuran buffer baca. Buffer baca yang besar dapat mengurangi pertentangan log biner untuk beban kerja yang menghasilkan data binlog dalam jumlah besar.catatan
Parameter ini hanya berpengaruh ketika klaster juga memiliki pengaturan
aurora_binlog_use_large_read_buffer=1
.Meningkatkan ukuran buffer baca tidak memengaruhi performa replikasi log biner. Thread dump log biner tidak menunggu pembaruan transaksi untuk mengisi buffer baca.
aurora_binlog_replication_max_yield_seconds
-
Jika beban kerja Anda memerlukan latensi transaksi yang rendah, dan Anda dapat menoleransi beberapa lag replikasi, Anda dapat meningkatkan parameter
aurora_binlog_replication_max_yield_seconds
. Parameter ini mengontrol properti hasil maksimum replikasi log biner di klaster Anda.catatan
Parameter ini hanya berpengaruh ketika klaster juga memiliki pengaturan
aurora_binlog_use_large_read_buffer=1
.
Aurora My segera SQL mengenali perubahan apa pun pada nilai aurora_binlog_replication_max_yield_seconds
parameter. Anda tidak perlu memulai ulang instans DB. Namun, saat Anda mengaktifkan pengaturan ini, thread dump hanya mulai memberikan hasil saat file binlog saat ini mencapai ukuran maksimum 128 MB dan dirotasi ke file baru.
Parameter terkait
Gunakan parameter klaster DB berikut untuk mengaktifkan optimisasi binlog.
Parameter | Default | Nilai Valid | Deskripsi |
---|---|---|---|
aurora_binlog_use_large_read_buffer
|
1 | 0, 1 | Opsi untuk mengaktifkan fitur peningkatan replikasi. Jika nilainya 1, thread dump log biner menggunakan aurora_binlog_read_buffer_size untuk replikasi log biner; jika tidak, ukuran buffer default (8K) digunakan. Tidak digunakan di Aurora SQL Versi saya 3. |
aurora_binlog_read_buffer_size
|
5242880 | 8192-536870912 | Ukuran buffer baca yang digunakan oleh thread dump log biner saat parameter aurora_binlog_use_large_read_buffer disetel ke 1. Tidak digunakan di Aurora SQL Versi saya 3. |
aurora_binlog_replication_max_yield_seconds
|
0 | 0-36000 |
Untuk Aurora SQL Versi saya 2.07.*, nilai maksimum yang diterima adalah 45. Anda dapat menyetelnya ke nilai yang lebih tinggi pada versi 2.09 dan yang lebih baru. Untuk versi 2, parameter ini hanya berfungsi jika parameter |
Mengaktifkan mekanisme hasil maksimal untuk replikasi log biner
Anda dapat mengaktifkan optimisasi hasil maksimal replikasi log biner sebagai berikut. Hal ini akan meminimalkan latensi untuk transaksi pada instans sumber binlog. Namun, Anda mungkin mengalami lag replikasi yang lebih tinggi.
Untuk mengaktifkan optimasi binlog hasil maksimal untuk klaster Aurora My SQL
-
Ciptakan atau edit sebuah grup parameter klaster DB menggunakan pengaturan parameter berikut:
-
aurora_binlog_use_large_read_buffer
: aktifkan dengan nilaiON
atau 1. -
aurora_binlog_replication_max_yield_seconds
: tentukan nilai lebih besar dari 0.
-
-
Kaitkan grup parameter cluster DB dengan SQL cluster Aurora My yang berfungsi sebagai sumber binlog. Untuk melakukannya, ikuti prosedur dalam .
-
Konfirmasikan bahwa perubahan parameter berlaku. Untuk melakukannya, jalankan kueri berikut pada instans sumber binlog.
SELECT @@aurora_binlog_use_large_read_buffer, @@aurora_binlog_replication_max_yield_seconds;
Output Anda harus seperti yang berikut ini.
+---------------------------------------+-----------------------------------------------+ | @@aurora_binlog_use_large_read_buffer | @@aurora_binlog_replication_max_yield_seconds | +---------------------------------------+-----------------------------------------------+ | 1 | 45 | +---------------------------------------+-----------------------------------------------+
Menonaktifkan optimisasi hasil maksimal replikasi log biner
Anda dapat menonaktifkan optimisasi hasil maksimal replikasi log biner sebagai berikut. Hal ini akan meminimalkan lag replikasi. Namun, Anda mungkin mengalami latensi yang lebih tinggi untuk transaksi pada instans sumber binlog.
Untuk menonaktifkan optimasi hasil maksimal untuk klaster Aurora My SQL
-
Pastikan bahwa grup parameter cluster DB yang terkait dengan SQL cluster Aurora My telah
aurora_binlog_replication_max_yield_seconds
disetel ke 0. Untuk informasi selengkapnya tentang cara mengatur parameter konfigurasi menggunakan grup parameter, lihat . -
Konfirmasikan bahwa perubahan parameter berlaku. Untuk melakukannya, jalankan kueri berikut pada instans sumber binlog.
SELECT @@aurora_binlog_replication_max_yield_seconds;
Output Anda harus seperti yang berikut ini.
+-----------------------------------------------+ | @@aurora_binlog_replication_max_yield_seconds | +-----------------------------------------------+ | 0 | +-----------------------------------------------+
Menonaktifkan buffer baca besar
Anda dapat menonaktifkan seluruh fitur buffer baca besar sebagai berikut.
Untuk mematikan buffer baca log biner besar untuk klaster Aurora My SQL
-
Atur ulang
aurora_binlog_use_large_read_buffer
keOFF
atau 0.Pastikan bahwa grup parameter cluster DB yang terkait dengan SQL cluster Aurora My telah
aurora_binlog_use_large_read_buffer
disetel ke 0. Untuk informasi selengkapnya tentang cara mengatur parameter konfigurasi menggunakan grup parameter, lihat . -
Pada instans sumber binlog, jalankan kueri berikut.
SELECT @@ aurora_binlog_use_large_read_buffer;
Output Anda harus seperti yang berikut ini.
+---------------------------------------+ | @@aurora_binlog_use_large_read_buffer | +---------------------------------------+ | 0 | +---------------------------------------+