
1. 基础环境
- 环境
 
| 名称 | 描述 | 
|---|---|
| CentOS 7.6 | Linux操作系统版本 | 
| docker 20.10.5 | docker版本 | 
| mysql 8.0.29 | mysql镜像版本 | 
- 节点
 
| 节点名称 | 读写/主从 | 地址端口 | 
|---|---|---|
| master | 读节点/主节点 | 192.168.1.6:3306 | 
| slave1 | 写节点/从节点 | 192.168.1.6:3307 | 
| slave2 | 写节点/从节点 | 192.168.1.6:3308 | 
2. 主节点
- 使用docker拉取mysql数据库的8.0.29版本镜像文件
 
[root@zhouwei ~]# docker pull mysql:8.0.29
 
- 通过镜像构建主节点,端口3306,并映射配置文件至宿主机,容器名称为mysql-master,root用户密码为root
 
[root@zhouwei ~]# docker run -d -p 3306:3306 -v /mysql/master/conf:/etc/mysql/conf.d -v /mysql/master/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root --name mysql-master mysql:8.0.29
 
- 创建主节点配置文件
 
[root@zhouwei ~]# vim /mysql/master/conf/my.cn
 
内容如下:
[mysqld]
server-id=1
binlog_format=STATEMENT
- 重启容器
 
[root@zhouwei ~]# docker restart mysql-master
 
- root用户开启远程连接
 
# step1:进入容器内部
[root@zhouwei ~]# docker exec -it mysql-master env LANG=C.UTF-8 /bin/bash
# step2:登录mysql服务,账号root 密码root
bash-4.4# mysql -uroot -p
# step3:开启远程连接
mysql> alter user 'root'@'%' identified with mysql_native_password by 'root';
 
2. 从节点
- 通过镜像构建从节点1,端口3307,并映射配置文件至宿主机,容器名称为mysql-slave1,root用户密码为root
 
[root@zhouwei ~]# docker run -d -p 3307:3306 -v /mysql/slave1/conf:/etc/mysql/conf.d -v /mysql/slave1/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root --name mysql-slave1 mysql:8.0.29
 
- 创建主节点配置文件
 
[root@zhouwei ~]# vim /mysql/slave1/conf/my.cn
 
内容如下:
[mysqld]
server-id=2
- 重启容器
 
[root@zhouwei ~]# docker restart mysql-slave1
 
- 类似主节点开启远程连接
 - 同理在3308端口配置从节点2
 
3. 配置主从
- 使用root用户登录主节点创建用户
 
-- 创建用户
CREATE USER 'slave'@'%';
-- 设置密码
ALTER USER 'slave'@'%' IDENTIFIED WITH mysql_native_password BY 'slave';
-- 赋予复制权限
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%';
-- 刷新权限
FLUSH PRIVILEGES;
 
- 查看主节点状态
 
SHOW MASTER STATUS;
 

- 使用root用户登录从节点开启复制线程
 
CHANGE MASTER TO MASTER_HOST = '192.168.1.6',
MASTER_USER = 'slave', 
MASTER_PASSWORD = 'slave', 
MASTER_PORT = 3306, 
MASTER_LOG_FILE = 'binlog.000003',
MASTER_LOG_POS = 1427;
START SLAVE;
SHOW SLAVE STATUS;
 




















