Maison  >  Article  >  base de données  >  Introduction détaillée au code source et au principe de réplication de la configuration maître-esclave mysql

Introduction détaillée au code source et au principe de réplication de la configuration maître-esclave mysql

php是最好的语言
php是最好的语言original
2018-07-24 13:38:211190parcourir

Cet article parle principalement de l'implémentation de la réplication maître-esclave de MySQL et de la séparation lecture-écriture. Voici le code source de la réplication maître-esclave de MySQL. Comment installer la base de données mysql, je n'entrerai pas dans les détails ici, seulement sa réplication maître-esclave, les étapes sont les suivantes :

1. Les serveurs maître et esclave effectuent respectivement les opérations suivantes :
1.1 Les versions sont cohérentes
1.2 Initialiser la table et démarrer mysql en arrière-plan
1.3. Modifiez le mot de passe root

2. Modifiez le maître du serveur principal :
#vi /etc/my.cnf
[mysqld]
log-bin=mysql- bin //[Doit] Activer le journal binaire
server-id=222 //[Obligatoire] ID unique du serveur, la valeur par défaut est 1, prend généralement le dernier segment de l'IP

3. Modifier le serveur esclave esclave :
#vi /etc/my.cnf
[MySQLD]
Log-bin = MySQL-bin // [Pas nécessairement] Activer le journal binaire
serveur- id = 226 // La valeur par défaut est 1, prenez généralement le dernier segment de l'IP

4. Redémarrez le mysql des deux serveurs
/etc/init.d/mysql restart

5. Créez un compte sur le serveur principal et autorisez l'esclave :
#/usr/local/mysql/bin/mysql -uroot -pmttang
mysql>GRANT REPLICATION SLAVE ON *.* à 'mysync'@ '%' identifié par 'q123456'; // Généralement, le compte root n'est pas utilisé "%" signifie que tous les clients peuvent se connecter tant que le compte et le mot de passe sont corrects. l'adresse IP spécifique du client peut être utilisée à la place, par exemple 192.168.145.226, pour renforcer la sécurité.

6. Connectez-vous au mysql du serveur maître et interrogez l'état du maître
mysql>show master status;
+------- ------ -----+----------+--------------+------------ ------ +
| Fichier | Position | Binlog_Do_DB |
+-----------------+--------- -----------+------------------+
| mysql-bin.000004 | -----------------+----------+--------------+------ ------------+
1 ligne dans l'ensemble (0,00 sec)
Remarque : n'utilisez pas le serveur principal MYSQL après avoir effectué cette étape pour empêcher la valeur d'état du serveur principal de changer


7. Configurez le serveur esclave Slave : mysql>changez le maître en master_host='192.168.145.222',master_user='mysync',master_password='q123456',
master_log_file=' mysql-bin.000004',master_log_pos=308; //Attention à ne pas vous déconnecter, il n'y a pas de guillemets simples avant et après le nombre 308.

Mysql>start slave; //Démarrer la fonction de réplication du serveur esclave


8. Vérifiez l'état de la fonction de réplication du serveur esclave :
mysql> statut d'esclaveG

************************** 1. rangée ************* **** *************

Slave_IO_State : En attente que le maître envoie l'événement
Master_Host : 192.168.2.222 //Adresse du serveur maître
Master_User : mysync //Nom du compte autorisé, essayez d'éviter d'utiliser root
Master_Port : 3306 //Port de base de données, certaines versions n'ont pas cette ligne
Connect_Retry : 60
Master_Log_File : mysql-bin.000004
​ ​​ Read_Master_Log_Pos : 600 ​ //#Lecture synchrone La position du log binaire, supérieure ou égale à Exec_Master_Log_Pos
Relay_Log_File : ddte-relay-bin.000003
Relay_Log_Pos : 251
Relay_Master_Log_File : mys ql-bin .000004
Slave_IO_Running : Oui //Cet état doit être OUI
Slave_SQL_Running : Oui //Cet état doit être OUI
...

Remarque : les processus Slave_IO et Slave_SQL doivent fonctionner normalement , c'est-à-dire le statut OUI, sinon ils ont tous un mauvais statut (par exemple : l'un des NON est une erreur).

Après le processus opérationnel ci-dessus, la configuration des serveurs maître et esclave est terminée.


9. Test serveur maître-esclave :
Serveur maître Mysql, établissez une base de données, et créez une table dans cette base de données pour insérer une donnée :

mysql> ; créer une base de données hi_db;
  Requête OK, 1 ligne affectée (0,00 s)

  mysql> utiliser hi_db;
  Base de données modifiée

  mysql>  create table hi_tb(id int(3),name char(10));
  Requête OK, 0 ligne affectée (0,00 s)
 
  mysql> insérer dans les valeurs hi_tb(001,'bobu');
  Requête OK, 1 ligne affectée (0,00 s)

  mysql> afficher les bases de données ;
   +--------------------+
   | Base de données           |
   +--------------------+
   | information_schema |
   | hi_db                |
   | mysql                |
   | test                 |
   +--------------------+
   4 lignes dans l'ensemble (0,00 sec)

从服务器Mysql查询:

   mysql> afficher les bases de données ;

   +--------------------+
   | Base de données               |
   +--------------------+
   | information_schema |
   | hi_db                 |       //Je suis là,大家看到了吧
   | mysql                 |
   | test          |

   +--------------------+
   4 lignes dans l'ensemble (0,00 sec)

   mysql> utiliser hi_db
   Base de données modifiée
   mysql> sélectionnez * dans hi_tb ;           //查看主服务器上新增的具体数据
   +------+------+
   | identifiant   | nom |
   +------+------+
   |    1 | bobu |
   +------+------+
   1 ligne dans la série (0,00 sec)
 

10、完成:
    编写一shell脚本,用nagios监控slave的两个yes(Slave_IO及Slave_SQL进程),如发现只有一个或零个yes,就表明主从有问题了,发短信警报吧。

相关推荐:

Moniteur MySQL

详解MySQL实现主从复制过程-mysql教程

mysql教程:MySQL如何实现主从复制过程的示例详解


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