Avec le développement rapide d'Internet, la base de données, en tant qu'élément important du stockage des données back-end, est cruciale pour la haute disponibilité et l'optimisation des performances du site Web. Parmi elles, la réplication maître-esclave est une solution de haute disponibilité de base de données couramment utilisée, qui peut améliorer la stabilité et la disponibilité du système sans affecter les services.
Cet article présente principalement comment utiliser PHP pour implémenter la réplication maître-esclave et le basculement.
1. Le principe de base de la réplication maître-esclave
La réplication maître-esclave fait référence à la synchronisation de toutes les données d'une base de données maître vers plusieurs bases de données esclaves. La base de données maître peut lire et écrire des données, tandis que la base de données esclave ne peut effectuer que des opérations de lecture, et les données de la base de données esclave sont totalement cohérentes avec la base de données maître. La réplication maître-esclave utilise généralement la réplication asynchrone. Une fois les données de la base de données maître modifiées, le journal de données nouvellement ajouté sera enregistré, puis le thread esclave MySQL lira le journal de mise à jour et l'appliquera à la base de données esclave.
Dans l'architecture de réplication maître-esclave, nous utilisons généralement la bibliothèque maître comme serveur d'écriture et la bibliothèque esclave comme serveur de lecture. Étant donné que les opérations d'écriture consomment généralement plus de ressources que les opérations de lecture, les opérations d'écriture sont placées sur la bibliothèque principale pour obtenir une séparation de la lecture et de l'écriture, ce qui réduit la pression sur la bibliothèque principale et améliore les performances de la bibliothèque principale.
2. PHP implémente la réplication maître-esclave
1. Configurer la réplication maître-esclave
Dans MySQL, nous pouvons réaliser la réplication maître-esclave en configurant le fichier my.cnf. Les étapes de configuration spécifiques sont les suivantes :
1) Configurez le serveur principal
[mysqld]
log-bin=mysql-bin #Activez la fonction de journal binaire et activez la réplication maître-esclave
server-id=1 # Configurez un numéro unique, Assurez-vous que le numéro de chaque serveur n'est pas répété
2) Configurez le serveur esclave
[mysqld]
server-id=2 #Configurez un numéro unique pour vous assurer que le numéro de chaque serveur n'est pas répété
relay-log=mysql-relay -bin #Configurer le fichier journal du relais, utilisé pour copier les données de la bibliothèque principale depuis la bibliothèque
read_only=1 #Interdire les opérations d'écriture depuis la bibliothèque esclave
2. bibliothèque maître-esclave via PHP
Connectez la bibliothèque maître-esclave en PHP, en fait, ce n'est pas différent de la connexion à une seule base de données. Il suffit de spécifier quelle base de données utiliser lors de la connexion à la base de données.
Lorsque vous effectuez des opérations de lecture, utilisez la bibliothèque esclave pour fonctionner, et lors de l'exécution d'opérations d'écriture, utilisez la bibliothèque principale pour fonctionner. Le code spécifique est le suivant :
//Connectez-vous à la bibliothèque principale
$main_db = mysqli_connect("localhost", "root", "123456", "main_db");
//Connectez-vous à la bibliothèque esclave
$slave_db = mysqli_connect(" localhost", "root", "654321", "slave_db");
//Lire les données de la bibliothèque esclave
$result = mysqli_query($slave_db, "SELECT * FROM user") ;
//Au maître La base de données écrit data
mysqli_query($main_db, "INSERT INTO user(name, age) VALUES('tom', '25')");
Mise en œuvre du basculement
. Lorsque la base de données principale tombe en panne de manière inattendue, il est nécessaire de passer à la fourniture de services à partir de la base de données. Le processus de basculement nécessite les étapes suivantes :
1. Passer de la bibliothèque esclave à la bibliothèque principale
Lorsque la bibliothèque principale ne peut pas fournir de services, nous devons passer de la bibliothèque esclave à la bibliothèque principale afin qu'elle puisse prendre le relais. services de la bibliothèque principale. Les étapes spécifiques sont les suivantes :
1) Exécutez la commande dans la bibliothèque esclave : STOP SLAVE ; arrêtez le processus de copie depuis la bibliothèque esclave.
2) Copiez les données de la bibliothèque esclave vers la bibliothèque principale.
3) Modifiez l'identifiant du serveur dans la bibliothèque esclave à 1 et modifiez les variables log-bin et relay-log dans le fichier my.cnf. De cette façon, la base de données esclave devient la base de données maître et commence à fournir des services.
2. Modifier la configuration dans l'application
Lors du basculement de la bibliothèque principale, vous devez modifier les informations de configuration dans l'application afin qu'elle puisse basculer vers la nouvelle bibliothèque principale pour fournir des services.
3. Commutation après récupération d'erreur
Lorsque la base de données principale reprend le service, il est nécessaire de restaurer la base de données principale vers la base de données principale et de remplacer la base de données esclave précédente par la base de données esclave pour la sauvegarde. Les étapes spécifiques sont les suivantes :
1) Exécutez la commande : STOP SLAVE dans la bibliothèque esclave pour arrêter le processus de copie depuis la bibliothèque esclave.
2) Synchronisez les dernières données avec la base de données principale.
3) Exécutez la commande dans la bibliothèque principale : CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_USER='root', MASTER_PASSWORD='xxxx', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=156, qui sera La bibliothèque devient la bibliothèque principale.
De cette façon, une fois le défaut restauré, la relation entre les bibliothèques maître et esclave est à nouveau établie et entre dans un état de fonctionnement normal.
4. Résumé
La mise en œuvre du basculement de réplication maître-esclave de base de données via PHP peut améliorer la fiabilité et la disponibilité du système, tout en réduisant la pression des applications et en améliorant les performances globales du système. En pratique, il faut prêter attention au processus de basculement et à la configuration de l'application pour garantir que l'ensemble du processus de basculement se déroule sans problème et que la récupération des données et la récupération de l'ensemble du système en cas de panne soient terminées dans les plus brefs délais.
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!