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 en lecture et écriture de base de données : application en programmation PHP

PHPz
PHPzoriginal
2023-06-23 09:44:421324parcourir

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.

  1. Le principe de base de la solution de séparation lecture-écriture de base de données

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.

  1. Solution de séparation lecture-écriture de base de données en PHP

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

  1. Résumé

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn