docker搭建mysql主从复制

docker搭建mysql主从复制_第1张图片

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;

在这里插入图片描述

你可能感兴趣的:(docker,mysql)