Mysql | 8.1.0 |
Docker | 24.0.5 |
关于主从模式,Mysql
从8.0
一些版本开始,有许多变化,这里使用8.1.0
。
一、运行容器
新建两个MySQL
文件夹,分别新建data
文件夹和conf/my.cnf
文件。
根据需要理解并更改以下脚本。
#!/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
容器如下
[mysqld]
server-id=1
log_bin=mysql-bin
从节点的my.cnf
容器如下
[mysqld]
server-id=2
运行脚本。
二、配置主从
到主节点命令行,运行以下命令
CREATE USER 'replica'@'%' IDENTIFIED WITH mysql_native_password BY 'replica';
GRANT REPLICATION SLAVE ON *.* TO 'replica'@'%';
到从节点命令行,运行以下命令
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
然后去解决它。
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Navicat等第三方软件可能不支持\G,结果以行显示。
三、测试效果
在主节点新建一个数据库
create database `test`;
随后可以在从节点也看到效果。