Artikel ini membawa anda pengetahuan yang berkaitan tentang mysql, yang terutamanya memperkenalkan isu yang berkaitan dengan seni bina replikasi, termasuk seni bina replikasi tuan-hamba, seni bina replikasi lata dan replikasi berbilang tuan-hamba seni bina, dsb., saya harap ia akan membantu semua orang.
Pembelajaran yang disyorkan: tutorial video mysql
Dalam senario aplikasi sebenar , Lebih daripada 90% replikasi MySQL ialah model seni bina di mana satu Master mereplikasi kepada satu atau lebih Hamba.
Dalam senario di mana tekanan permintaan baca perpustakaan utama sangat tinggi, anda boleh mengkonfigurasi seni bina replikasi berbilang hamba satu induk untuk mencapai pemisahan baca-tulis dan memisahkan sejumlah besar data yang tidak mempunyai keperluan masa nyata yang sangat tinggi diedarkan kepada berbilang perpustakaan hamba melalui pengimbangan beban (permintaan baca dengan keperluan masa nyata yang tinggi boleh dibaca dari perpustakaan induk), mengurangkan tekanan bacaan pada perpustakaan induk. , seperti yang ditunjukkan dalam rajah di bawah.
Kelemahan:
Oleh kerana tuan perlu ditutup untuk penyelenggaraan rutin, adalah perlu untuk menukar hamba kepada tuan yang mana satu untuk dipilih?
Apabila hamba menjadi tuan, akan terdapat ketidakkonsistenan antara data tuan semasa dan tuan sebelumnya, dan tuan sebelumnya tidak menyimpan fail binlog dan lokasi pos nod tuan semasa.
Seni bina replikasi berbilang induk menyelesaikan masalah satu titik kegagalan induk dalam seni bina replikasi berbilang hamba induk tunggal.
Anda boleh menggunakan alat pihak ketiga, seperti keepalived, untuk mencapai drift IP dengan mudah, supaya penyelenggaraan penutupan induk tidak akan menjejaskan operasi tulis.
Satu tuan dan banyak hamba, tekanan I/O dan tekanan rangkaian perpustakaan induk akan meningkat dengan peningkatan perpustakaan hamba, kerana. setiap Pustaka hamba akan mempunyai benang Dump BINLOG bebas pada perpustakaan induk untuk menghantar acara, dan seni bina replikasi lata menyelesaikan tekanan I/O dan rangkaian tambahan pada perpustakaan induk dalam master-multiple-slave senario.
Seperti yang ditunjukkan dalam gambar di bawah.
Berbanding dengan seni bina satu induk-berbilang-hamba, replikasi lata hanya menyalin daripada pangkalan data induk kepada sebilangan kecil pangkalan data hamba dan pangkalan data hamba lain disalin daripada sebilangan kecil pangkalan data hamba ini Salin data, dengan itu mengurangkan tekanan pada Master pangkalan data utama.
Sudah tentu, terdapat juga kelemahan: Replikasi tradisional MySQL adalah tidak segerak Dalam senario replikasi lata, data dalam pangkalan data induk perlu menjalani dua replikasi sebelum mencapai pangkalan data hamba yang lain dengan senario replikasi satu induk dan berbilang hamba Ia adalah masalah besar jika ia hanya melalui satu salinan pada masa akan datang.
Anda boleh mengurangkan kependaman replikasi lata dengan memilih enjin meja sebagai LUBANG HITAM pada hamba sekunder. Seperti namanya, enjin BLACKHOLE ialah enjin "lubang hitam" Data yang ditulis pada jadual BLACKHOLE tidak akan ditulis pada cakera Jadual BLACKHOLE sentiasa merupakan jadual kosong, hanya merekodkan peristiwa dalam BINLOG.
Berikut menunjukkan enjin BLACKHOLE:
1 2 3 4 5 |
|
Seperti yang anda lihat, tiada data dalam jadual pengguna yang enjin storannya ialah BLACKHOLE.
Gabungan seni bina replikasi berbilang induk dan lata, ini menyelesaikan masalah induk satu titik dan menyelesaikan masalah kelewatan lata hamba.
Perancangan hos:
Configuration file my.cnf:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
Mulakan docker:
1 |
|
Tambah pengguna untuk replikasi dan kebenaran:
1 2 3 4 5 |
|
Dayakan penyegerakan master1 (pengguna di sini berasal daripada master2):
1 2 3 4 5 |
|
master2 The konfigurasi adalah serupa dengan master1.
Perbezaan utama ialah terdapat atribut dalam my.cnf yang perlu tidak konsisten:
1 |
|
Ujian:
Buat jadual dalam master2 dan tambah data :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
Anda boleh mendapati bahawa saiz langkah id dalam master2 ialah 2, dan ia mula meningkat daripada 2.
Kemudian tanya data dalam master1 dan tambah:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
Anda boleh mendapati bahawa saiz langkah id dalam master1 ialah 2, dan ia mula meningkat daripada 1. Kemudian tanya dalam master2 dan anda boleh mencari id Data 5 menunjukkan bahawa tiada masalah dengan konfigurasi replikasi master-master.
Mengapakah offset kenaikan id dalam dua induk tidak konsisten? Apabila kedua-dua induk menerima permintaan sisipan pada masa yang sama, ia boleh memastikan bahawa ID tidak bercanggah Malah, ini hanya dapat memastikan bahawa data yang dimasukkan tidak bercanggah, tetapi tidak dapat menjamin ketidakkonsistenan data yang disebabkan oleh pemadaman dan pengubahsuaian.
Jadi dalam senario aplikasi sebenar, hanya satu induk boleh didedahkan kepada pelanggan untuk memastikan ketekalan data.
这里借助keepalived来对上面的多主复制架构改造来实现MySQL的高可用。
keepalived的安装:
1 |
|
keepalived.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
/etc/keepalived/chkmysql.sh
1 2 3 4 5 |
|
推荐学习:mysql视频教程
Atas ialah kandungan terperinci Penguasaan lengkap seni bina replikasi MySQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!