Cet article partage principalement avec vous la réplication maître-esclave Mysql basée sur Docker, en espérant aider tout le monde.
Présentation de l'environnement
Serveur maître : JD Cloud CentOS
Serveur esclave : Vultr Cloud CentOS
Afin de faciliter les tests, Docker est utilisé pour exécuter Mysql et Docker est démarré. La commande est la suivante :
docker run --name mysql-server-01 -p 3306:3306 -v "$PWD"/conf.d:/etc/mysql/conf.d -v /my/own/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:latest
Copier après la connexion
Ce qui précède mappe le répertoire de configuration MySQL et le répertoire de données au répertoire de données. hôte.
Configurer Master
Pour plus de commodité, un répertoire spécial est créé pour faire fonctionner la base de données master La structure est la suivante
<🎜. >mysql └── server01 ├── conf.d ├── data └── start.sh
Copier après la connexion
[mysqld]log-bin=mysql-binserver-id=1innodb_flush_log_at_trx_commit=1sync_binlog=1
Copier après la connexion
# 进入容器 docker exec -it 容器ID bash # 进入msyql客户端 mysql -u root -p # 新建salve用户并配置权限,格式如下 mysql> CREATE USER 'repl'@'%.example.com' IDENTIFIED BY 'password'; mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%.example.com'; # 查看master状态,这里file和position后面配置salve会用到mysql> show master status; +------------------+----------+--------------+------------------+-------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+-------------------+| mysql-bin.000001 | 1092 | | | | +------------------+----------+--------------+------------------+-------------------+1 row in set (0.00 sec)
Copier après la connexion
Ensuite, démarrez le conteneur et entrez dans le client mysql. Démarrer l'esclave
[mysqld]server-id=2
Copier après la connexion
# 配置master到slave mysql> CHANGE MASTER TO -> MASTER_HOST='master_host_name', -> MASTER_USER='replication_user_name', -> MASTER_PASSWORD='replication_password', -> MASTER_LOG_FILE='recorded_log_file_name', -> MASTER_LOG_POS=recorded_log_position;
Copier après la connexion
START SLAVE;
Copier après la connexion
Il existe trois architectures MySQL courantes
Architecture à instance uniquemysql> show slave status\G;*************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: xxx.com Master_User: slave1 Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000001 Read_Master_Log_Pos: 1092 Relay_Log_File: ca210e4caaaa-relay-bin.000002 Relay_Log_Pos: 813 Relay_Master_Log_File: mysql-bin.000001 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: 1092 Relay_Log_Space: 1027 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: 0Master_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: 1 Master_UUID: 5c2073ab-0ad6-11e8-a871-0242ac110005 Master_Info_File: /var/lib/mysql/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: Auto_Position: 0 Replicate_Rewrite_DB: Channel_Name: Master_TLS_Version: 1 row in set (0.00 sec)
Copier après la connexion
- L'une des méthodes de réplication maître-esclave est basée sur la méthode de réplication de journaux binaires ci-dessus, et l'autre est basé sur la méthode de l'identifiant de transaction global (GTID). Recommandations associées :
- Explication détaillée du processus de réplication maître-esclave MySQL_Explication détaillée de l'instance MySQL
- À propos de MySQL5 7.18 Explication détaillée de la réplication maître-esclave pour créer une instance maître-esclave
La séparation lecture-écriture Mycat est implémentée sur la base de la réplication maître-esclave MySQL