docker部署mysql主从复制

一、拉取mysql镜像

docker pull mysql/mysql-cluster
docker tag mysql/mysql-cluster mysql-cluster

二、创建目录和配置文件

1、创建目录

# 创建master主节点目录
mkdir /home/mysql/cluster/master
cd /home/mysql/cluster/master
mkdir conf data files log
# 创建slave1从节点目录
mkdir /home/mysql/cluster/slave1
cd /home/mysql/cluster/slave1
mkdir conf data files log
# 创建slave2从节点目录
mkdir /home/mysql/cluster/slave2
cd /home/mysql/cluster/slave2
mkdir conf data files log
# 创建slave3从节点目录
mkdir /home/mysql/cluster/slave3
cd /home/mysql/cluster/slave3
mkdir conf data files log

2、创建master主配置文件

[mysqld]
# 主服务器唯一ID
server-id=0
# 开启二进制日志
log-bin=mysql-bin
# 设置忽略的数据库
# binlog-ignore-db=mysql
# 设置日志使用内存大小
binlog_cache_size=1M
# 设置日志格式
binlog_format=statement

character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
default-time_zone = '+8:00'
log_timestamps=SYSTEM
default-authentication-plugin=mysql_native_password

3、创建slave从配置文件

[mysqld]
# 从服务器唯一ID
server-id=1
# 指定不需要同步的数据库名称
#binlog-ignore-db=mysql
# 开启二进制日志功能,以备slave作为其他数据库实例的master时使用
log-bin=mall-mysql-slave1-bin
# 设置二进制日志使用内存大小(事务)
binlog_cache_size=1M
# 设置日志格式
binlog_format=statement
# relay_log 配置中继日志
relay_log=mall-mysql-relay-bin
# log_slave_updates 表示 slave 将复制时间写进自己的二进制日志
log_slave_updates=1
## slave设置为只读 (具有super权限的用户除外)
read_only=1

character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
default-time_zone = '+8:00'
log_timestamps=SYSTEM
default-authentication-plugin=mysql_native_password

 三、创建docker容器

1、创建主机容器

docker run -d \
-p 3307:3306 \
-v /home/mysql/cluster/master/conf:/etc/mysql/conf.d \
-v /home/mysql/cluster/master/data:/var/lib/mysql \
-v /home/mysql/cluster/master/log:/var/log/mysql \
-v /home/mysql/cluster/master/files:/var/lib/mysql-files \
-e MYSQL_ROOT_PASSWORD=root \ --network mynet \ --name mysql-master \ mysql

2、启动主机

start master;

3、创建从机容器

docker run -d \
-p 3308:3306 \
-v /home/mysql/cluster/slave1/conf:/etc/mysql/conf.d \
-v /home/mysql/cluster/slave1/data:/var/lib/mysql \
-v /home/mysql/cluster/slave1/log:/var/log/mysql \
-v /home/mysql/cluster/slave1/files:/var/lib/mysql-files \
-e MYSQL_ROOT_PASSWORD=root \
--network mynet \
--name mysql-slave1 \
mysql

四、从机关联到主机

1、进入主机查看主机mysql的同步文件

show master status

2、进入从机关联主机

CHANGE MASTER TO MASTER_HOST='192.168.100.20',
MASTER_USER='root',
MASTER_PASSWORD='root',
MASTER_PORT=3307,
MASTER_LOG_FILE='mysql-bin.000003',
MASTER_LOG_POS=156;

 3、启动从机

start slave;

 

posted @ 2023-12-10 01:54  此时不卷何时卷  阅读(69)  评论(0编辑  收藏  举报