Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk meningkatkan prestasi MySQL dengan menggunakan replikasi separa segerak
Dengan pembangunan Internet yang berterusan, pertumbuhan pesat volum data telah menjadikan pangkalan data menjadi komponen teras banyak laman web, aplikasi dan sistem. Sebagai sistem pengurusan pangkalan data hubungan sumber terbuka, kelebihan MySQL dalam kestabilan, kebolehpercayaan dan keberkesanan kos menjadikannya pangkalan data pilihan yang digunakan secara meluas dalam industri.
Walau bagaimanapun, dalam persekitaran pengeluaran sebenar, apabila jumlah data meningkat, masalah prestasi MySQL didedahkan secara beransur-ansur. Terutamanya dalam aplikasi perusahaan berskala besar, pembacaan dan penulisan data besar-besaran, permintaan serentak yang tinggi, dan kebolehpercayaan data semuanya meletakkan permintaan yang tinggi pada prestasi MySQL.
Untuk memenuhi keperluan ini, MySQL menyediakan fungsi replikasi separa segerak (Replikasi Separa Segerak, dirujuk sebagai Separuh Penyegerakan) Dengan menggunakan replikasi separa segerak, prestasi dan kebolehpercayaan MySQL boleh bertambah baik. Artikel ini akan memperkenalkan prinsip, kelebihan dan penggunaan replikasi separa segerak.
1. Prinsip replikasi separa segerak
Replikasi MySQL merujuk kepada proses penyegerakan data daripada satu instance MySQL (Master) kepada instance MySQL yang lain (Slave). Apabila transaksi dilaksanakan pada Master, ia akan ditulis ke binlog Master dan dihantar kepada Slave melalui rangkaian untuk pelaksanaan.
Replikasi separa segerak adalah berdasarkan replikasi tak segerak biasa dan menambah proses pengesahan segerak tambahan. Apabila transaksi dilaksanakan pada Master dan berjaya ditulis ke binlog Master, Master akan menunggu sekurang-kurangnya seorang Slave untuk mengesahkan bahawa transaksi telah berjaya ditulis pada log relay yang sepadan. Hanya selepas menerima pengesahan daripada sekurang-kurangnya seorang Hamba, Tuan akan menganggap bahawa transaksi telah berjaya disalin kepada Hamba, dan kemudian memberitahu pelanggan bahawa transaksi itu telah diserahkan.
Dalam replikasi separa segerak, Master dan Slave berinteraksi melalui rangkaian. Apabila urus niaga pada Master selesai, Master akan menghantar permintaan pengesahan transaksi kepada semua Hamba yang disambungkan dan menunggu sekurang-kurangnya seorang Hamba membalas permintaan tersebut Jika masa menunggu melebihi tamat masa yang ditetapkan, Master akan berhenti menunggu.
2. Kelebihan replikasi separa segerak
Berbanding dengan replikasi tak segerak biasa, replikasi separa segerak mempunyai kelebihan berikut:
Dalam replikasi asynchronous biasa, memandangkan Slave melaksanakan transaksi pada Master secara tak segerak, mungkin terdapat kehilangan data. Sebagai contoh, apabila Master sedang menulis transaksi, Master ranap atau keadaan abnormal lain menyebabkan transaksi tidak ditulis ke binlog Pada masa ini, walaupun urus niaga dilaksanakan, binlog urus niaga tidak wujud pada Hamba yang mengakibatkan kehilangan data.
Dalam replikasi separa segerak, selepas menerima permintaan pengesahan urus niaga daripada Guru, Hamba akan segera menulis transaksi ke log gegantinya sendiri. Hanya apabila hamba berjaya menulis, tuan akan menganggap bahawa transaksi telah berjaya disalin kepada hamba, dengan itu memastikan kebolehpercayaan data.
Dalam replikasi tak segerak biasa, disebabkan kelewatan penghantaran data tak segerak antara Tuan dan Hamba, dan masa kelewatan setiap Hamba boleh adalah berbeza, jadi data yang dibaca pada Hamba mungkin sudah lapuk.
Dalam replikasi separa segerak, apabila Guru menerima respons daripada sekurang-kurangnya seorang Hamba, ia akan menganggap bahawa transaksi telah disalin kepada Hamba dan diserahkan pada masa ini, membaca data pada Hamba adalah lebih dipercayai, sekali gus mempertingkatkan prestasi bacaan.
Replikasi separa segerak boleh meningkatkan keupayaan pengimbangan beban. Dalam replikasi separa segerak, disebabkan oleh strategi pemisahan baca-tulis, beberapa permintaan hanya perlu dilakukan pada Hamba, yang mengurangkan operasi membaca Guru, sekali gus mengurangkan beban bacaan Guru dengan banyak. Pada masa yang sama, apabila Master melakukan operasi tulis dan menunggu respons daripada sekurang-kurangnya satu Slave, rangkaian IO boleh digunakan, yang bermaksud sumber rangkaian digunakan sepenuhnya.
3. Cara menggunakan replikasi separa segerak
Replikasi separa segerak tersedia bermula dari MySQL 5.5.9 dan memerlukan konfigurasi yang sepadan pada Master dan Slave. Berikut ialah kaedah konfigurasi khusus.
Konfigurasi pada Master:
mysql> SET GLOBAL rpl_semi_sync_master_enabled = 1;
mysql> SET GLOBAL rpl_semi_sync_master_wait_for_slave_count = 1;
Konfigurasi pada Hamba:
mysql> SET GLOBAL rpl_semi_sync_slave_enabled = ON;
mysql> CHANGE MASTER TO MASTER_HOST='xxxx', MASTER_PORT=3306, MASTER_USER='user', MASTER_PASSWORD='password', MASTER_USE_SEMI_SYNC = SLAVE;
Anda perlu menggantikan "xxxx", "pengguna" dan "kata laluan" dengan alamat IP, nama pengguna dan kata laluan Master sebenar.
Selepas konfigurasi selesai, anda boleh menyemak status replikasi separa segerak melalui arahan berikut:
mysql> SHOW GLOBAL STATUS LIKE 'Rpl_semi%';
Antaranya, nilai Rpl_semi_sync_master_status adalah HIDUP, bermakna Master telah menghidupkan fungsi replikasi separa segerak, dan nilai Rpl_semi_sync_slave_status Jika HIDUP, ini bermakna Hamba telah menghidupkan fungsi replikasi separa segerak.
4
Dengan menggunakan replikasi separa segerak, prestasi dan kebolehpercayaan MySQL boleh dipertingkatkan. Oleh itu, dalam persekitaran pengeluaran sebenar, kita harus menggunakan teknologi replikasi separa segerak sebanyak mungkin untuk memastikan kebolehpercayaan data dan meningkatkan prestasi baca dan tulis MySQL. Pada masa yang sama, apabila menggunakan teknologi replikasi separa segerak, anda juga perlu memberi perhatian kepada butiran fail konfigurasi untuk memastikan ketepatannya.
Atas ialah kandungan terperinci Bagaimana untuk meningkatkan prestasi MySQL dengan menggunakan replikasi separa segerak. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!