文章目录
|
|
Mysql |
8.1.0 |
Docker |
24.0.5 |
关于主从模式,Mysql
从8.0
一些版本开始,有许多变化,这里使用8.1.0
。
一、运行容器
新建两个MySQL
文件夹,分别新建data
文件夹和conf/my.cnf
文件。
根据需要理解并更改以下脚本。
language-bash1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| #!/bin/bash
containerName="MyWeb02-MySQL" MySQLData="/root/MyWeb02/MySQL/data" MySQLConf="/root/MyWeb02/MySQL/conf/my.cnf"
containerSlaveName="MyWeb02-MySQL-Slave" MySQLSlaveData="/root/MyWeb02/MySQL-Slave/data" MySQLSlaveConf="/root/MyWeb02/MySQL-Slave/conf/my.cnf"
docker run -d --name "$containerName" \ -p 3307:3306 \ -v "$MySQLData":/var/lib/mysql \ -v "$MySQLConf":/etc/mysql/my.cnf \ -e MYSQL_ROOT_PASSWORD=20028888 \ mysql:8
docker run -d --name "$containerSlaveName" \ -p 3308:3306 \ -v "$MySQLSlaveData":/var/lib/mysql \ -v "$MySQLSlaveConf":/etc/mysql/my.cnf \ -e MYSQL_ROOT_PASSWORD=20028888 \ mysql:8
|
主节点的my.cnf
容器如下
language-bash1 2 3
| [mysqld] server-id=1 log_bin=mysql-bin
|
从节点的my.cnf
容器如下
运行脚本。
二、配置主从
到主节点命令行,运行以下命令
language-sql1 2
| CREATE USER 'replica'@'%' IDENTIFIED WITH mysql_native_password BY 'replica'; GRANT REPLICATION SLAVE ON *.* TO 'replica'@'%';
|
到从节点命令行,运行以下命令
language-sql1 2 3 4 5 6 7
| CHANGE REPLICATION SOURCE TO SOURCE_HOST='172.17.0.6', SOURCE_PORT=3306, SOURCE_USER='replica', SOURCE_PASSWORD='replica'; START REPLICA; //开启备份 SHOW REPLICA STATUS\G //查看主从情况
|
其中SOURCE_HOST
为主节点容器的ip
。
查看主从情况时,主要注意下面两个字段是否为Yes
。不是的话,就有问题,读docker logs
然后去解决它。
language-bash1 2
| Slave_IO_Running: Yes Slave_SQL_Running: Yes
|
Navicat等第三方软件可能不支持\G,结果以行显示。
三、测试效果
在主节点新建一个数据库
随后可以在从节点也看到效果。