Artikel ini memperkenalkan anda kepada pengetahuan yang berkaitan tentang MySQL read and write separation, saya harap ia akan membantu anda.
MySQL kini merupakan pangkalan data percuma yang paling banyak digunakan di dunia semua orang yang terlibat dalam operasi sistem Semua jurutera dari Weiwei mesti telah bersentuhan dengannya.
Dalam persekitaran pengeluaran sebenar, satu MySQL sebagai pangkalan data bebas sama sekali tidak dapat memenuhi keperluan sebenar, sama ada dari segi keselamatan, ketersediaan tinggi, keselarasan tinggi dan aspek lain.
Oleh itu, secara amnya, data disegerakkan melalui Replikasi Tuan-Hamba , dan kemudian melalui Baca dan tulis pemisahan (MySQL-Proxy/Amoeba) untuk meningkatkan kapasiti beban serentak pangkalan dataSebarkan dan laksana.
Prinsip asasnya ialah:
Pangkalan data utama mengendalikan operasi tambah, ubah suai dan padam transaksi (INSERT, UPDATE, DELETE)
Memproses operasi pertanyaan SELECT daripada pangkalan data
Replikasi pangkalan data digunakan untuk menyegerakkan perubahan yang disebabkan oleh operasi transaksi kepada pangkalan data hamba dalam kelompok.
Menghadapi tekanan akses yang semakin meningkat, prestasi pelayan tunggal telah menjadi hambatan, dan beban perlu dikongsi
Tuan dan hamba hanya bertanggungjawab untuk penulisan mereka sendiri dan membaca, sedikit sebanyak Meringankan kunci X (tulis) dan perbalahan kunci S (baca)
Enjin myisam boleh dikonfigurasikan daripada perpustakaan untuk meningkatkan prestasi pertanyaan dan menjimatkan overhed sistem
Tingkatkan lebihan dan tingkatkan ketersediaan
Pengasingan membaca dan menulis dilaksanakan di dalam aplikasi, dan ia boleh digunakan semasa pemasangan
Kurangkan kesukaran penggunaan tertentu
The tekanan capaian berada di bawah tahap tertentu dan prestasinya sangat baik
Setelah seni bina dilaraskan , kod mesti berubah dengan sewajarnya
Adalah sukar untuk melaksanakan aplikasi lanjutan, seperti pembahagian pangkalan data automatik dan pemisahan jadual
Tidak boleh digunakan pada senario aplikasi besar
Pelaksanaan lapisan middleware merujuk kepada pengasingan membaca dan menulis dalam program middleware luaran
program middleware biasa
Cobar:
Sistem pengedaran relasi yang dibangunkan oleh Alibaba B2B, menguruskan hampir 3,000 tika MySQL. Ia telah bertahan dengan ujian di Alibaba Kemudian, kerana pemergian penulis, kobar tidak lagi dikekalkan untuk menggantikan kobar.
MyCAT:
Peminat komuniti menjalankan pembangunan sekunder berdasarkan Alibaba cobar, menyelesaikan beberapa masalah yang dihadapi oleh cobar pada masa itu, dan menyertai Terdapat banyak ciri baru di dalamnya. Pada masa ini, komuniti MyCAT sangat aktif, dan beberapa syarikat sudah menggunakan MyCAT. Secara keseluruhan, sokongan adalah lebih tinggi daripada
, dan ia akan terus dikekalkan.
OneProxy:
Bos besar dalam industri pangkalan data, bekas pembangunan pembinaan ketua pasukan pangkalan data Alipay, berdasarkan idea proksi rasmi mysql menggunakan c untuk pembangunan Ya, OneProxy ialah perisian tengah berbayar komersil En. Lou telah mengetepikan beberapa perkara berfungsi dan menumpukan pada prestasi dan kestabilan. Seseorang telah menguji
dan berkata ia sangat stabil di bawah konkurensi yang tinggi.
Vitess:
Perisian tengah ini digunakan dalam pengeluaran Youtube, tetapi seni binanya sangat kompleks. Berbeza dengan middleware sebelum ini, perubahan aplikasi menggunakan Vitess agak besar Untuk menggunakan antara muka API bahasa yang dia sediakan, kita boleh belajar daripada beberapa idea reka bentuknya.
Kingshard:
Kingshard dibangunkan oleh Chen Fei, bekas ahli pasukan pembangunan middleware 360Atlas, menggunakan bahasa go pada masa lapangnya, pada masa ini, terdapat kira-kira 3 orang yang terlibat dalam pembangunan. ia bukan produk matang yang boleh digunakan ia perlu diperbaiki secara berterusan.
Atlas:
Pasukan 360 menulis semula lua dalam C berdasarkan proksi mysql. Versi asal menyokong pembahagian jadual, dan pangkalan data dan versi jadual yang dipecahkan telah dikeluarkan. Saya melihat beberapa rakan di Internet sering mengatakan bahawa ia sering digantung di bawah konkurensi tinggi Jika anda ingin menggunakannya, anda perlu mengujinya terlebih dahulu.
MaxScale dan Laluan MySQL:
Kedua-dua middleware ini dianggap rasmi MaxScale ialah versi yang diselenggara oleh mariadb (pengarang asal MySQL) . ), versi semasa tidak menyokong sub-pangkalan data dan jadual. Laluan MySQL ialah perisian tengah yang kini dikeluarkan oleh syarikat Oracle rasmi MySQL.
Kelebihan:
Reka bentuk seni bina yang lebih fleksibel
Boleh mencapai beberapa kawalan lanjutan pada program , seperti: pemisahan mendatar yang telus, failover dan pemantauan boleh bergantung pada cara teknikal untuk meningkatkan prestasi MySQL Ia mempunyai sedikit kesan pada kod perniagaan dan juga selamat
Kelemahan:
.Memerlukan sokongan pasukan pembangunan dan operasi tertentu.
Sumber terbuka sepenuhnya, berorientasikan perusahaan aplikasi Kluster pangkalan data besar yang dibangunkan
menyokong transaksi, ACID dan versi pangkalan data yang dipertingkat yang boleh menggantikan MySQL
Peringkat perusahaan pangkalan data yang boleh dianggap sebagai Pangkalan Data kluster MySQL, digunakan untuk menggantikan kluster Oracle yang mahal
Satu Pelayan SQL baharu yang menyepadukan teknologi caching memori, teknologi NoSQL dan data besar HDFS
gabungan Generasi baharu produk pangkalan data peringkat perusahaan untuk pangkalan data tradisional dan gudang data teragih baharu
Produk perisian tengah pangkalan data baharu
MyCat menyediakan pakej pemasangan tersusun, menyokong Windows, Linux , Mac, Solaris dan sistem lain Pasang dan jalankan
Laman utama muat turun rasmi http://www.mycat.org.cn/
MYCAT_HOME=/usr. /local/mycat PATH= $MYCAT_HOME/bin:$PATH
< ;!DOCTYPE mycat:schema SYSTEM "schema.dtd">
slavethreshold = "100 "& gt;
/heartbeat & gt;
& lt;/datahost & gt;
& lt;/mycat: skema & gt;
Paksa semua operasi baca dijalankan pada pelayan baca, dan hanya tukar ke pelayan tulis apabila data ditulis
Perhatikan bahawa pengguna mycat di sini mesti diberi kuasa pada pangkalan data master-slave 192.168.2.3 dan 2.5
BERIKAN SEMUA KEISTIMEWAAN PADA *.* KEPADA 'mycat'@' %' DIKENALPASTI OLEH '123456';
atau nyatakan segmen rangkaian
BERIKAN SEMUA KEISTIMEWAAN PADA *.* KEPADA 'mycat'@' 192.168.2. %' DIKENALPASTI OLEH '123456';
keistimewaan flush;
Jika ralat ini dilaporkan , pelayan berjalan seperti biasa , semak dahulu sama ada terdapat kebenaran
RALAT 1184 (HY000): Sumber Data Tidak Sah: 0
skema: perpustakaan logik, dan Pangkalan Data MySQL sepadan dengan Jadual yang disertakan dalam perpustakaan logik.
jadual: Jadual, iaitu jadual yang disimpan dalam pangkalan data fizikal Berbeza daripada pangkalan data tradisional, jadual di sini perlu mengisytiharkan nod data logik DataNode yang disimpannya jadual. Untuk mencapai ini melalui definisi peraturan, jadual boleh menentukan "jadual kanak-kanak" yang menjadi miliknya rekod dalam jadual induk Semua rekod subjadual A disimpan pada serpihan yang sama dengan A.
Peraturan pemecahan: Ia adalah takrifan gabungan medan dan fungsi Berdasarkan nilai medan ini, nombor jujukan serpihan yang disimpan (DataNode) dikembalikan Setiap jadual boleh mentakrifkan peraturan pemecahan peraturan boleh menjadi fleksibel Sambungan, menyediakan peraturan perpecahan berasaskan nombor, peraturan perpecahan rentetan, dsb. secara lalai.
dataNode: Nod data logik MyCAT ialah nod fizikal khusus yang menyimpan jadual Ia juga dipanggil nod serpihan Ia dikaitkan dengan pangkalan data belakang khusus melalui DataSource. Untuk ketersediaan tinggi, setiap DataNode dilengkapi dengan dua Sumber Data, satu induk dan satu hamba Apabila nod induk turun, sistem secara automatik beralih ke nod hamba.
dataHost: Tentukan alamat akses perpustakaan fizikal untuk mengikat dataNode.
MyCAT pada masa ini mentakrifkan pustaka logik dan konfigurasi yang berkaitan melalui fail konfigurasi:
MYCAT_HOME/conf/schema.xml mentakrifkan pustaka logik, jadual, nod serpihan, dsb.
MYCAT_HOME/conf Tentukan peraturan pemecahan dalam /rule.xml;
Tentukan pembolehubah berkaitan pengguna dan sistem, seperti port, dll. dalam MYCAT_HOME/conf/server.xml.
Nota:
Teg skema digunakan untuk mentakrifkan pustaka logik dalam contoh MyCat: diikuti dengan nama perpustakaan logik MyCat boleh mempunyai berbilang perpustakaan logik, dan setiap pustaka logiknya sendiri konfigurasi berkaitan. Anda boleh menggunakan tag skema untuk membahagikan perpustakaan logik yang berbeza ini.
Atribut checkSQLschema lalai kepada palsu Dokumen rasmi bermaksud sama ada untuk mengalih keluar nama pangkalan data di hadapan jadual, "pilih * daripada db1.testtable jika ditetapkan kepada benar, db1 akan dialih keluar. Tetapi jika nama db1 bukan nama skema
, ia tidak akan dialih keluar, jadi secara rasmi disyorkan untuk tidak menggunakan sintaks ini. Juga ditetapkan kepada palsu secara lalai.
sqlMaxLimit Apabila nilai ditetapkan kepada nombor tertentu. Untuk setiap pernyataan SQL yang dilaksanakan, jika tiada pernyataan had ditambahkan, MyCat akan menambah nilai yang sepadan secara automatik. Contohnya, jika anda menetapkan nilai kepada 100 dan melaksanakan "select * from test_table", kesannya akan menjadi
"selelct * from test_table had 100". Teg dataNode mentakrifkan nod data dalam MyCat, iaitu apa yang biasa kita panggil sebagai data. 🎜>
Atas ialah kandungan terperinci Mari kita bincangkan tentang pelaksanaan Mycat bagi pemisahan baca-tulis kelompok Mysql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!