0
点赞
收藏
分享

微信扫一扫

[Docker] Mysql主从同步集群部署

菜菜捞捞 2022-01-28 阅读 106

文章目录

环境准备

下载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在从库配置中会用到
在这里插入图片描述

从节点配置

  1. 配置文件
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表示主从同步正常
在这里插入图片描述

测试同步效果

  1. 同步前主从节点数据库结构
    在这里插入图片描述
  2. 在master上导入一个数据库
    在这里插入图片描述
  3. 刷新后slave节点同步成功
    在这里插入图片描述
举报

相关推荐

0 条评论