Docker部署MySQL8主从模式


Mysql8.1.0
Docker24.0.5

关于主从模式,Mysql8.0一些版本开始,有许多变化,这里使用8.1.0

一、运行容器

新建两个MySQL文件夹,分别新建data文件夹和conf/my.cnf文件。
根据需要理解并更改以下脚本。

#!/bin/bash

containerName="MyWeb02-MySQL"
MySQLData="/root/MyWeb02/MySQL/data"
MySQLConf="/root/MyWeb02/MySQL/conf/my.cnf"

containerSlaveName="MyWeb02-MySQL-Slave"
MySQLSlaveData="/root/MyWeb02/MySQL-Slave/data"
MySQLSlaveConf="/root/MyWeb02/MySQL-Slave/conf/my.cnf"

docker run  -d --name "$containerName" \
            -p 3307:3306 \
            -v "$MySQLData":/var/lib/mysql \
            -v "$MySQLConf":/etc/mysql/my.cnf \
            -e MYSQL_ROOT_PASSWORD=20028888 \
            mysql:8

docker run  -d --name "$containerSlaveName" \
            -p 3308:3306 \
            -v "$MySQLSlaveData":/var/lib/mysql \
            -v "$MySQLSlaveConf":/etc/mysql/my.cnf \
            -e MYSQL_ROOT_PASSWORD=20028888 \
            mysql:8
            

主节点的my.cnf容器如下

[mysqld]
server-id=1
log_bin=mysql-bin

从节点的my.cnf容器如下

[mysqld]
server-id=2

运行脚本。
在这里插入图片描述

二、配置主从

到主节点命令行,运行以下命令

CREATE USER 'replica'@'%' IDENTIFIED WITH mysql_native_password BY 'replica';
GRANT REPLICATION SLAVE ON *.* TO 'replica'@'%';

到从节点命令行,运行以下命令

CHANGE REPLICATION SOURCE TO 
SOURCE_HOST='172.17.0.6',
SOURCE_PORT=3306,
SOURCE_USER='replica',
SOURCE_PASSWORD='replica';
START REPLICA; //开启备份
SHOW REPLICA STATUS\G //查看主从情况

其中SOURCE_HOST为主节点容器的ip
查看主从情况时,主要注意下面两个字段是否为Yes。不是的话,就有问题,读docker logs然后去解决它。

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

Navicat等第三方软件可能不支持\G,结果以行显示。

在这里插入图片描述

三、测试效果

在主节点新建一个数据库

create database `test`;

随后可以在从节点也看到效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值