Rumah >pangkalan data >tutorial mysql >apakah fabrik mysql

apakah fabrik mysql

青灯夜游
青灯夜游asal
2023-04-03 15:43:191784semak imbas

MySQL Fabric ialah rangka kerja yang boleh diperluaskan untuk mengurus kumpulan pelayan MySQL Ia adalah perisian sumber terbuka GPL iaitu, pengguna boleh menggunakan dan mengubah suai perisian ini secara bebas mengikut spesifikasi GPL. fabrik mysql ialah proses yang mengendalikan sebarang permintaan pengurusan apabila menggunakan ciri HA, anda boleh membuat proses ini bertanggungjawab untuk memantau pelayan induk dan, sekiranya berlaku kegagalan, memulakan failover dan menaik taraf pelayan hamba kepada pelayan induk.

apakah fabrik mysql

Persekitaran pengendalian tutorial ini: sistem windows7, versi mysql8, komputer Dell G3.

Pengenalan Fabric MySQL

MySQL Fabric ialah rangka kerja yang boleh diperluas untuk mengurus ladang pelayan MySQL.

MySQL Fabric boleh "menyusun" berbilang pangkalan data MySQL Sistem aplikasi mengedarkan jadual yang lebih besar daripada beberapa TB kepada berbilang pangkalan data, iaitu Data Shard. Shard yang sama boleh mengandungi berbilang pangkalan data, dan Fabric secara automatik memilih yang sesuai sebagai pangkalan data induk, dan pangkalan data lain dikonfigurasikan sebagai pangkalan data hamba untuk replikasi induk-hamba. Apabila pangkalan data induk ditutup, salah satu pangkalan data hamba dipilih untuk dinaikkan pangkat ke pangkalan data induk. Selepas itu, pangkalan data hamba lain dipindahkan ke pangkalan data utama baharu untuk menyalin data baharu. Nota: "automatik" yang disebut di sini bermakna MySQL Fabric melengkapkannya di latar belakang tanpa memerlukan pengguna menukar konfigurasi secara manual. Perkara yang paling penting ialah MySQL Fabric ialah perisian sumber terbuka GPL, yang bermaksud anda boleh menggunakan dan mengubah suai perisian ini secara bebas di bawah spesifikasi GPL.

Rangka kerja Fabrik melaksanakan dua ciri: ketersediaan tinggi (ketersediaan tinggi) dan pengembangan mendatar (sharding) menggunakan pemecahan data Kedua-dua ciri ini boleh digunakan secara bersendirian atau digabungkan.

Kedua-dua ciri dilaksanakan berdasarkan dua peringkat berikut:

fabrik mysql ialah proses yang mengendalikan sebarang permintaan pengurusan. Apabila menggunakan ciri HA, anda juga boleh membiarkan proses ini memantau pelayan induk dan memulakan failover apabila kegagalan berlaku, menaik taraf pelayan hamba kepada pelayan induk. Penyambung MySQL Fabric-aware menyimpan maklumat penghalaan yang diperoleh daripada MySQL Fabric dalam cache dan kemudian menggunakan maklumat ini untuk menghantar transaksi atau pertanyaan ke pelayan MySQL yang betul.

Ketersediaan Tinggi

Kumpulan HA terdiri daripada dua atau lebih pelayan MySQL pada bila-bila masa, salah satu pelayan berfungsi sebagai pelayan induk (master MySQL fungsi replikasi), dan pelayan lain berfungsi sebagai pelayan hamba (pelayan hamba untuk fungsi replikasi MySQL). Peranan kumpulan HA adalah untuk memastikan bahawa data yang disimpan dalam kumpulan sentiasa boleh diakses. Fungsi replikasi MySQL memastikan keselamatan data melalui replikasi, dan penyelesaian ketersediaan tinggi MySQL Fabric menyediakan dua elemen tambahan penting atas dasar ini:

Pengesanan dan naik taraf kerosakan—Pemantauan Fabrik MySQL Kumpulan HA Pelayan induk dalam pelayan induk, dalam peristiwa kegagalan pelayan induk, memilih pelayan hamba dan mempromosikannya ke pelayan induk Penghalaan permintaan pangkalan data - operasi penghalaan permintaan tulis ke pelayan induk dan pengimbangan beban permintaan baca antara pelayan hamba Telus kepada aplikasi, walaupun apabila topologi berubah semasa failover

Sharding — skala kecilkan

apabila dekat dengan pelayan MySQL (atau kumpulan HA) Apabila had prestasi kapasiti atau penulisan dicapai, MySQL Fabric menyokong penskalaan mendatar pelayan pangkalan data dengan membahagikan data merentas berbilang pelayan MySQL "kumpulan." Ambil perhatian bahawa kumpulan boleh mengandungi hanya satu pelayan MySQL, atau ia boleh menjadi kumpulan HA. Pentadbir mentakrifkan cara data dipecahkan di antara pelayan ini dengan menyatakan lajur jadual yang harus digunakan sebagai kunci pemecahan, dan sama ada hendak menggunakan pemetaan HASH atau pemetaan RANGE untuk memetakan kunci ini kepada serpihan yang betul, jika serpihan selanjutnya diperlukan serpihan sedia ada; selain itu, serpihan boleh diagihkan semula.

Masalah yang perlu diselesaikan oleh MySQL Fabric

Mengapa anda melakukan perkongsian data? Data Shard selalunya diperlukan apabila aplikasi anda perlu memproses jadual yang lebih besar daripada 1TB data. Meja besar seperti itu akan menyebabkan tidak kira kecekapan pertanyaan atau pengemaskinian, atau masa yang diperlukan untuk membuat sandaran atau menukar struktur > Soalan besar. Walau bagaimanapun, apabila anda menyebarkan jadual yang begitu besar merentasi berbilang pelayan pangkalan data, setiap pelayan pangkalan data mungkin satu titik kegagalan. Selagi satu menutup telefon, ia akan menyebabkan masalah dalam operasi keseluruhan sistem . Sebaliknya, program sebelah aplikasi juga akan keliru kerana setiap pertanyaan mesti menunjuk ke pangkalan data yang berbeza mengikut syarat pertanyaannya (kandungan di mana klausa) menjadi lebih kompleks. Tambahan pula, apabila struktur pemecahan data berubah (contohnya, menambah pangkalan data), semua program di bahagian aplikasi mesti diubah suai, menghasilkan Penyelenggaraan menjadi sangat kompleks.

Untuk menyelesaikan masalah peningkatan kerumitan aplikasi, seseorang menambah proksi antara aplikasi dan pelayan pangkalan data (proksi) atau menjadi suis, aplikasi memiliki Arahan untuk pangkalan data mula-mula dihantar kepada proksi, dan kemudian proksi menentukan pangkalan data yang hendak dipindahkan ke . Gambar di bawah ialah gambarajah skematik pelan ini. Ini mungkin menyelesaikan masalah aplikasi sukar diselenggara, tetapi apabila bilangan aplikasi meningkat, pemecahan pangkalan data meningkat atau tekanan sistem meningkat , suis ini akan menjadi kapasiti dan prestasi kesesakan dan satu titik kegagalan (apabila ia turun, aplikasi tidak dapat mencari pangkalan data ), dan semua arahan pangkalan data perlu dihantar Dua kali (pertama bertukar dan kemudian ke pangkalan data). Setiap pertanyaan mencipta beban tambahan.

apakah fabrik mysql

Seni bina Fabrik MySQL

MySQL Fabric menggunakan pendekatan yang berbeza, dan seni binanya ditunjukkan dalam rajah di bawah. Ciri utama adalah untuk menggabungkan suis ke dalam penyambung pada setiap bahagian aplikasi untuk menyelesaikan satu titik kegagalan dan kesesakan prestasi bagi satu suis.

apakah fabrik mysql

Fabrik MySQL terdiri daripada tiga bahagian:

1.Fabrik MySQL nod pengurusan:

ialah skrip python dan merupakan teras kepada keseluruhan seni bina.

Fungsi utama nod pengurusan Fabric MySQL adalah untuk menguruskan keseluruhan Ladang Pelayan Pangkalan Data Apabila ia bermula, ia akan mencari fail konfigurasi /etc/mysql/fabric.cnf, dan gunakannya untuk Menentukan lokasi pangkalan data MySQL, port, akaun sambungan dan maklumat lain di sebalik fabrik sebagai repositori yang menyimpan seni bina dan konfigurasi Ladang Pelayan.

Apabila Fabric dimulakan (laksanakan perintah persediaan mysqlfabric manage), ia akan membuka skema pada pangkalan data MySQL (biasanya pangkalan data bernama fabric) untuk menyimpan maklumat konfigurasi Server Farm , kumpulan pelayan mana yang terdiri daripada pangkalan data, pelayan induk dan hamba mana yang ada dalam setiap kumpulan pelayan, dsb.

Apabila menyediakan konfigurasi, nod Fabric MySQL akan mengeluarkan arahan untuk mewujudkan replikasi induk-hamba bagi setiap pangkalan data dalam Ladang Pelayan (garisan merah dalam rajah di atas).

Selalu ping pelayan utama setiap kumpulan semasa operasi biasa Apabila didapati bahawa pangkalan data utama tidak berjalan seperti biasa, ia akan memulakan program failover dan mencari pangkalan data hamba dalam. Ladang pelayan. Pangkalan data hamba lain akan beralih kepada pangkalan data induk baharu untuk meneruskan replikasi data.

2. Ladang pelayan pangkalan data

Ini adalah enjin yang berfungsi dalam keseluruhan seni bina Dalam aplikasi pangkalan data tradisional, ini adalah MySQL tunggal pangkalan data, manakala MySQL Fabric menggunakan pelbagai pangkalan data untuk menyokong keperluan skala data yang besar (terabait atau lebih) dan pangkalan data ketersediaan tinggi. Pangkalan data ini dibahagikan kepada beberapa kumpulan ketersediaan tinggi (Kumpulan HA), setiap kumpulan mengandungi lebih daripada satu pelayan pangkalan data. Jika terdapat beberapa pangkalan data dalam kumpulan ketersediaan tinggi, MySQL Fabric akan memilih (menggunakan perintah mysqlfabric group promote command) untuk mempromosikan satu kepada pangkalan data induk (Master), dan pangkalan data lain akan menjadi pangkalan data hamba (Slave). akan menyalin perubahan pangkalan data induk dan menyiapkan replikasi induk-hamba dalam kumpulan ketersediaan tinggi yang sama. Pada masa hadapan, Fabric akan mengakses pangkalan data utama ini secara berkala. Apabila data utama turun, Fabric akan memilih satu daripada kumpulan ketersediaan tinggi dan mempromosikannya kepada pangkalan data utama, dan pangkalan data lain akan beralih kepada pangkalan data utama baharu ini untuk meneruskan replikasi.

Sebaliknya, MySQL Fabric hanya akan menggunakan penyambung pada bahagian aplikasi untuk memisahkan pembacaan dan penulisan pangkalan data master-slave ini Apabila aplikasi melakukan kedua-dua operasi baca dan tulis pada pangkalan data, penyambung akan menyerahkan arahan kepada pangkalan data. Jika aplikasi hanya menjalankan operasi baca pada pangkalan data, dan parameter baca_sahaja sambungan ditetapkan kepada "HIDUP", semua pertanyaan akan dihantar ke pangkalan data ini secara bergilir-gilir. Dengan pengasingan membaca dan menulis, keupayaan pemprosesan data sistem aplikasi dapat ditingkatkan. Di samping itu, seperti yang dinyatakan sebelum ini, MySQL Fabric juga boleh mengendalikan jadual (jadual sharding) yang perlu dibahagikan kepada beberapa pelayan pangkalan data Setiap kumpulan ketersediaan tinggi boleh menyimpan sebahagian daripada data jadual shard. Penyambung di bahagian aplikasi akan menghantar arahan untuk jadual shard kepada kumpulan ketersediaan tinggi yang berbeza mengikut tetapan nod pengurusan Fabric MySQL Ini membolehkan kapasiti pangkalan data berkembang apabila bilangan kumpulan ketersediaan tinggi meningkat. Pada masa yang sama, arahan dan semua DDL yang dikeluarkan untuk jadual tidak berpecah akan dihantar oleh penyambung ke global kumpulan ketersediaan tinggi (kumpulan global ). kumpulan ketersediaan tinggi global ialah MySQL Fabric disediakan sebagai pangkalan data utama untuk kumpulan ketersediaan tinggi yang lain. Pangkalan data utama semua kumpulan ketersediaan tinggi yang menyimpan jadual berpecah mereplikasi perubahan dalam kumpulan global, supaya kumpulan ketersediaan tinggi yang lain mempunyai salinan data jadual tidak berpecah. Ini menjadikan operasi JOIN bagi jadual berpecah pada jadual tidak berpecah dalam SQL lebih mudah.

3. Penyambung

Apabila sistem aplikasi berjalan, setiap arahan SQL akan dihantar ke pangkalan data melalui penyambung. Penyambung yang dilengkapi MySQL Fabric adalah sama seperti pangkalan data MySQL yang berdiri sendiri secara umum, kecuali versi penyambung yang lebih baharu ialah penyambung sedar fabrik, yang mempunyai lebih banyak fungsi yang boleh mengendalikan ladang pelayan pangkalan data. Ini membolehkan mereka menyemak konfigurasi ladang pelayan dalam nod pengurusan MySQL Fabric menggunakan protokol XML-RPC apabila membuat sambungan pangkalan data, dan kemudian pertanyaan di bawah sambungan boleh dihantar ke pangkalan data yang sesuai mengikut arahan fabrik .

Dengan cara ini, proksi yang mungkin menyebabkan kesesakan prestasi dalam penyelesaian serpihan pangkalan data biasa diletakkan dalam penyambung, sekali gus menyelesaikan masalah ini. Teknologi yang kini disokong oleh MySQL Fabric termasuk java, python dan PHP, iaitu Connector/J, Connector/Python dan Connector/PHP semuanya sedar Fabric.

Ambil java sebagai contoh Pemacu JDBC mestilah Connector/J 5.1.30 atau lebih baru Program Java Fabric adalah serupa dengan program Java umum untuk menanyakan MySQL yang berdiri sendiri ia hanya mewujudkan Apabila objek sambungan pangkalan data digunakan, URL sambungan pangkalan data tidak menghala ke pangkalan data, tetapi ke nod pengurusan Fabric MySQL (IP dan port pelayan biasanya 32274).

Apabila jadual yang ditanya ialah jadual global (tanpa serpihan jadual) atau DDL (seperti mencipta jadual atau menukar struktur jadual), ''fabricServerGroup=" mesti ditambah semasa membuat objek sambungan., arahan SQL yang dikeluarkan melalui objek sambungan ini akan dihantar ke pangkalan data utama Kumpulan Global, dan kemudian pangkalan data akan disalin ke kumpulan ketersediaan tinggi yang lain (serpihan)

Jika SQL. Jadual yang akan dikendalikan oleh arahan ialah jadual serpihan Apabila membuat objek sambungan, anda mesti menambah parameter ''fabricShardTable=" kepada parameter. Kemudian arahan SQL yang dikeluarkan melalui objek sambungan ini akan. ditetapkan mengikut MySQL Fabric Prinsip jadual (shard) dihantar ke kumpulan ketersediaan tinggi setiap partition (shard).

Dengan cara ini, apabila program aplikasi mengeluarkan arahan SQL di bawah jadual shard ini, ia tidak perlu menentukan pangkalan data yang hendak dihantar dalam SQL ditentukan sepenuhnya oleh penyambung. Ia ditentukan oleh maklumat konfigurasi ladang pelayan (pangkalan data mana yang dimiliki oleh kumpulan serpihan, prinsip pemisahan setiap jadual serpihan, dll.) yang terdapat dalam Fabrik MySQL semasa membuat sambungan pangkalan data. Dan konfigurasi ini dicache pada bahagian aplikasi di mana Penyambung terletak selepas sambungan utama diwujudkan.

Dengan cara ini, tidak perlu berulang kali menanyakan nod pengurusan Fabric MySQL setiap kali arahan SQL dikeluarkan dan konfigurasi sharding yang bergantung pada sebelah aplikasi dihantar terus ke pangkalan data yang betul. Kecekapan aplikasi tidak akan dikurangkan dalam apa jua cara kerana pemisahan meja.

[Cadangan berkaitan: tutorial video mysql]

Atas ialah kandungan terperinci apakah fabrik mysql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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
Artikel sebelumnya:Apakah mysql binlogArtikel seterusnya:Apakah mysql binlog