文章目录
环境准备
下载Mysql镜像
docker pull mysql:5.7
创建Mysql容器实例并启动
创建Master节点
docker run -p 3306:3306 --name mysql-master \
-v /mydata/mysql/master/log:/var/log/mysql \
-v /mydata/mysql/master/data:/var/lib/mysql \
-v /mydata/mysql/master/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
参数说明:
- -p 3306:3306:将容器的 3306 端口映射到主机的 3307 端口
- -v /mydata/mysql/master/conf:/etc/mysql:将配置文件夹挂在到主机
- -v /mydata/mysql/master/log:/var/log/mysql:将日志文件夹挂载到主机
- -v /mydata/mysql/master/data:/var/lib/mysql/:将配置文件夹挂载到主机
- -e MYSQL_ROOT_PASSWORD=root:初始化 root 用户的密码
创建Slave节点(随意N个)
docker run -p 3307:3306 --name mysql-slaver-01 \
-v /mydata/mysql/slaver1/log:/var/log/mysql \
-v /mydata/mysql/slaver1/data:/var/lib/mysql \
-v /mydata/mysql/slaver1/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
docker run -p 3308:3306 --name mysql-slaver-02 \
-v /mydata/mysql/slaver2/log:/var/log/mysql \
-v /mydata/mysql/slaver2/data:/var/lib/mysql \
-v /mydata/mysql/slaver2/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
主节点配置
配置文件
vim /mydata/mysql/master/conf/my.cnf
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
server_id=1
log-bin=mysql-bin
read-only=0
binlog-do-db=gulimail_pms
replicate-ignore-db=mysql
replicate-ignore-db=sys
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
参数说明:
- server_id: mysql集群节点id,唯一
- log-bin:mysql主从同步日志文件名
- read-only:是否只读(0表示可读可写,1表示只读)
- binlog-do-db:要执行主从同步的数据库
- replicate-ignore-db:不需要执行主从同步的数据库
修改完成后重启master
主从同步配置
# 进入master容器内部(也可以使用navicat等工具连接后执行命令)
docker exec -it mysql-master /bin/bash
# 授权用来同步的用户
GRANT REPLICATION SLAVE ON *.* to 'backup'@'%' identified by '123456';
# 查看master状态
show master status;
主库状态,红框中的mysql-bin在从库配置中会用到
从节点配置
- 配置文件
vim /mydata/mysql/slaver1/conf/my.cnf
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
server_id=2
log-bin=mysql-bin
read-only=1
binlog-do-db=gulimall_pms
replicate-ignore-db=mysql
replicate-ignore-db=sys
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
配置完成后重启slave
2. 主从同步配置
# 设置主库
change master to master_host='192.168.31.200',master_user='backup',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=0,master_port=3306;
# 启动从库同步
start slave;
# 查看从库状态
show slave status;
从库状态,红框中两个字段为Yes表示主从同步正常
测试同步效果
- 同步前主从节点数据库结构
- 在master上导入一个数据库
- 刷新后slave节点同步成功