Rumah >pembangunan bahagian belakang >tutorial php >Penyelesaian pemisahan membaca dan menulis pangkalan data: aplikasi dalam pengaturcaraan PHP

Penyelesaian pemisahan membaca dan menulis pangkalan data: aplikasi dalam pengaturcaraan PHP

PHPz
PHPzasal
2023-06-23 09:44:421323semak imbas

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.

  1. Prinsip asas skim pemisahan baca dan tulis pangkalan data

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.

  1. Penyelesaian pemisahan baca-tulis pangkalan data dalam PHP

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();

  1. Ringkasan

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!

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