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
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,就表明主从有问题了,发短信警报吧。
相关推荐:
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!