Rumah pangkalan data tutorial mysql Bagaimana mereka bentuk seni bina sistem storan MySQL Binlog

Bagaimana mereka bentuk seni bina sistem storan MySQL Binlog

Jun 02, 2023 pm 10:10 PM
mysql binlog

1. Pengenalan kepada kingbus

1.1 Apakah kingbus?

Kingbus ialah sistem penyimpanan binlog MySQL yang diedarkan berdasarkan protokol ketekalan kuat rakit. Ia boleh bertindak sebagai Hamba MySQL untuk menyegerakkan binlog daripada Master sebenar dan menyimpannya dalam kelompok yang diedarkan. Pada masa yang sama, ia juga bertindak sebagai Master MySQL untuk menyegerakkan binlog dalam kelompok kepada hamba lain. kingbus mempunyai ciri-ciri berikut:

Serasi dengan protokol replikasi MySQL, menyegerakkan binlog pada Master melalui Gtid dan menyokong hamba untuk menarik binlog dari kingbus melalui Gtid.

Replikasi data merentas wilayah, Kingbus menyokong replikasi data merentas wilayah melalui protokol rakit. Data binlog yang ditulis kepada kluster dijamin sangat konsisten merentas berbilang nod, dan susunan binlog benar-benar konsisten dengan yang ada pada induk.

Ketersediaan tinggi, kerana Kingbus dibina di atas protokol konsensus kukuh Raft, ia boleh mencapai ketersediaan tinggi bagi keseluruhan perkhidmatan tarik dan tolak binlog apabila lebih separuh daripada nod dalam kluster bertahan.

1.2 Apakah masalah yang boleh diselesaikan oleh kingbus?

Kingbus boleh mengurangkan trafik penghantaran rangkaian Master. Dalam topologi replikasi dengan satu tuan dan berbilang hamba, tuan perlu menghantar binlog kepada setiap hamba Jika terdapat terlalu banyak hamba, trafik rangkaian berkemungkinan mencapai had atas kad rangkaian tuan. Sebagai contoh, apabila induk melakukan operasi seperti memadam jadual besar atau DDL dalam talian, sejumlah besar peristiwa binlog boleh dijana serta-merta Jika 10 hamba disambungkan kepada induk, trafik kad rangkaian pada induk akan dikuatkan sebanyak 10 kali . Jika induk menggunakan kad rangkaian Gigabit, kad rangkaian mungkin penuh jika lebih daripada 10MB/S trafik dijana. Dengan menyambung kepada master melalui kingbus, hamba boleh diedarkan kepada berbilang mesin untuk mengimbangi trafik penghantaran.

Untuk memudahkan proses Master Failover, anda hanya perlu mempromosikan hamba yang disambungkan ke kingbus untuk dikuasai, dan ubah hala kingbus ke master baharu, hamba lain masih disambungkan ke kingbus, dan topologi replikasi kekal tidak berubah.

Simpan ruang yang digunakan oleh Master untuk menyimpan fail binlog. Secara amnya, MySQL menggunakan SSD yang lebih mahal Jika fail binlog mengambil banyak ruang, data yang disimpan dalam MySQL perlu dikurangkan. Anda boleh mengurangkan bilangan fail binlog yang disimpan pada Master dengan menyimpan semua binlog dalam kingbus

Menyokong replikasi heterogen. Sambung ke kingbus melalui saluran sumber terbuka Alibaba secara berterusan menolak binlog ke terusan menerima binlog dan kemudian menolaknya ke baris gilir mesej kafka, dan akhirnya menyimpannya dalam HBase analisis perniagaan.

2. Seni bina keseluruhan Kingbus

Struktur keseluruhan kingbus ditunjukkan dalam rajah di bawah:

Storan bertanggungjawab untuk menyimpan entri log rakit dan Metadata Dalam Kingbus, log rakit dan mysql binlog dibezakan oleh maklumat pengepala yang berbeza Bahagian data log rakit adalah peristiwa binlog daripada log secara berasingan , menjimatkan ruang simpanan. Kerana kingbus perlu menyimpan beberapa maklumat meta, seperti maklumat undian nod rakit dan kandungan khusus beberapa acara binlog khas (FORMAT_DESCRIPTION_EVENT).

Raft mereplikasi pemilihan utama, replikasi log dan fungsi lain kluster kingbus, menggunakan perpustakaan rakit etcd.

Penyegerak Binlog hanya berjalan pada nod utama gugusan Raft Hanya terdapat satu penyegerak dalam keseluruhan gugusan. Penyegerak berpura-pura menjadi hamba dan mewujudkan sambungan replikasi induk-hamba kepada Master Master akan menapis peristiwa binlog yang telah diterima oleh penyegerak berdasarkan set executed_gtid_set yang dihantar oleh penyegerak dan hanya menghantar peristiwa binlog yang tidak dimiliki oleh penyegerak. diterima Protokol replikasi ini serasi sepenuhnya dengan mekanisme replikasi tuan-hamba MySQL. Selepas penyegerak menerima acara binlog, ia akan melakukan beberapa pemprosesan mengikut jenis acara binlog, dan kemudian merangkum acara binlog ke dalam mesej dan menyerahkannya kepada kelompok rakit. Melalui algoritma rakit, acara binlog ini boleh disimpan pada berbilang nod dan mencapai konsistensi yang kukuh.

Pelayan Binlog ialah Master yang melaksanakan protokol replikasi Hamba sebenar boleh menyambung ke port yang dipantau oleh pelayan binlog Pelayan binlog akan menghantar acara binlog kepada hamba Protokol replikasi MySQL. Apabila tiada acara binlog dihantar kepada hamba, pelayan binlog akan menghantar peristiwa degupan jantung secara berkala kepada hamba untuk memastikan sambungan replikasi hidup.

Pelayan API bertanggungjawab untuk pengurusan keseluruhan kluster kingbus, termasuk yang berikut:

Operasi keahlian kluster rakit, lihat status kluster, tambah nod, keluarkan nod, kemas kini maklumat nod, dsb.

Operasi berkaitan penyegerak binlog: mulakan penyegerak binlog, hentikan penyegerak binlog dan semak status penyegerak binlog.

Operasi berkaitan pelayan Binlog, mulakan pelayan binlog, hentikan pelayan binlog, dan semak status pelayan binlog. Pelbagai kelainan pada lapisan pelayan tidak akan menjejaskan lapisan rakit Pelayan boleh difahami sebagai pemalam, yang boleh dimulakan dan dihentikan apabila diminta. Apabila melanjutkan Kingbus pada masa hadapan, anda hanya perlu melaksanakan pelayan dengan logik yang berkaitan. Contohnya, jika anda melaksanakan pelayan protokol kafka, anda boleh menggunakan mesej dalam kingbus melalui klien kafka.

3.pelaksanaan teras kingbus

3.1 Pelaksanaan teras storan

Terdapat dua bentuk log dalam simpanan, satu ialah log rakit (selepas ini dirujuk sebagai log rakit), yang dihasilkan dan digunakan oleh algoritma rakit, dan satu lagi ialah Log bentuk pengguna (iaitu, acara mysql binlog) . Dalam reka bentuk Storan, dua borang Log digabungkan menjadi satu Kemasukan Log. Ia hanya dibezakan oleh maklumat pengepala yang berbeza. Storan terdiri daripada fail data dan fail indeks, seperti yang ditunjukkan dalam rajah di bawah:

Segmen mempunyai saiz tetap (1GB) dan hanya boleh ditulis sebagai tambahan Namanya ialah indeks_rakit_rakit-akhir_rakit, yang menunjukkan julat indeks rakit bagi segmen.

Hanya segmen terakhir boleh ditulis dan nama failnya ialah first_raft_index-inprogress Segmen lain adalah baca sahaja.

Segmen baca sahaja dan fail indeks yang sepadan ditulis dan dibaca melalui mmap.

Kandungan indeks segmen terakhir disimpan dalam kedua-dua cakera dan memori. Membaca indeks hanya memerlukan bacaan dari ingatan.

3.2 Penggunaan perpustakaan rakit etcd

Pustaka rakit Etcd adalah satu benang apabila memproses log yang digunakan, entri komited, dsb. Sila rujuk pautan untuk fungsi tertentu Masa pemprosesan fungsi ini mestilah sesingkat mungkin Jika masa pemprosesan melebihi masa pemilihan rakit, kluster akan dipilih semula. Perkara ini memerlukan perhatian khusus.

3.3 Pelaksanaan teras penyegerak binlog

Tugas utama penyegerak binlog ialah:

Acara tarik binlog

Menghuraikan dan memproses acara binlog

Serahkan acara binlog kepada kelompok rakit. Jelas sekali, mekanisme saluran paip boleh digunakan untuk meningkatkan kelajuan pemprosesan keseluruhan proses Kingbus menggunakan goroutine yang berasingan untuk memproses setiap peringkat, dan menghubungkan peringkat yang berbeza melalui saluran paip. Memandangkan penyegerak binlog menerima peristiwa binlog satu demi satu, penyegerak tidak dapat menjamin integriti transaksi Ada kemungkinan bahawa selepas penyegerak digantung, induk perlu disambungkan semula pada masa ini, penyegerak Binlog mungkin tidak lengkap lengkap. Dengan keupayaan unik, kingbus melaksanakan fungsi analisis integriti transaksi, yang dilaksanakan sepenuhnya dengan merujuk kepada kod sumber MySQL.

3.4 Pelaksanaan teras pelayan binlog

Pelayan Binlog melaksanakan fungsi induk Apabila hamba mewujudkan sambungan replikasi dengan pelayan binlog, hamba akan menghantar arahan yang berkaitan, dan pelayan binlog perlu bertindak balas kepada arahan ini. Akhirnya hantar acara binlog kepada hamba. Untuk setiap hamba, pelayan binlog akan memulakan goroutine untuk membaca log rakit secara berterusan, mengalih keluar maklumat pengepala yang berkaitan, dan mengubahnya menjadi acara binlog, yang kemudiannya akan dihantar kepada hamba.

Atas ialah kandungan terperinci Bagaimana mereka bentuk seni bina sistem storan MySQL Binlog. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial Java
1659
14
Tutorial PHP
1258
29
Tutorial C#
1232
24
Peranan MySQL: Pangkalan Data dalam Aplikasi Web Peranan MySQL: Pangkalan Data dalam Aplikasi Web Apr 17, 2025 am 12:23 AM

Peranan utama MySQL dalam aplikasi web adalah untuk menyimpan dan mengurus data. 1.MYSQL dengan cekap memproses maklumat pengguna, katalog produk, rekod urus niaga dan data lain. 2. Melalui pertanyaan SQL, pemaju boleh mengekstrak maklumat dari pangkalan data untuk menghasilkan kandungan dinamik. 3.MYSQL berfungsi berdasarkan model klien-pelayan untuk memastikan kelajuan pertanyaan yang boleh diterima.

Contoh Pengenalan Laravel Contoh Pengenalan Laravel Apr 18, 2025 pm 12:45 PM

Laravel adalah rangka kerja PHP untuk membina aplikasi web yang mudah. Ia menyediakan pelbagai ciri yang kuat termasuk: Pemasangan: Pasang Laravel CLI secara global dengan komposer dan buat aplikasi dalam direktori projek. Routing: Tentukan hubungan antara URL dan pengendali dalam laluan/web.php. Lihat: Buat pandangan dalam sumber/pandangan untuk menjadikan antara muka aplikasi. Integrasi Pangkalan Data: Menyediakan integrasi keluar-of-the-box dengan pangkalan data seperti MySQL dan menggunakan penghijrahan untuk membuat dan mengubah suai jadual. Model dan Pengawal: Model mewakili entiti pangkalan data dan proses pengawal permintaan HTTP.

Cara Memulakan MySQL oleh Docker Cara Memulakan MySQL oleh Docker Apr 15, 2025 pm 12:09 PM

Proses memulakan MySQL di Docker terdiri daripada langkah -langkah berikut: Tarik imej MySQL untuk membuat dan memulakan bekas, tetapkan kata laluan pengguna root, dan memetakan sambungan pengesahan port Buat pangkalan data dan pengguna memberikan semua kebenaran ke pangkalan data

Selesaikan masalah sambungan pangkalan data: Kes praktikal menggunakan perpustakaan mini/db Selesaikan masalah sambungan pangkalan data: Kes praktikal menggunakan perpustakaan mini/db Apr 18, 2025 am 07:09 AM

Saya menghadapi masalah yang rumit ketika membangunkan aplikasi kecil: keperluan untuk mengintegrasikan perpustakaan operasi pangkalan data ringan dengan cepat. Selepas mencuba beberapa perpustakaan, saya mendapati bahawa mereka mempunyai terlalu banyak fungsi atau tidak serasi. Akhirnya, saya dapati Minii/DB, versi mudah berdasarkan YII2 yang menyelesaikan masalah saya dengan sempurna.

MySQL dan PHPMyAdmin: Ciri dan Fungsi Teras MySQL dan PHPMyAdmin: Ciri dan Fungsi Teras Apr 22, 2025 am 12:12 AM

MySQL dan phpmyadmin adalah alat pengurusan pangkalan data yang kuat. 1) MySQL digunakan untuk membuat pangkalan data dan jadual, dan untuk melaksanakan pertanyaan DML dan SQL. 2) Phpmyadmin menyediakan antara muka intuitif untuk pengurusan pangkalan data, pengurusan struktur meja, operasi data dan pengurusan kebenaran pengguna.

Mysql vs Bahasa Pengaturcaraan Lain: Perbandingan Mysql vs Bahasa Pengaturcaraan Lain: Perbandingan Apr 19, 2025 am 12:22 AM

Berbanding dengan bahasa pengaturcaraan lain, MySQL digunakan terutamanya untuk menyimpan dan mengurus data, manakala bahasa lain seperti Python, Java, dan C digunakan untuk pemprosesan logik dan pembangunan aplikasi. MySQL terkenal dengan prestasi tinggi, skalabilitas dan sokongan silang platform, sesuai untuk keperluan pengurusan data, sementara bahasa lain mempunyai kelebihan dalam bidang masing-masing seperti analisis data, aplikasi perusahaan, dan pengaturcaraan sistem.

Kaedah pemasangan kerangka Laravel Kaedah pemasangan kerangka Laravel Apr 18, 2025 pm 12:54 PM

Ringkasan Artikel: Artikel ini menyediakan arahan langkah demi langkah terperinci untuk membimbing pembaca tentang cara memasang rangka kerja Laravel dengan mudah. Laravel adalah rangka kerja PHP yang kuat yang mempercepat proses pembangunan aplikasi web. Tutorial ini merangkumi proses pemasangan dari keperluan sistem untuk mengkonfigurasi pangkalan data dan menyediakan penghalaan. Dengan mengikuti langkah -langkah ini, pembaca dapat dengan cepat dan cekap meletakkan asas yang kukuh untuk projek Laravel mereka.

MySQL vs Pangkalan Data Lain: Membandingkan Pilihan MySQL vs Pangkalan Data Lain: Membandingkan Pilihan Apr 15, 2025 am 12:08 AM

MySQL sesuai untuk aplikasi web dan sistem pengurusan kandungan dan popular untuk sumber terbuka, prestasi tinggi dan kemudahan penggunaan. 1) Berbanding dengan PostgreSQL, MySQL melakukan lebih baik dalam pertanyaan mudah dan operasi membaca serentak yang tinggi. 2) Berbanding dengan Oracle, MySQL lebih popular di kalangan perusahaan kecil dan sederhana kerana sumber terbuka dan kos rendah. 3) Berbanding dengan Microsoft SQL Server, MySQL lebih sesuai untuk aplikasi silang platform. 4) Tidak seperti MongoDB, MySQL lebih sesuai untuk data berstruktur dan pemprosesan transaksi.

See all articles