docker搭建mysql主从数据库
温馨提示:
本文最后更新于 2023年03月08日,已超过 587 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我。
闲来无事,想到我的博客为什么首页访问这么慢呢?查看sql吧,执行也不是很慢,代码本地运行发现速度嗖嗖的,最后可能一个原因就是项目部署地址和数据库没在同一个服务器,但是也不应该啊。算了,反正主从数据库没玩过,今天就玩一玩。
1. 拉镜像
https://hub.docker.com/
在dockerhub查找mysql的镜像
像这个就是mysql8版本最高的,直接复制命令在服务器执行即可,前提是你有服务器且安装了dockerdocker pull mysql
查看镜像 docker images
2. 创建主从数据库容器
docker run -itd --name mysql-master -p 3307:3306 -e MYSQL_ROOT_PASSWORD=master123456 mysql
docker run -itd --name mysql-slave -p 3308:3306 -e MYSQL_ROOT_PASSWORD=slave123456 mysql
3. 测试连接
使用navicat工具连接
如果测试联不上指定是没关防火墙,如果是云服务器就需要在服务商后台安全组中配置端口规则,放行你所开的两个端口,如果装有宝塔面板
的话,还需要在宝塔中放行
主数据库
从数据库
4. 在主数据库中创建用于从库访问的用户
create user 'backup'@'%' IDENTIFIED by 'backup123456';
GRANT REPLICATION SLAVE,replication client ON *.* TO 'backup'@'%';
5. 修改配置文件
5.1 修改master的配置文件
在宿主机中创建一个配置文件vim master.cnf
ESC :wq
保存
将宿主机中的配置文件复制到master容器中
docker cp master.cnf mysql-master:/etc/mysql/conf.d/master.cnf
进入容器查看 docker exec -it mysql-msater bash
5.2 修改slave的配置文件
退出到宿主机中将刚才的文件复制一份重命名为slave.cnf
编辑文件中的serve-id
server-id一定要不一样,就和你的身份证一样
继续复制配置文件到容器
docker cp slave.cnf mysql-slave:/etc/mysql/conf.d/slave.cnf
进入到容器查看
docker exec -it mysql-slave bash
6. 重启两个容器
7. 从数据库配置主数据库
进入到master数据库中,执行 show master status;
记住File和Position
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;
8. 查看状态
show slave status
看到Slave_IO_Running 和 Slave_SQL_Running都是Yes即可
到此配置成功,验证一下
主数据库新建一个数据库dblog 发现从数据库自动创建好了
9. 完成
正文到此结束
- 本文标签: 部署
- 本文链接: https://blog.wangqi2020.top/article/44
- 版权声明: 本文由王祁原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权