Rumah >pembangunan bahagian belakang >tutorial php >Penyelesaian pemisahan membaca dan menulis pangkalan data: aplikasi dalam pengaturcaraan PHP
Penyelesaian pemisahan baca-tulis pangkalan data: Aplikasi dalam pengaturcaraan PHP
Dalam proses pembangunan aplikasi web, pangkalan data digunakan untuk menyimpan pelbagai data dan maklumat aplikasi, jadi kestabilan dan kebolehpercayaannya adalah penting. Banyak aplikasi web yang besar dan trafik tinggi menghadapi prestasi pangkalan data dan cabaran kebolehpercayaan. Untuk tujuan ini, skim pemisahan baca-tulis pangkalan data telah diperkenalkan untuk menangani cabaran ini. Artikel ini akan meneroka cara menggunakan skema pemisahan baca-tulis pangkalan data dalam pengaturcaraan PHP untuk meningkatkan prestasi dan kebolehpercayaan aplikasi.
Pengasingan baca dan tulis pangkalan data merujuk kepada membahagikan pelayan pangkalan data kepada dua bahagian: satu bahagian dikhususkan untuk memproses permintaan baca , dan bahagian lain Secara khusus mengendalikan permintaan tulis. Tujuannya adalah untuk meningkatkan kecekapan capaian dan prestasi pangkalan data dan mengurangkan tekanan pada pelayan pangkalan data.
Dalam proses pelaksanaan khusus, pemisahan baca-tulis biasanya dibahagikan kepada dua kaedah: sandaran tuan-hamba dan replikasi dwi-tuan. Antaranya, skim sandaran tuan-hamba mengedarkan permintaan baca kepada berbilang pelayan hamba, manakala permintaan tulis hanya memproses operasi pada pelayan induk. Penyelesaian replikasi dwi-induk mengedarkan permintaan baca dan tulis secara sama rata kepada berbilang pelayan, dan perlu memastikan penyegerakan data antara pelayan.
Dalam pengaturcaraan PHP, pangkalan data MySQL biasanya digunakan untuk menyimpan dan mengurus data aplikasi. Berikut memperkenalkan aplikasi dua skema pemisahan baca-tulis pangkalan data biasa dalam PHP:
2.1 Skim replikasi master-slave
Apabila menggunakan skema replikasi master-slave, program menghantar pernyataan SQL ke pelayan utama , dan pernyataan SQL baca dihantar ke pelayan hamba. Untuk menyegerakkan data antara pelayan baca dan tulis, teknologi pengelogan binari dengan alias biasa "log bin" perlu digunakan. Langkah-langkah khusus adalah seperti berikut:
(1) Hidupkan fungsi log binari pada pelayan utama
Tambah maklumat konfigurasi berikut pada fail konfigurasi MySQL my.cnf:
log-bin= mysql-bin # Dayakan fungsi pengelogan binari
binlog-ignore-db=mysql # Abaikan pangkalan data tertentu
(2) Dayakan fungsi pengelogan binari pada pelayan hamba
dalam fail konfigurasi MySQL Tambah maklumat konfigurasi berikut pada my.cnf:
log-bin=mysql-bin # Dayakan fungsi log binari
binlog-do-db=dbname # Tentukan pangkalan data yang perlu disegerakkan
( 3) Sediakan penyegerakan tuan-hamba
Laksanakan pernyataan SQL berikut pada pelayan hamba:
TUKAR MASTER KE MASTER_HOST='master_host_name', MASTER_USER= 'replication_user_name', MASTER_PASSWORD='replication_password', MASTER_LOG_FILE= 'recorded_log_file_name', MASTER_LOG_POS=recorded_log_position;
(4) Pelaksanaan kod
Dalam program PHP, anda boleh menggunakan perpustakaan PDO atau MySQLi untuk menyambung ke pelayan pangkalan data Contoh kod adalah seperti berikut:
//Sambung ke pelayan penulisan utama
$dbw = new PDO('mysql:host=master_host_name;dbname=dbname;charset =utf-8', 'user_name', 'password', array(PDO::ATTR_TIMEOUT = > 1));
//Sambung ke pelayan baca hamba
$dbr = new PDO('mysql: host=slave_host_name;dbname=dbname;charset=utf-8', 'user_name', 'password', array(PDO::ATTR_TIMEOUT => 1));
//Lakukan operasi baca
$stmt = $dbr->query('SELECT * FROM table_name');
//Lakukan operasi tulis
$sql = 'INSERT INTO table_name (col1, col2) VALUES (:col1, :col2)';
$stmt = $dbw->prepare($sql);
$stmt-> bindValue(':col1', $value1);
$stmt->bindValue(':col2' , $value2);
$stmt->execute();
2.2 Skim replikasi Primer Berganda
Apabila menggunakan skema replikasi dwi-primer, atur cara mengedarkan membaca dan menulis SQL kenyataan yang sama kepada dua pelayan utama. Memandangkan tiada pelayan hamba, penyegerakan data antara dua pelayan induk perlu dipastikan. Langkah khusus adalah seperti berikut:
(1) Sediakan penyegerakan dwi induk
Laksanakan pernyataan SQL berikut pada kedua-dua pelayan induk:
TUKAR MASTER KE MASTER_HOST='another_master_host_name ', MASTER_USER='replication_user_name', MASTER_PASSWORD='replication_password', MASTER_LOG_FILE='recorded_log_file_name', MASTER_LOG_POS=recorded_log_position;
(2) Pelaksanaan kod
Dalam program PHP PDO, anda juga boleh atau MySQLi Tunggu perpustakaan menyambungkan dua pelayan utama Contoh kod adalah seperti berikut:
//Sambung pelayan utama 1
$db1 = new PDO('mysql:host=host_name_1;dbname=. dbname;charset=utf-8 ', 'user_name', 'password', array(PDO::ATTR_TIMEOUT => 1));
//Sambung ke pelayan utama 2
$db2 = new PDO( 'mysql:host=host_name_2;dbname= dbname;charset=utf-8', 'user_name', 'password', array(PDO::ATTR_TIMEOUT => 1));
//Lakukan operasi baca
$stmt = $db1->query ('SELECT * FROM table_name');
//Lakukan operasi tulis
$sql = 'INSERT INTO table_name (col1, col2) VALUES (:col1, :col2)' ;
$stmt = $db2 ->prepare($sql);
$stmt->bindValue(':col1', $value1);
$stmt->bindValue(':col2 ', $value2);
$stmt->execute();
Dengan menggunakan skema pemisahan baca-tulis pangkalan data, kami boleh meningkatkan prestasi dan kebolehpercayaan aplikasi web. Dalam pengaturcaraan PHP, kita boleh menggunakan replikasi master-slave dan replikasi dwi-master untuk mencapai pemisahan baca dan tulis dalam pangkalan data, dan memilih penyelesaian yang sesuai dengan kita mengikut situasi sebenar. Tidak kira penyelesaian mana yang diterima pakai, anda perlu memberi perhatian kepada butiran seperti penyegerakan antara pelayan pangkalan data dan alamat pelayan serta port yang disambungkan dalam kod untuk memastikan aplikasi penyelesaian pemisahan baca-tulis pangkalan data berjaya.
Atas ialah kandungan terperinci Penyelesaian pemisahan membaca dan menulis pangkalan data: aplikasi dalam pengaturcaraan PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!