Maison >développement back-end >tutoriel php >Solution de séparation en lecture et écriture de base de données : application en programmation PHP
Solution de séparation lecture-écriture de base de données : application en programmation PHP
Dans le processus de développement d'applications Web, la base de données est utilisée pour stocker diverses données et informations de l'application, sa stabilité et sa fiabilité sont donc cruciales. De nombreuses applications Web volumineuses et à fort trafic sont confrontées à des problèmes de performances et de fiabilité des bases de données. À cette fin, un schéma de séparation lecture-écriture de base de données a été introduit pour relever ces défis. Cet article explique comment utiliser le schéma de séparation lecture-écriture de base de données dans la programmation PHP pour améliorer les performances et la fiabilité des applications.
La séparation lecture-écriture de base de données consiste à diviser un serveur de base de données en deux parties : une partie est dédiée au traitement des demandes de lecture et l'autre partie est dédiée au traitement des demandes d'écriture. . Le but est d'améliorer l'efficacité d'accès et les performances de la base de données et de réduire la pression sur le serveur de base de données.
Dans le processus de mise en œuvre spécifique, la séparation lecture-écriture est généralement divisée en deux méthodes : la sauvegarde maître-esclave et la réplication double maître. Parmi eux, le schéma de sauvegarde maître-esclave distribue les requêtes de lecture à plusieurs serveurs esclaves, tandis que les requêtes d'écriture traitent uniquement les opérations sur le serveur maître. La solution de réplication à double maître distribue les demandes de lecture et d'écriture de manière égale sur plusieurs serveurs et doit assurer la synchronisation des données entre les serveurs.
Dans la programmation PHP, la base de données MySQL est généralement utilisée pour stocker et gérer les données d'application. Ce qui suit présente l'application de deux schémas de séparation lecture-écriture de base de données courants en PHP :
2.1 Schéma de réplication maître-esclave
Lors de l'utilisation du schéma de réplication maître-esclave, le programme enverra des instructions SQL d'écriture au serveur principal, tout en lisant Les instructions SQL seront envoyées depuis le serveur. Afin de synchroniser les données entre les serveurs de lecture et d'écriture, une technologie de journalisation binaire avec un alias commun « log bin » doit être utilisée. Les étapes spécifiques sont les suivantes :
(1) Activez la fonction de journal binaire sur le serveur principal
Ajoutez les informations de configuration suivantes au fichier de configuration MySQL my.cnf :
log-bin=mysql-bin # Activez la fonction de journalisation binaire
binlog-ignore -db=mysql # Ignorer les bases de données spécifiques
(2) Activer la journalisation binaire sur le serveur esclave
Ajoutez les informations de configuration suivantes au fichier de configuration MySQL my.cnf :
log-bin= mysql-bin # Activer la journalisation binaire Fonction
binlog-do-db=dbname # Spécifiez la base de données qui doit être synchronisée
(3) Configurez la synchronisation maître-esclave
Exécutez l'instruction SQL suivante sur le serveur esclave :
CHANGE MASTER TO 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) Implémentation du code
Dans les programmes PHP, vous pouvez utiliser des bibliothèques telles que PDO ou MySQLi pour se connecter au serveur de base de données. L'exemple de code est le suivant :
//Connectez-vous au serveur d'écriture principal
$dbw = new PDO('mysql:host=master_host_name;dbname=dbname;charset=utf-8. ', 'user_name', 'password', array(PDO::ATTR_TIMEOUT => 1) );
//Connectez-vous au serveur de lecture esclave
$dbr = new PDO('mysql:host=slave_host_name;dbname=dbname; charset=utf-8', 'user_name', 'password', array(PDO::ATTR_TIMEOUT => ; 1));
//Effectuer une opération de lecture
$stmt = $dbr->query('SELECT * FROM table_name');
//Effectuer une opération d'écriture
$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 Réplication à double maître schéma
Lors de l'utilisation du schéma de réplication à double maître, le programme distribuera également la lecture et l'écriture des instructions SQL aux deux serveurs maîtres. Puisqu'il n'y a pas de serveur esclave, la synchronisation des données entre les deux serveurs maîtres doit être assurée. Les étapes spécifiques sont les suivantes :
(1) Configurer la synchronisation double maître
Exécuter les instructions SQL suivantes sur les deux serveurs maîtres :
CHANGE MASTER TO 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) Implémentation du code
Dans un programme PHP, vous pouvez également utiliser des bibliothèques telles que PDO ou MySQLi pour connecter deux serveurs principaux. L'exemple de code est le suivant :
//Connectez-vous au serveur principal 1
$db1 = new PDO('mysql:host=host_name_1;dbname=dbname;charset=utf-8', 'user_name', 'password', array(PDO::ATTR_TIMEOUT = > 1));
// Connectez-vous au serveur principal 2
$db2 = new PDO('mysql:host=host_name_2;dbname=dbname;charset=utf-8', 'user_name', 'password', array( PDO::ATTR_TIMEOUT => 1));
//Effectuer une opération de lecture
$stmt = $db1->query('SELECT * FROM table_name');
//Effectuer une opération d'écriture
$sql = 'INSERT INTO nom_table (col1, col2) VALUES (:col1, : col2)';
$stmt = $db2->prepare($sql);
$stmt->bindValue(':col1', $value1);
$stmt->bindValue(':col2', $ value2);
$stmt->execute();
Grâce à l'application du schéma de séparation en lecture et en écriture de la base de données, nous pouvons améliorer les performances et la fiabilité des applications Web. Dans la programmation PHP, nous pouvons utiliser la réplication maître-esclave et la réplication double maître pour réaliser la séparation des lectures et des écritures dans la base de données, et choisir la solution qui nous convient en fonction de la situation réelle. Quelle que soit la solution adoptée, vous devez prêter attention aux détails tels que la synchronisation entre les serveurs de base de données et l'adresse du serveur et le port connectés dans le code pour garantir le succès de l'application de la solution de séparation lecture-écriture de la base de données.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!