Docker+MySQL主从集群搭建

文章目录

第一章 MySQL主从集群搭建

前言

本⽂主要讲解如何在本地搭建MySQL主从集群,采⽤Docker部署,mysql版本5.7。所以在搭建前可以
先学习⼀下Docker相关知识。

Docker教程参考


一、拉取镜像

# 拉取镜像
docker pull mysql:5.7
# 查看镜像相关信息
docker images
# 查看正在运⾏的镜像
docker ps

docker images

二、主库搭建

1.运⾏主库实例镜像

docker run --name mysql-master --privileged=true -v
/usr/local/docker/mysql/master-data:/var/lib/mysql -p 3307:3306 -e
MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
  • /usr/local/docker/mysql路径是我本地挂载mysql⽬录,进⾏映射
  • 3307指运行的端口
  • MYSQL_ROOT_PASSWORD指运行的密码
  • mysql:5.7指我刚刚拉下来的镜像
docker ps
9df6130f9189 mysql:5.7 "docker-entrypoint.s…" 6 hours ago Up About an
hour 33060/tcp, 0.0.0.0:3307->3306/tcp, :::3307->3306/tcp mysql-master

2.mysql配置

2.1 进入容器

# 通过容器id⽅式,这⾥的id就是上⾯docker ps中展示的id
docker exec -it 9df6130f9189 /bin/bash
# 通过容器名称⽅式,这⾥的名称就是创建容器时指定的名称,也就是mysql-master
docker exec -it mysql-master /bin/bash

2.2 下载vim

# 下载vim
apt-get update
apt-get install vim

2.3 修改配置⽂件

cd /etc/mysql
vim mysq.cnf

2.4 添加配置信息

[mysqld]
server-id=3307 ##⾃定义id号,不要重
log-bin=mysql-bin ##开启⼆进制⽇志

2.5 重新启动

service mysql restart
docker start mysql-master

2.6 查看master节点binlog状态

# 进⼊容器
docker exec -it mysql-master /bin/bash
# 连接mysql
mysql -uroot -p123456
# 查看binlog状态
show master status;

命令行登录mysql

2.7 记录File和Position信息

File表示主节点binlog⽇志⽂件的名称,Position表示数据的偏移量,表示从节点需要从mysqlbin.000002⽂件的10238位置开始同步数据。

File:mysql-bin.000002
Position10238

2.8 创建账号

我们需要在主节点创建⼀个账号⽤来给从库做主从复制,并且赋予权限。

grant replication slave on *.* to 'test'@'%' identified by '123456';
flush privileges;

三、从库搭建

从库搭建跟主库搭建的过程类似,主要区别就是配置⽂件不同以及需要建⽴主从同步连接这个操作。

grant replication slave on *.* to 'test'@'%' identified by '123456';
flush privileges;

1.运⾏从库实例镜像

docker run --name mysql-slave --privileged=true -v
/usr/local/docker/mysql/slave-data:/var/lib/mysql -p 3308:3306 -e
MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

2.mysql配置

2.1 进⼊容器

docker exec -it mysql-slave /bin/bash

2.2 下载vim

# 下载vim
apt-get update
apt-get install vim

2.3 修改配置⽂件

cd /etc/mysql
vim mysq.cnf

2.4 添加配置信息

[mysqld]
server-id=3308 ##id号,⾃定义,不要重就⾏
log-bin=mysql-slave-bin ##开启⼆进制⽇志功能
relay_log=edu-mysql-relay-bin ##配置中继⽇志

2.5 重新启动

service mysql restart
docker start mysql-master

2.6 配置master的连接

docker exec -it mysql-slave /bin/bash
mysql -u root -p123456
change master to master_host='192.168.3.101', master_user='test',
master_password='123456', master_port=3307, master_log_file='mysql-bin.000002',
master_log_pos=5288, master_connect_retry=30;

master_host是主节点的ip地址,也就是我本机的ip地址;master_user和master_password是主节点创
建的账号密码,⽤来主从复制使⽤;master_port是主节点的端⼝;master_log_file是主节点的binlog⽇
志⽂件名;master_log_pos是主节点binlog⽇志偏移量;master_connect_retry主从同步连接失败多久
重试。

2.7 查看连接状态

# \G是为了换⾏显示
show slave status \G;
# 停⽌主从复制
stop slave
# 开启
start slave;

查看IO和SQL线程
当Slave_IO_Running和Slave_SQL_Running都是Yes表示主从成功配置完成。

四、验证主从同步

使⽤mysql连接⼯具分别连接主库和从库,在主库中创建⼀个数据库,新建⼀张表,插⼊⼀条数据,然
后在从库中查看是否同步新增数据库、表和数据。
数据库连接

FAQ

⼀、主从同步Slave_IO_Running和Slave_SQL_Running为No.
如果是Slave_IO_Running为No,可以检查⼀下连接主节点的配置信息,ip、端⼝、⽤户名密码、权限、
binlog⽇志⽂件命令和偏移量等。
如果是Slave_SQL_Running为No,可以通过以下命令解决。

stop slave;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
start slave;

⼆、Docker启动mysql报错。
可以通过以下命令查看镜像命令进⾏排查。

docker logs --since 30m CONTAINER_ID
docker logs -f -t --tail ⾏数 容器名
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值