原创

docker搭建mysql主从数据库

温馨提示:
本文最后更新于 2023年03月08日,已超过 587 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

闲来无事,想到我的博客为什么首页访问这么慢呢?查看sql吧,执行也不是很慢,代码本地运行发现速度嗖嗖的,最后可能一个原因就是项目部署地址和数据库没在同一个服务器,但是也不应该啊。算了,反正主从数据库没玩过,今天就玩一玩。

1. 拉镜像

https://hub.docker.com/在dockerhub查找mysql的镜像
file
像这个就是mysql8版本最高的,直接复制命令在服务器执行即可,前提是你有服务器且安装了docker
docker pull mysql
file
查看镜像 docker images
file

2. 创建主从数据库容器

docker run -itd --name mysql-master -p 3307:3306 -e MYSQL_ROOT_PASSWORD=master123456 mysql

file

docker run -itd --name mysql-slave -p 3308:3306 -e MYSQL_ROOT_PASSWORD=slave123456 mysql

file

3. 测试连接

使用navicat工具连接
如果测试联不上指定是没关防火墙,如果是云服务器就需要在服务商后台安全组中配置端口规则,放行你所开的两个端口,如果装有宝塔面板的话,还需要在宝塔中放行
file

主数据库

file

从数据库

file

4. 在主数据库中创建用于从库访问的用户

create user 'backup'@'%' IDENTIFIED by 'backup123456';
GRANT REPLICATION SLAVE,replication client ON *.* TO 'backup'@'%';

file

5. 修改配置文件

5.1 修改master的配置文件

在宿主机中创建一个配置文件
vim master.cnf
file
ESC :wq保存

将宿主机中的配置文件复制到master容器中

docker cp master.cnf mysql-master:/etc/mysql/conf.d/master.cnf

进入容器查看 docker exec -it mysql-msater bash
file

5.2 修改slave的配置文件

退出到宿主机中将刚才的文件复制一份重命名为slave.cnf
file
编辑文件中的serve-id server-id一定要不一样,就和你的身份证一样
file
继续复制配置文件到容器

docker cp slave.cnf mysql-slave:/etc/mysql/conf.d/slave.cnf

进入到容器查看

docker exec -it mysql-slave bash

file

6. 重启两个容器

file

7. 从数据库配置主数据库

进入到master数据库中,执行 show master status;记住File和Position
file

CHANGE MASTER TO
MASTER_HOST='192.168.1.239',    --宿主机ip
MASTER_PORT=3307,   --mysql-master映射到宿主机的端口
MASTER_USER='backup',
MASTER_PASSWORD='backup123456',
MASTER_LOG_FILE='mysql-bin.000001', --上边记住的File
MASTER_LOG_POS=533; --上边记住的Position

START SLAVE;

file

8. 查看状态

show slave status
file
看到Slave_IO_Running 和 Slave_SQL_Running都是Yes即可
到此配置成功,验证一下
主数据库新建一个数据库dblog 发现从数据库自动创建好了
file

9. 完成

正文到此结束
本文目录