Maison > base de données > tutoriel mysql > Tutoriel pour vous apprendre à configurer facilement un environnement de réplication maître-esclave traditionnel sur Alibaba Cloud et Tencent Cloud

Tutoriel pour vous apprendre à configurer facilement un environnement de réplication maître-esclave traditionnel sur Alibaba Cloud et Tencent Cloud

巴扎黑
Libérer: 2017-07-17 09:38:50
original
2183 Les gens l'ont consulté

L'environnement de réplication maître-esclave MySQL peut être considéré comme le fondement de toute haute disponibilité. Son principe est également relativement simple. Comprenons d'abord le principe de la réplication maître-esclave :

Tutoriel pour vous apprendre à configurer facilement un environnement de réplication maître-esclave traditionnel sur Alibaba Cloud et Tencent Cloud
Bien qu'il y ait 7 étapes dans l'image, il peut être simplifié pour aider la mémoire et la compréhension :

  1. Effectuer des opérations de modification et d'écriture sur Master

  2. MySQL écrit les données modifiées dans

  3. Esclave Lancez un thread IO pour extraire le nouveau journal binaire sur le maître dans le journal du relais local

  4. Rejouez le journal du relais afin que les modifications et les nouvelles opérations sur le maître puissent être reflétées sur l'esclave ; Exécutez-le à nouveau sur la machine ;

  5. L'esclave écrira également l'opération dans le journal binaire local selon le fonctionnement normal.

Environnement matériel

J'ai une machine Diaosi d'Alibaba Cloud et de Tencent Cloud, je l'utilise donc pour les tests Pour protéger la confidentialité, j'ai remplacé l'adresse IP. , mais cela n'affecte pas les opérations.

主机 ip 端口 版本 主从
阿里云 192.168.1.100 3306 MySQL5.7.14 Master
腾讯云 192.168.1.200 3306 MySQL5.7.18 Slave

Définir sur Master

Activer les paramètres binlog server-id

Modifier sous l'option mysqld dans /etc/my.cnf, puis redémarrer

[mysqld]
log-bin=mysql-bin
server-id=1003306
Copier après la connexion
/etc/init.d/mysql restart
Copier après la connexion

Créez un compte dédié pour la réplication

mysql> CREATE USER 'repl'@'%.mydomain.com' IDENTIFIED BY 'slave;
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.200';
Copier après la connexion

Exportez les données et synchronisez-les avec Tencent Cloud

Utilisez mysqldump pour exporter toutes les données de la base de données, et le journal binaire actuel sera être enregistré dans le fichier de sauvegarde Fichier et position.

#防止DDL、写操作
mysql>FLUSH TABLES WITH READ LOCK;
shell>mysqldump -uroot -p --single-transaction --master-data=2 -A>back.sql
Copier après la connexion

Vous pouvez également le visualiser via les méthodes suivantes :

root@localhost [mysql]>show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000045 |      939 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
Copier après la connexion

Déverrouiller la table

mysql> UNLOCK TABLES;
Copier après la connexion

Transférer des fichiers à distance vers le passé

Si le fichier de données est biaisé S'il est volumineux ou contient beaucoup de données, vous pouvez utiliser xtrabackup de percona pour le sauvegarder et le compresser, puis le transférer vers celui-ci.

rsync back.sql root@192.168.1.200:/root
Copier après la connexion

Opération esclave

Activer les paramètres binlog server-id

Modifier sous l'option mysqld dans /etc/my.cnf

[mysqld]
log-bin=mysql-bin
server-id=2003306
Copier après la connexion

Redémarrez le service MySQL

Importer des données

shell>mysqldump -uroot -p --databases t1 <back.sql><h3>Pointer vers Master</h3>
<p>Le <em>MASTER_LOG_FILE</em> et le <em>MASTER_LOG_POS</em> viennent juste de commencer<em>afficher le statut principal</em> valeur, bien sûr, vous pouvez également utiliser <em>plus</em> pour afficher l'emplacement qui doit être spécifié. </p>
<pre class="brush:php;toolbar:false">CHANGE MASTER TO MASTER_HOST='192.168.1.200',MASTER_PORT=3306,MASTER_USER='repl',MASTER_PASSWORD='slave',MASTER_LOG_FILE='mysql-bin.000045',MASTER_LOG_POS=939;
Copier après la connexion

Le MASTER_LOG_FILE et le MASTER_LOG_POS voici les valeurs de afficher le statut de maître tout à l'heure. Bien sûr, vous pouvez également. utilisez plusVoir où cela doit être spécifié.

shell>more back.sql
-- MySQL dump 10.13  Distrib 5.7.14, for linux-glibc2.5 (x86_64)
--
-- Host: localhost    Database: 
-- ------------------------------------------------------
-- Server version   5.7.14-log

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Position to start replication or point-in-time recovery from
--

CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000045', MASTER_LOG_POS=939;
Copier après la connexion

Démarrer l'esclave

mysql>start slave;
mysql>show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.1.200
                  Master_User: repl
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000045
          Read_Master_Log_Pos: 939
               Relay_Log_File: relay-bin.000001
                Relay_Log_Pos: 4
        Relay_Master_Log_File: mysql-bin.000045
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 939
              Relay_Log_Space: 154
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
              Master_SSL_Cert: 
            Master_SSL_Cipher: 
               Master_SSL_Key: 
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 0
               Last_SQL_Error: 
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 23306
                  Master_UUID: 9a13d860-b55b-11e6-bf33-00163e054164
             Master_Info_File: /data/mysql/mysql3306/data/master.info
                    SQL_Delay: 0
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
           Master_Retry_Count: 86400
                  Master_Bind: 
      Last_IO_Error_Timestamp: 
     Last_SQL_Error_Timestamp: 
               Master_SSL_Crl: 
           Master_SSL_Crlpath: 
           Retrieved_Gtid_Set: 
            Executed_Gtid_Set: 3feb36dc-ef7e-11e6-a535-52540043f116:1-337886
                Auto_Position: 0
         Replicate_Rewrite_DB: 
                 Channel_Name: 
           Master_TLS_Version: 
1 row in set (0.00 sec)
Copier après la connexion

Si vous voyez un double OUI pour Slave_IO_Running et Slave_SQL_Running, il n'y a généralement aucun problème.

Vérification

Vous pouvez maintenant créer une nouvelle base de données, créer une nouvelle table de données, insérer une sortie, etc. sur le maître pour vérifier si le maître-esclave est valide. Vous pouvez faire ce que vous voulez avec cette étape !

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!

Étiquettes associées:
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal