Docker实现Mysql读写分离(主从同步)

本文详细介绍如何使用Docker搭建Mysql5.7的主从复制环境,并通过具体步骤实现读写分离。涵盖安装Docker、创建Mysql镜像、配置主从同步及测试过程。

概念

  • Mysql读写分离主要是通过主从数据库复制来实现,Mysql自带的二进制复制技术;
  • Mysql5.7与Mysql8操作稍有差别,Mysql8的授权模式有改动,需要先创建用户;
  • 实现主从同步后,使用MyCat等软件实现读写分离;
  • 使用Docker来模拟两台服务器,原理和使用2台不同IP的服务器一样;

安装Docker

  • 下载Docker Desktop https://www.docker.com/get-started,这个是有图形界面的Docker,可以省去很多命令操作,对系统有一定要求;
  • 直接安装即可;

拉取mysql

docker pull mysql:5.7
  • 在Docker Hub查看版本,本文使用5.7版本 https://hub.docker.com/_/mysql?tab=tags
    在这里插入图片描述

制作主从Mysql镜像

1. 任意位置创建2个文件夹,并分别创建DockerfileMy.cnf

在这里插入图片描述

  • Dockerfile – 打包配置文件
  • My.cnf – Mysql配置文件,这里修改好以后替换Mysql原有文件,也可以打包以后进入容器修改,但是Docker原生没有Vim编辑,需要更新源安装,但是速度很慢;

2. 编写Dockerfile

FROM mysql:5.7
COPY my.cnf /etc/mysql/  
EXPOSE 3306
CMD ["mysqld"]
  • master和slave相同
  • mysql:5.7 – 不写版本号5.7会拉取最新版Mysql,最新版的授权有变化,需修改授权方式

3. 编写My.cnf

master:

[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
secure-file-priv= NULL

# 新添加的在下面

#启用二进制,必须
log-bin=mysql-bin
#填写整数,每个数据库不同
server-id=1

slave:

[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
secure-file-priv= NULL

# 新添加的在下面

#启用二进制,必须
log-bin=mysql-bin
#填写整数,每个数据库不同
server-id=2
  • 更多配置参考
server-id=1   #任意自然数n,只要保证两台MySQL主机不重复就可以了。

log-bin=mysql-bin   #开启二进制日志

auto_increment_increment=2   #步进值auto_imcrement。一般有n台主MySQL就填n

auto_increment_offset=1   #起始值。一般填第n台主MySQL。此时为第一台主MySQL

binlog-ignore=mysql   #忽略mysql库【我一般都不写】

binlog-ignore=information_schema   #忽略information_schema库【我一般都不写】

replicate-do-db=aa   #要同步的数据库,不填默认所有库

# 配置好后重启MySQL
# https://www.cnblogs.com/phpstudy2015-6/p/6485819.html#_label7

4. 打包

  • master文件夹下
docker build -t master/mysql .
  • slave文件夹下
docker build -t slave/mysql .
  • . – 点代表本文件夹下所有,必写

  • 查看是否成功

在这里插入图片描述

创建主从Mysql容器

docker run -p 17717:3306 --name mysql-master -e MYSQL_ROOT_PASSWORD=123456 -d master/mysql
docker run -p 17718:3306 --name mysql-slave -e MYSQL_ROOT_PASSWORD
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值