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;