linux企业运维--redis+nginx+php+mysql

**redis:**内存型数据库(数据放在内存 AOF:增量更新 RDB:覆盖),有持久化功能,具备分布式特性,可靠性高,适用于对读写效率要求都很高,数据处理业务复杂和对安全性要求较高的系统。
**mysql:**数据放在磁盘,是关系型数据库,主要用于存放持久化数据,
redis和mysql的区别总结
类型上:从类型上来说,mysql是关系型数据库,redis是缓存数据库;
作用上:mysql用于持久化的存储数据到硬盘,功能强大,但是速度较慢;redis用于存储使用较为频繁的数据到缓存中,读取速度快

框架

client (server6): MySQL进行update操作,触发trigger。触发器会调用用户自定义udf函数json_object(用于转换数据,因为mysql与redis数据不兼容),之后把数据发给gearman(gman_server_set、gman_do_background)
server +worker(server4) :1.gearmand,监听4730端口
2. 用户端自己写的代码test.php(作用:从gearmand中获取任务,同步server2的redis)。php要求支持两个模块:gearman模块和redis模块。test.php首先会通过php-gearman模块获取任务,再通过php-redis模块更新redis server,以完成redis的更新。

环境部署

redis master (server2) -----缓冲层

请添加图片描述
在这里插入图片描述
将server2还原为master
在这里插入图片描述
可以正常读写
在这里插入图片描述

mariadb (server6)-----后台

请添加图片描述

nginx+php gearmand (server4)----前端

在这里插入图片描述
在这里插入图片描述
删除之前的mysql

安装php-fpm

后面所有的安装包都与此php版本相配

在这里插入图片描述
安装此模块
在这里插入图片描述
在这里插入图片描述
修改时区
在这里插入图片描述

在这里插入图片描述
设置组和用户
在这里插入图片描述
发现错误,php-fpm不能正常启动
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
检查了一圈错误,发现没有用户
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
确认有没有安装gcc make openssl-devel pcre-devel
gcc文件中去掉debug
在这里插入图片描述

安装nginx

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

测验test.php

在这里插入图片描述
在这里插入图片描述
说明test.php,服务端有问题
要连接redis和数据库,就可以访问
在这里插入图片描述
在这里插入图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
想要测试test.php,三台机子必须各自开启请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
编写server4中的显示页面文件
请添加图片描述

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
先添加test1–10
用于测试
请添加图片描述
导入test.sql
请添加图片描述
请添加图片描述
在redis上可以看到存的数据
请添加图片描述
请添加图片描述
删除后,页面刷新会再从mysql加载一遍,然后是redis

目前我们想redis更改一两个数据,从数据库中只需刷新一个就行,不需要全部刷新

异步更新

修改一下mysql中的 ID=1的数据
请添加图片描述
但是redis并没有同步修改,只有redis中把旧数据删了,才会重新从mysql中获取新的数据
请添加图片描述

redis 和mysql同步

mysql想要将变更数据传给远端,需要:
1、转换成json的数据结构
2、发布到分布式的分发系统上面
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
把.c文件编译到.so文件中
请添加图片描述
请添加图片描述
将.so拷贝到插件目录
注册函数
请添加图片描述
请添加图片描述
编译到插件目录
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
注册udf函数
请添加图片描述

CREATE FUNCTION gman_do_background RETURNS STRING SONAME 'libgearman_mysql_udf.so';
CREATE FUNCTION gman_servers_set  RETURNS STRING SONAME 'libgearman_mysql_udf.so';

查看
请添加图片描述
请添加图片描述
指定gearman的服务信息
请添加图片描述

请添加图片描述
查看触发器
请添加图片描述
只要触发,就会通过gman_servers_set 发送到server4的4730端口。此端口相当于服务端,mysql提交给此端口,会继续下发给worker
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

测试

请添加图片描述
后台运行worker
请添加图片描述
请添加图片描述
始终是redis
请添加图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
运维项目经验是很宝贵的,以下是基于Nginx+Nacos+MySQL+Redis+RabbitMQ的运维项目经验: 1. Nginx Nginx是一款高性能的Web服务器和反向代理服务器。在运维过程中,需要对Nginx进行配置和监控,以确保其运行稳定。 - 配置 Nginx配置文件的路径为"/etc/nginx/nginx.conf",可以使用编辑器进行修改,如vi、nano等。在配置文件中,需要注意以下几点: - worker_processes:指定工作进程数,一般根据CPU核心数进行设置。 - pid:指定进程ID的存储路径。 - error_log:指定错误日志的存储路径。 - access_log:指定访问日志的存储路径。 - http:指定HTTP协议的配置项,如代理服务器、缓存等。 - server:指定服务器的配置项,如监听端口、域名等。 - 监控 可以使用Nginx自带的状态模块,通过访问"http://localhost:8080/nginx_status"来获取Nginx的状态信息。也可以通过第三方监控工具进行监控,如ZabbixGrafana等。 2. Nacos Nacos是一款开源的服务发现、配置管理和动态DNS解析系统。在运维过程中,需要对Nacos进行部署和配置,以确保其正常运行。 - 部署 Nacos的部署可以使用Docker、Kubernetes等容器化技术进行部署,也可以直接下载二进制包进行部署。在部署过程中,需要注意以下几点: - 需要占用的端口:Nacos默认使用8848端口。 - 数据库配置:Nacos需要使用MySQL或者MariaDB作为数据存储的后端,需要进行相关的数据库配置。 - 配置文件的修改:Nacos的配置文件位于conf目录下,可以根据实际情况进行修改。 - 配置 在Nacos中,需要进行以下配置: - 服务注册:通过Nacos的API,将需要注册的服务注册到Nacos中。 - 配置管理:将需要管理的配置文件上传到Nacos中,并设置相应的命名空间、数据ID和分组。 3. MySQL MySQL是一款流行的关系型数据库管理系统。在运维过程中,需要对MySQL进行配置和监控,以确保其运行稳定。 - 配置 MySQL的配置文件的路径为"/etc/my.cnf",可以使用编辑器进行修改,如vi、nano等。在配置文件中,需要注意以下几点: - port:指定MySQL的监听端口。 - bind-address:指定MySQL的监听地址。 - max_connections:指定MySQL的最大连接数。 - log-error:指定错误日志的存储路径。 - slow-query-log:指定慢查询日志的存储路径。 - 监控 可以使用MySQL自带的状态变量和性能指标,通过执行"SHOW STATUS"和"SHOW VARIABLES"语句来获取MySQL的状态信息。也可以通过第三方监控工具进行监控,如ZabbixGrafana等。 4. Redis Redis是一款高性能的内存数据库。在运维过程中,需要对Redis进行配置和监控,以确保其运行稳定。 - 配置 Redis的配置文件的路径为"/etc/redis/redis.conf",可以使用编辑器进行修改,如vi、nano等。在配置文件中,需要注意以下几点: - bind:指定Redis的监听地址。 - port:指定Redis的监听端口。 - daemonize:指定Redis是否以守护进程的方式运行。 - logfile:指定Redis的日志文件路径。 - maxclients:指定Redis的最大连接数。 - 监控 可以使用Redis自带的命令,如"INFO",来获取Redis的状态信息。也可以通过第三方监控工具进行监控,如ZabbixGrafana等。 5. RabbitMQ RabbitMQ是一款开源的消息队列系统。在运维过程中,需要对RabbitMQ进行部署和配置,以确保其正常运行。 - 部署 RabbitMQ的部署可以使用Docker、Kubernetes等容器化技术进行部署,也可以直接下载二进制包进行部署。在部署过程中,需要注意以下几点: - 需要占用的端口:RabbitMQ默认使用5672端口。 - 用户名和密码:在RabbitMQ中,需要使用用户名和密码进行身份验证,需要进行相应的用户配置。 - 配置 在RabbitMQ中,需要进行以下配置: - 队列的创建:通过RabbitMQ的API,创建需要使用的队列。 - 交换机的创建:通过RabbitMQ的API,创建需要使用的交换机。 - 路由键的绑定:通过RabbitMQ的API,将队列和交换机进行绑定,并指定相应的路由键。 总体来说,基于Nginx+Nacos+MySQL+Redis+RabbitMQ的运维项目经验需要对以上组件进行深入理解和熟练掌握,才能更好地进行运维管理。在实践中,需要不断积累经验和总结,以便能够更好地应对各种问题和挑战。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值