Maison  >  Article  >  base de données  >  Explication détaillée de l'exemple de code de séparation maître-esclave de la base de données Mysql

Explication détaillée de l'exemple de code de séparation maître-esclave de la base de données Mysql

黄舟
黄舟original
2017-03-27 13:12:051622parcourir

Cet article présente principalement l'exemple de code de séparation maître-esclave de la base de données Mysql. La séparation lecture-écriture des paramètres de la base de données MySQL peut effectuer les opérations d'écriture et de lecture de la base de données. différents serveurs pour améliorer la concurrence et la vitesse correspondante.

Introduction

Paramètres de base de données MySQL séparation de lecture et d'écriture, qui peut permettre aux opérations d'écriture et de lecture sur la base de données d'être exécutées sur différents serveurs, améliorant ainsi la concurrence et la vitesse correspondante .

De nos jours, la plupart des grands sites Web utilisent la séparation maître-esclave de la base de données et la séparation lecture-écriture, qui servent non seulement de sauvegarde, mais réduisent également la pression de lecture et d'écriture sur la base de données. J'en ai toujours entendu parler. , mais je n'en ai jamais entendu parler. Je ne l'ai jamais pratiqué moi-même. J'ai le temps de le pratiquer aujourd'hui et d'enregistrer le processus.

Environnement expérimental

J'ai préparé deux serveurs, l'un est un ordinateur local et l'autre est un vps distant. Il y a des bases de données installées sur les deux machines.
Je ne présenterai pas l'installation de MySQL. Ce qu'il faut noter ici est : il est préférable d'avoir la même version de MySQL installée. Si elle est incohérente, il peut y avoir des problèmes lorsque la version inférieure lit la version supérieure. . Il est préférable de le garder cohérent.

Bibliothèque principale master

45.78.57.4 centos 7 Linux système, mysql version 5.1.73

Esclave de la bibliothèque

Système macOs natif 127.0.0.1, mysql version 5.1.73

Configuration

Créer un utilisateur

Créez un utilisateur dans la bibliothèque principale pour lire le journal d'exécution de la bibliothèque principale à partir de la bibliothèque.

doit être exécuté dans la ligne de commande mysql. Vous devez d'abord vous connecter à la ligne de commande

Le code est le suivant :

GRANT REPLICATION SLAVE ON *.* TO 'test'@'45.78.57.4' IDENTIFIED BY 'test';

Modifier mon.cnf

Le système Linux est dans /etc/my.cnf, le système Mac est dans le répertoire où MySQL est installé, et il en va de même pour Windows.


Ajoutez du code dans le fichier my.cnf

server-id = 1 //数据库ID号
log-bin=master-bin //启用二进制日志
log-bin-index=master-bin.index //二进制日志名称
Attention à ne pas le mettre à la fin du fichier, mais mettez-le devant, c'est-à-dire après [mysqld], mettez-le ici Mon contenu my.cnf

[mysqld]
server-id=1
log-bin=master-bin
log-bin-index=master-bin.index

datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
symbolic-links=0
max_allowed_packet=100M

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

Afficher le statut

Après vous être connecté à la ligne de commande mysql, entrez show master status If. les informations suivantes apparaissent, cela signifie que la configuration de la base de données principale est terminée

mysql> show master status;
+-------------------+----------+--------------+------------------+
| File       | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| master-bin.000001 |  672675 |       |         |
+-------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
Enregistrez le contenu du fichier et de la position, qui sera utilisé lors de la configuration depuis la bibliothèque.

Configuration de la bibliothèque esclave

Recherchez le fichier my.cnf sur l'ordinateur local (bibliothèque esclave), puis ajoutez le contenu suivant La signification de cette configuration et le. la configuration de la bibliothèque principale est la même

server-id=2
relay-log=slave-relay-bin
relay-log-index=slave-relay-bin.index
Assurez-vous qu'elle est dans la même position que la bibliothèque principale, je n'ai pas pu la connecter car la position était placée à la fin.

Association de la base de données maître-esclave

La dernière étape est très importante Connectez-vous à la ligne de commande MySQL de la base de données esclave et exécutez le code suivant, qui est. principalement pour associer certaines informations de la base de données principale.

change master to master_host='45.78.57.4',  #Master 服务器Ip
master_port=3306,
master_user='test',
master_password='test', 
master_log_file='master-bin.000001', #Master日志文件名
master_log_pos=672675; #Master日志同步开始位置
Faites attention à ce que l'exécution réussisse. Si l'exécution échoue, vérifiez attentivement le code pour voir où se trouvent les erreurs.


Si l'exécution est normale, démarrez l'esclave et vérifiez l'état de la connexion.

//需要再mysql命令行执行 
start slave; 
show slave status\G; //查看slave连接状态
Informations sur le statut

        Slave_IO_State: Waiting for master to send event
         Master_Host: 45.78.57.4
         Master_User: test
         Master_Port: 3306
        Connect_Retry: 60
       Master_Log_File: master-bin.000001
     Read_Master_Log_Pos: 672913
        Relay_Log_File: slave-relay-bin.000044
        Relay_Log_Pos: 504
    Relay_Master_Log_File: master-bin.000001
       Slave_IO_Running: Yes
      Slave_SQL_Running: Yes

Attention !

Ces deux statuts doivent être Oui pour être considérés comme réussis. Sinon, vérifiez l'erreur de configuration à l'étape ci-dessus.

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

Test

Maintenant, vous ajoutez une donnée sur la base de données principale pour voir s'il y a les mêmes données sur la base de données esclave. Si c'est le cas, la. la configuration est normale. La fonction fonctionne normalement.

Le principe principal de la séparation maître-esclave est d'activer la fonction de journal d'exécution de la bibliothèque principale, puis de lire les informations de journal de la bibliothèque principale à partir de la bibliothèque esclave, puis d'exécuter les instructions SQL exécutées par la bibliothèque principale. Bibliothèque sur la bibliothèque esclave. Jusqu'à ce que le maître-esclave soit séparé, les données maître-esclave restent intactes et ont pour fonction de sauvegarder les 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