首页
技术分享
主题插件
友情链接
关于我们
直播大厅
更多
壁纸大厅
Search
1
开发者必看!超全免费开发必备资源库大集合
15 阅读
2
docker下进行mysql主从配置实现thinkphp读写分离
12 阅读
3
node开发环境(mac)和线上环境(linux)搭建
10 阅读
4
docker环境下搭建PHP网站,实现nginx负载均衡和mysql主从配置
8 阅读
5
Wordpress插件-AI一键补充文章标题,关键字,文章描述,导语和结语
7 阅读
登录
Search
标签搜索
docker
主从复制
读写分离
负载均衡
nodejs
liunx
ios
thinkphp
nginx
Wordpress插件
Mayh博客
累计撰写
10
篇文章
累计收到
17
条评论
首页
栏目
技术分享
主题插件
页面
Warning
: Invalid argument supplied for foreach() in
/www/wwwroot/mayh.msgo.ink/usr/themes/Joe/public/header.php
on line
336
技术分享
主题插件
友情链接
关于我们
直播大厅
壁纸大厅
搜索到
2
篇与
的结果
2022-12-22
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写入内容{callout color="#f0ad4e"}[mysqld]server-id = 1log-bin=master-binlog-bin-index=master-bin.index{/callout}修改从数据库服务器配置文件sudo vim /data/mysql/mysql_salve/conf.d/docker.cnf写入内容{callout color="#f0ad4e"}[mysqld]server-id = 2relay-log-index=slave-relay-bin.indexrelay-log=slave-relay-bin{/callout}修改完成之后,进行容器重启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;获取如下两个参数获取到之后来到从数据库服务器操作进入mysql_slave主数据库服务器容器内部docker exec -it mysql_slave bash切换到mysql命令行界面mysql -uroot -p123456change 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;此处的参数来自主数据库服务器指出来的参数完成之后输入show slave status\G 注意没有; 进行查看是否成功此处为yes即代表成功配置接下来我们进行测试,首先在主数据库服务器创建一个数据库create database test_1;创建成功后来到从数据库服务器,查看是否进行了数据复制可以看到,实现了从主库到从库的数据同步读写分离实现了主从配置后就可以进行读写分离操作了以thinkphp5为例修改.env文件database.php 配置文件
2022年12月22日
12 阅读
2 评论
0 点赞
2022-12-22
docker环境下搭建PHP网站,实现nginx负载均衡和mysql主从配置
一、基本概念负载均衡大型网站都要面对庞大的用户量,高并发,海量数据等挑战。为了提升系统整体的性能,尽力将网络流量平均分发到多个服务器上,以提高系统整体的响应速度和可用性主从配置主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库。在赋值过程中,一个服务器充当主服务器,而另外一台服务器充当从服务器。简单来说,数据库主从配置是为了解决读写分离,从而提高数据库性能的一种优化方式。读写分离大多数互联网业务,往往读多写少,这时候,数据库的读会首先称为数据库的瓶颈,这时,如果我们希望能够线性的提升数据库的读性能,消除读写锁冲突从而提升数据库的写性能,那么就可以使用“分组架构”(读写分离架构)二、实现原理如上图所示,用户访问网站,首先由负载均衡器接收,然后根据负载均衡算法,将流量均衡的分配给代理的web服务器以平衡各个服务器的负载压力,此时用户访问数据库时,通过读写分离分配给不同的服务器,当有写入操作时,主服务器通过复制的方式将数据同步到从服务器,从而实现主从服务器的数据统一。三、环境搭建了解完基本概念和实现原理后我们开始进行实验环境搭建,我们需要有1个负载均衡服务器,2个web应用服务器,2个数据库服务器。实验环境为树莓派4B1、docker安装和国内镜像配置curl -sSL https://get.daocloud.io/docker | shsudo yum-config-manager \ --add-repo \ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo2、镜像拉取拉取nginx镜像docker pull nginx:latest拉取mysql镜像docker pull mysql:latest3、启动容器首先我们创建均衡服务器容器,映射容器80端口到宿主机8111端口上,把容器/etc/nginx/conf.d目录挂载到宿主机/data/nginx/conf.d目录docker run --name nginx_balance -p 8111:80 -v /data/nginx/conf.d/:/etc/nginx/conf.d/ -itd nginx再创建两个web服务器容器来承载业务,映射出8112和8113端口docker run --name nginx_web1 -p 8112:80 -itd nginx docker run --name nginx_web2 -p 8113:80 -itd nginx最后再创建两个mysql服务器容器docker run -p 8114:3306 --name mysql_master -v /data/mysql/mysql_master/conf.d/:/etc/mysql/conf.d/ -e MYSQL_ROOT_PASSWORD=123456 -itd mysql docker run -p 8115:3306 --name mysql_salve -v /data/mysql/mysql_salve/conf.d/:/etc/mysql/conf.d/ -e MYSQL_ROOT_PASSWORD=123456 -itd mysql创建完成之后通过docker ps命令查看创建的容器列表4、web服务器和负载均衡服务器配置修改nginx_web1 和 nginx_web2 服务器默认nginx输出页面来用来区分负载均衡服务器访问了哪个web服务器修改web服务器默认页面进入nginx_web1容器内部,修改默认页面内容docker exec -it nginx_web1 bash root@e94a6acc59fc:/# cd /usr/share/nginx/html/ root@e94a6acc59fc:/usr/share/nginx/html# rm index.html root@e94a6acc59fc:/usr/share/nginx/html# echo hello nginx_web1 ninetySeven > index.html root@e94a6acc59fc:/usr/share/nginx/html# exit 再进入nginx_web2容器内部修改默认页面内容docker exec -it nginx_web2 bash root@e94a6acc59fc:/# cd /usr/share/nginx/html/ root@e94a6acc59fc:/usr/share/nginx/html# rm index.html root@e94a6acc59fc:/usr/share/nginx/html# echo hello nginx_web2 ninetySeven > index.html root@e94a6acc59fc:/usr/share/nginx/html# exit 负载均衡服务器配置修改负载均衡默认nginx配置,因为我们对容器进行了文件挂载,所以直接在宿主机上改动sudo vim /data/nginx/conf.d/default.conf修改内容如下upstream ces { #server 服务ip地址:端口号 weight表示权值,权值越大,被分配的几率越大; server 192.168.0.111:8112 weight=1; server 192.168.0.111:8113 weight=1; } server { listen 80; listen [::]:80; location / { proxy_pass http://ces; } }修改完成之后重启容器docker restart nginx_web1 nginx_web2 nginx_balance 重启完成之后,我们通过浏览器访问 192.168.0.111:8111 来查看结果至此负载均衡配置完成,接下来进行数据库主从配置和读写分离,点击查看下篇docker下进行mysql主从配置实现thinkphp读写分离
2022年12月22日
8 阅读
4 评论
0 点赞