相比传统的架构设计,使用Docker来搭建数据库的主从模式更加简单。本节内容,我们就Docker搭建MySql主从模式来做一些了解,文中的搭建方法仅仅是一种最简单的方式,具体的业务场景还需要小伙伴们自行加固,本文仅做学习参考之用。
一、下载镜像文件
出于对系统的稳定性和减少部署麻烦,本文使用MySql5.7的版本来做演示。
docker pull mysql:5.7.25
二、运行容器实例
1、主库docker run -p 3306:3306 --name mysql-master -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.25
2、从库 docker run -p 3307:3306 --name mysql-slave -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.25
三、容器安装vim(文本编辑器)
因需要修改mysql中的my.cnf文件,所以安装vim来修改。当然你也可以使用其他方式来修改
/etc/mysql/my.cnf
这个配置文件。
1、进入容器实例内部控制终端docker exec -it 容器id/bin/bash
2、执行指令mv /etc/apt/sources.list /etc/apt/sources.list.bak
3、执行指令
echo "deb http://mirrors.tuna.tsinghua.edu.cn/debian/ buster main contrib non-free" >/etc/apt/sources.list
echo "deb http://mirrors.tuna.tsinghua.edu.cn/debian/ buster-updates main contrib non-free" >>/etc/apt/sources.list
echo "deb http://mirrors.tuna.tsinghua.edu.cn/debian/ buster-backports main contrib non-free" >>/etc/apt/sources.list
echo "deb http://mirrors.tuna.tsinghua.edu.cn/debian-security buster/updates main contrib non-free" >>/etc/apt/sources.list
4、执行指令 apt-get update
5、执行指令 apt-get install vim
6、在主库中执行show master status;
,记录一下File
字段的值和Position
字段的值。
7、在主库创建用户并赋予权限
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
8、cd到/etc/mysql/
目录下,执行 vim my.cnf
9、修改配置文件,添加如下配置
[mysqld]
server-id=1000
log-bin=mysql-bin
10、重启主库和容器
service mysql restart
docker start mymysql-master
11、修改从库配置文件并重启mysql
server-id=1001
log-bin=mysql-slave-bin
relay_log=edu-mysql-relay-bin
12、进入从库命令模式,执行如下指令
如果不清楚主库的容器ip,可以使用
docker inspect id/名称
来查看。正常情况下容器实例的ip其实是动态获取的,所以建议使用自定义网络来设置固定ip;
change master to master_host='172.17.0.4', master_user='slave', master_password='123456', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos= 617, master_connect_retry=30;
13、开启主从同步过程
在从库的mysql命令行中执行。
start slave
14、查看主从同步状态
show slave status \G
四、测试主从同步
PS:在主库中新建数据库,看从库是否能同步过来。
网友评论