mysql gtid 集群_Docker搭建MySQL主从集群,基于GTID

写在前边

搭建MySQL读写分离主从集群,这里未使用binlog方式,使用的是GTID方式

源码见我的Github https://github.com/hellxz/mysql-cluster-docker.git

主从目录结构

.

├── bin

│   ├── add-slave-account-to-master.sh

│   ├── reset-slave.sh

│   ├── slave-replias-master-start.sh

│   └── stop-replicas.sh

├── config

│   ├── master.cnf

│   └── slave.cnf

├── docker-compose.yml

├── .env

├── master-data

├── show-slave-status.sh

└── slave-data

目录/文件说明:

bin/add-slave-account-to-master.sh :Master节点添加备份账户的脚本

config/master.cnf : MySQL Master节点的配置文件

config/slave.cnf : MySQL Slave节点的配置文件

docker-compose.yml : 构建主从节点与挂载数据目录的docker-compose配置文件

master-data : 主节点数据位置,当然生产环境要挂到别的位置

slave-data :从节点数据位置,当然生产环境要挂到别的位置

bin/slave-replias-master-start.sh :从节点添加主节点备份账号信息并开启备份的脚本

bin/stop-replicas.sh :关闭从节点备份的脚本

bin/reset-slave.sh : 重置从节点备份状态,修复由于主从集群重启后无法建立集群的问题

.env : 环境变量文件

bin/show-slave-status.sh: 查看主从连接状态的脚本

搭建过程:

1.修改.env文件

# default environment arguments for docker-compose.yml

# set master data dir

MASTER_DATA=./master-data

# set slave data dir

SLAVE_DATA=./slave-data

# set master & slave root password

MASTER_PASSWD=P@ssw0rd

# set slave root passwor

SLAVE_PASSWD=P@ssw0rd

# set replicas mysql account name

REPL_NAME=replicas

# set replicas mysql password

REPL_PASSWD=replicasPasswd

MASTER_DATA是Master节点的数据目录,需要修改到宿主机对应的位置,SLAVE_DATA亦然。

MASTER_PASSWD是主节点的root密码,bin目录下的脚本会读取这个变量的值从而进行访问数据库

SLAVE_PASSWD是从节点的root密码,脚本也会读

REPL_NAME是主节点要创建的账户名,从节点通过这个账户进行访问

REPL_PASSWD是主节点要创建的REPL_NAME对应的密码

2.启动两个节点,执行docker-compose up -d

检查已经启动

b20883bd72643048a39fbe7770cee62d.png

3.进入bin目录,执行脚本

cd bin

./add-slave-account-to-master.sh #读取mysql密码,为主节点添加备份账户

./slave-replias-master-start.sh #从节点使用备份账户连接主节点,开启备份

4.查看集群状态,在bin目录下执行./show-slave-status.sh

ba839e026b1dfa4e260652735b27ffb9.png

到此搭建完成。

故障修复

1.重启MySQL集群后从节点无法正常恢复解决。

执行bin目录下的reset-slave.sh, 之后 连接数据库尝试,问题已经解决。

本文系原创文章,拒绝转载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值