docker下进行mysql主从配置实现thinkphp读写分离

写在前面

在上篇 docker环境下搭建PHP网站,实现nginx负载均衡和mysql主从配置中我们使用docker搭建了1台负载均衡器,2个web服务器和两个主、从数据库服务器 实现了nginx负载均衡访问网站web服务器

接下来我们看一下如何进行mysql数据库主从配置和读写分离,数据库服务器的搭建部分请看上篇

mysql主从配置

修改主数据库服务器配置文件

sudo vim /data/mysql/mysql_master/conf.d/docker.cnf

写入内容

[mysqld]

server-id = 1
log-bin=master-bin
log-bin-index=master-bin.index

修改从数据库服务器配置文件

sudo vim /data/mysql/mysql_salve/conf.d/docker.cnf

写入内容

[mysqld]

server-id = 2
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin

修改完成之后,进行容器重启
docker restart mysql_master mysql_salve
进入mysql_master主数据库服务器容器内部
docker exec -it mysql_master bash
切换到mysql命令行界面
mysql -uroot -p123456

在master数据库(主库)中创建同步用户授予用户slave REPLICATION SLAVE权限和REPLICATION CLIENT权限,用于在主从库之间同步数据。

create user 'myslave'@'%' identified by '123456';
grant all privileges on *.* to 'myslave'@'%' with grant option;
exit;
mysql -u myslave -p123456 -h 192.168.0.111 -P8114 --get-server-public-key

然后输入命令show master status;获取如下两个参数
image.png

获取到之后来到从数据库服务器操作
进入mysql_slave主数据库服务器容器内部
docker exec -it mysql_slave bash
切换到mysql命令行界面
mysql -uroot -p123456

change master to master_host='192.168.0.111',master_port=8114, master_user='myslave',master_password='123456',master_log_file='master-bin.000001',master_log_pos=157;
start slave;

此处的参数来自主数据库服务器指出来的参数

image.png

完成之后输入show slave status\G 注意没有; 进行查看是否成功
image.png

此处为yes即代表成功配置

接下来我们进行测试,首先在主数据库服务器创建一个数据库
create database test_1;
image.png
创建成功后来到从数据库服务器,查看是否进行了数据复制
image.png

可以看到,实现了从主库到从库的数据同步

读写分离

实现了主从配置后就可以进行读写分离操作了
以thinkphp5为例

修改.env文件
image.png
database.php 配置文件
image.png

1 声望
0 粉丝
0 条评论
推荐阅读
花了半个小时基于 ChatGPT 搭建了一个微信机器人
相信大家最近被 ChatGPT 刷屏了,其实在差不多一个月前就火过一次,不会那会好像只在程序员的圈子里面火起来了,并没有被大众认知到,不知道最近是因为什么又火起来了,而且这次搞的人尽皆知。

Java极客技术12阅读 3.7k评论 3

封面图
张晋涛:我的 2022 总结
大家好,我是张晋涛。2022 年已经结束,我每年都会惯例的做个小回顾,今年因为阳了在恢复身体,一直拖到了今天才写。生活在 2022 年初做回顾的时候,觉得 2021 是魔幻的一年,但现在看来 2022 年其实更加魔幻。一...

张晋涛6阅读 1.1k评论 2

封面图
利用Docker部署管理LDAP及其初次使用
前言:本周主要写了gitlabWebhook转github的项目,总体上没有遇到什么大问题,这周接触到了LDAP,于是就花时间实际操作了解了一下。

李明5阅读 1.3k

Docker学习:Image的本地存储结构
在使用Docker时候,针对镜像的操作一般就是docker pull,docker build,docker commit(刚开始接触Docker的时候,还不会Dockerfile,经常使用这个命令,但是经历了一次血的教训,已经放弃这个命令很久)这些操作...

backbp4阅读 10k评论 3

使用docker快速搭建xssPlatform测试平台实践
笔者之前给一些开发团队多次做Web安全开发培训,为了让培训的学员能够理解XSS原理和XSS的危害,将xssPlatform进行了更新,之前一直放在GitHub中;发现关注的人越来越多,很多人在安装的过程中遇到问题不知道怎么...

汤青松1阅读 26.2k

将node.js 应用构建成docker镜像
本文内容:将node.js 应用构建成dokcer镜像, 并上传到阿里云创建 Node.js 应用1.首先,创建一个 package.json 文件,描述你应用程序以及需要的依赖: {代码...} 2.运行 npm install这会自动生成一个 package-lock...

weiweiyi3阅读 741

突破难关:Docker镜像和容器的区别以及构建的最佳实践
Docker 可谓是开启了容器化技术的新时代,现在无论大中小公司基本上都对容器化技术有不同程度的尝试,或是已经进行了大量容器化的改造。伴随着 Kubernetes 和 Cloud Native 等技术和理念的普及,也大大增加了业务...

张晋涛4阅读 416

封面图
1 声望
0 粉丝
宣传栏