Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Kaedah PHP untuk melaksanakan fail replikasi master-hamba pangkalan data

Kaedah PHP untuk melaksanakan fail replikasi master-hamba pangkalan data

WBOY
WBOYasal
2023-05-15 19:42:09641semak imbas

Dengan perkembangan pesat Internet, pangkalan data, sebagai bahagian penting dalam storan data bahagian belakang, adalah penting untuk ketersediaan tinggi dan pengoptimuman prestasi tapak web. Antaranya, replikasi tuan-hamba ialah penyelesaian ketersediaan tinggi pangkalan data yang biasa digunakan, yang boleh meningkatkan kestabilan dan ketersediaan sistem tanpa menjejaskan perkhidmatan.

Artikel ini terutamanya memperkenalkan cara menggunakan PHP untuk melaksanakan replikasi dan failover master-slave.

1. Prinsip asas replikasi tuan-hamba

Replikasi tuan-hamba merujuk kepada penyegerakan semua data pada pangkalan data induk kepada beberapa pangkalan data hamba. Pangkalan data induk boleh membaca dan menulis data, manakala pangkalan data hamba hanya boleh melaksanakan operasi baca, dan data dalam pangkalan data hamba sepenuhnya konsisten dengan pangkalan data induk. Replikasi master-slave biasanya menggunakan replikasi tak segerak Selepas data pada pangkalan data induk berubah, log data yang baru ditambah akan direkodkan, dan kemudian benang hamba MySQL akan membaca log kemas kini dan menggunakannya pada pangkalan data hamba.

Dalam seni bina replikasi tuan-hamba, kami biasanya menggunakan perpustakaan induk sebagai pelayan tulis dan perpustakaan hamba sebagai pelayan baca. Oleh kerana operasi tulis biasanya menggunakan lebih banyak sumber daripada operasi baca, operasi tulis diletakkan pada perpustakaan utama untuk mencapai pengasingan membaca dan menulis, yang mengurangkan tekanan pada perpustakaan utama dan meningkatkan prestasi perpustakaan utama.

2. PHP melaksanakan replikasi master-slave

1 Konfigurasikan replikasi master-slave

Dalam MySQL, kita boleh mencapai replikasi master-slave dengan mengkonfigurasi fail my.cnf . Langkah konfigurasi khusus adalah seperti berikut:

1) Konfigurasikan pelayan utama

[mysqld]

log-bin=mysql-bin #Dayakan fungsi log binari dan dayakan replikasi tuan-hamba

server-id=1 #Konfigurasikan nombor unik untuk memastikan nombor setiap pelayan tidak berulang

2) Konfigurasi pelayan hamba

[ mysqld]

server-id=2 #Konfigurasikan nombor unik untuk memastikan nombor setiap pelayan tidak berulang

relay-log=mysql-relay-bin #Konfigurasikan fail log geganti , digunakan untuk menyalin data pustaka utama daripada pustaka

read_only=1 #Melarang operasi penulisan daripada pustaka hamba

2. Sambungkan pustaka tuan-hamba melalui PHP

Menyambung perpustakaan tuan-hamba dalam PHP sebenarnya tidak sama dengan menyambung ke pangkalan data tunggal Alangkah bezanya. Kami hanya perlu menentukan pangkalan data yang hendak digunakan semasa menyambung ke pangkalan data.

Apabila melakukan operasi baca, gunakan pustaka hamba untuk operasi, dan apabila melakukan operasi tulis, gunakan pustaka induk untuk operasi. Kod khusus adalah seperti berikut:

//Sambung ke perpustakaan utama

$main_db = mysqli_connect("localhost", "root", "123456", "main_db");

/ /Sambung ke perpustakaan hamba

$slave_db = mysqli_connect("localhost", "root", "654321", "slave_db");

//Baca data daripada perpustakaan hamba

$result = mysqli_query($slave_db, "SELECT * FROM user");

//Tulis data ke pangkalan data utama

mysqli_query($main_db, "INSERT INTO user(name, age) VALUES('tom', '25')");

3. Pelaksanaan failover

Apabila kegagalan yang tidak dijangka berlaku dalam pangkalan data utama, ia. perlu ditukar kepada pangkalan data sekunder untuk penyediaan perkhidmatan. Proses failover memerlukan langkah berikut:

1 Beralih dari perpustakaan hamba ke perpustakaan utama

Apabila perpustakaan utama tidak dapat menyediakan perkhidmatan, kita perlu menukar dari perpustakaan hamba kepada utama. perpustakaan untuk menjadikannya Mengambil alih perkhidmatan perpustakaan utama. Langkah-langkah khusus adalah seperti berikut:

1) Jalankan arahan dalam pustaka hamba: STOP SLAVE;

2) Salin data dari perpustakaan hamba ke perpustakaan utama.

3) Ubah suai server-id dalam pustaka hamba kepada 1, dan ubah suai log-bin dan pembolehubah log geganti dalam fail my.cnf. Dengan cara ini, pangkalan data hamba menjadi pangkalan data induk dan mula menyediakan perkhidmatan.

2 Ubah suai konfigurasi dalam aplikasi

Apabila pustaka utama gagal, anda perlu mengubah suai maklumat konfigurasi dalam aplikasi supaya ia boleh bertukar kepada pustaka utama baharu untuk menyediakan perkhidmatan .

3. Beralih selepas pemulihan kegagalan

Apabila pangkalan data utama menyambung semula perkhidmatan, adalah perlu untuk memulihkan pangkalan data utama ke pangkalan data utama dan menukar pangkalan data hamba sebelumnya kepada pangkalan data hamba untuk sandaran. Langkah-langkah khusus adalah seperti berikut:

1) Jalankan arahan: STOP SLAVE dalam pustaka hamba untuk menghentikan proses salinan dari perpustakaan hamba.

2) Segerakkan data terkini ke pangkalan data utama.

3) Jalankan arahan dalam perpustakaan utama: TUKAR MASTER KEPADA MASTER_HOST='127.0.0.1', MASTER_USER='root', MASTER_PASSWORD='xxxx', MASTER_LOG_FILE='mysql-bin.000001_POS, MASTER_LOG = 156, perubahan daripada perpustakaan hamba kepada perpustakaan induk.

Dengan cara ini, selepas kerosakan dipulihkan, hubungan antara perpustakaan tuan dan hamba diwujudkan semula dan memasuki status kerja biasa.

4. Ringkasan

Melaksanakan fail replikasi master-slave melalui PHP boleh meningkatkan kebolehpercayaan dan ketersediaan sistem, di samping mengurangkan tekanan aplikasi dan meningkatkan prestasi keseluruhan sistem. Dalam amalan, perhatian perlu diberikan kepada proses failover dan konfigurasi aplikasi untuk memastikan keseluruhan proses pertukaran berjalan lancar dan pemulihan data dan pemulihan keseluruhan kegagalan sistem diselesaikan dalam masa yang sesingkat mungkin.

Atas ialah kandungan terperinci Kaedah PHP untuk melaksanakan fail replikasi master-hamba pangkalan data. 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