MySQL高级篇-2-MySQL的数据目录
MySQL 8 的主要目录结构1find / -name mysql
数据库文件的存放路径 MySQL数据库文件的存放路径:/var/lib/mysql/
1show variables like 'datadir';
相关命令目录相关命令目录:/usr/bin(mysqladmin、mysqlbinlog、mysqldump等命令)和/usr/sbin。
配置文件目录 配置文件目录:/usr/share/mysql-8.0(命令及配置文件),/etc/mysql(如my.cnf)
数据库和文件系统的关系查看默认数据库1SHOW DATABASES;
数据库
说明
mysql
MySQL 系统自带的核心数据库,它存储了MySQL的用户账户和权限信息,一些存储过程、事件的定 义信息,一些运行过程中产生的日志信息,一些帮助信息以及时区信息等。
information_schema
MySQL 系统自带的数据库,这个数据库保存着MySQL服务器 维护的所有其他数据库的信息 ,比如有 哪些表、哪些视图、哪些触发器、哪些列、哪些索引。这些信息并 ...
Redis-5-高级篇-最佳实践
Redis键值设计优雅的key结构
建议规范
遵循基本格式:[业务名称]:[数据名]:[id]
长度不超过44字节
不包含特殊字符
例如:我们的登录业务,保存用户信息,其key可以设计成如下格式:
设计的好处:
可读性强
避免key冲突
方便管理
更节省内存
拒绝BigKeyBigKey通常以Key的大小和Key中成员的数量来综合判定,例如:
Key本身的数据量过大:一个String类型的Key,它的值为5 MB
Key中的成员数过多:一个ZSET类型的Key,它的成员数量为10,000个
Key中成员的数据量过大:一个Hash类型的Key,它的成员数量虽然只有1,000个但这些成员的Value(值)总大小为100 MB
redis给我们提供了命令判断元素的大小
推荐值:
单个key的value小于10KB
对于集合类型的key,建议元素数量小于1000
BigKey的危害
网络阻塞:对BigKey执行读请求时,少量的QPS就可能导致带宽使用率被占满,导致Redis实例,乃至所在物理机变慢
数据倾斜:BigKey所在的Redis实例内存使用率远超其他实例,无 ...
MySQL高级篇-1-Linux下的安装和使用
安装前检查
查看是否安装过 MySQL
如果你是用 rpm 安装, 检查一下 RPM PACKAGE:
1rpm -qa | grep -i mysql # -i 忽略大小写
检查 mysql service:
1systemctl status mysqld.service
如果存在 mysql-libs 的旧版本包,显示如下:
如果不存在 mysql-lib 的版本,显示如下:
MySQL 的卸载
关闭 mysql 服务
1systemctl stop mysqld.service
查看当前 mysql 安装状况
123rpm -qa | grep -i mysql# 或yum list installed | grep mysql
卸载上述命令查询出的已安装程序
1yum remove mysql-xxx mysql-xxx mysql-xxx mysqk-xxxx
务必卸载干净,反复执行 rpm -qa | grep -i mysql确认是否有卸载残留
删除 mysql 相关文件
1234# 查找相关文件find / -name ...
Redis-4-高级篇-多级缓存
多级缓存传统的缓存策略一般是请求到达 Tomcat 后,先查询 Redis,如果未命中则查询数据库,如图:
存在问题
请求要经过 Tomcat 处理,Tomcat 的性能成为整个系统的瓶颈
Redis 缓存失效时,会对数据库产生冲击
多级缓存就是充分利用请求处理的每个环节,分别添加缓存,减轻 Tomcat 压力,提升服务性能:
浏览器访问静态资源时,优先读取浏览器本地缓存
访问非静态资源(ajax查询数据)时,访问服务端
请求到达 Nginx 后,优先读取 Nginx 本地缓存
如果 Nginx 本地缓存未命中,则去直接查询 Redis(不经过 Tomcat)
如果 Redis 查询未命中,则查询 Tomcat
请求进入 Tomcat 后,优先查询 JVM 进程缓存
如果 JVM 进程缓存未命中,则查询数据库
在多级缓存架构中,Nginx 内部需要编写本地缓存查询、Redis 查询、Tomcat 查询的业务逻辑,因此这样的 nginx 服务不再是一个反向代理服务器,而是一个编写业务的Web服务器了。
因此这样的业务Nginx服务也需要搭建集群来提高并发,再有专门 ...
Redis-0-安装篇
单机安装Redis
安装Redis所需要的依赖:
1yum install -y gcc tcl
将Redis安装包上传到虚拟机的任意目录并解压缩:
1tar -xzf redis-6.2.4.tar.gz
进入redis目录:
1cd redis-6.2.4
运行编译命令:
1make && make install
如果没有出错,应该就安装成功。然后修改redis.conf文件中的一些配置:
123456# 绑定地址,默认是127.0.0.1,会导致只能在本地访问。修改为0.0.0.0则可以在任意IP访问bind 0.0.0.0# 保护模式,关闭保护模式protected-mode no# 数据库数量,设置为1databases 1
启动Redis:
1redis-server redis.conf
停止redis服务:
1redis-cli shutdown
Redis主从集群
集群结构
搭建的主从集群:
共包含三个节点,一个主节点,两个从节点。在同一台虚拟机中开启3个redis实例,模拟主从集群,信息如下:
IP
PORT
角 ...
Redis-3-高级篇-分布式缓存
单机的 Redis 存在四大问题:
数据丢失问题(解决方案:实现 Redis 数据持久化)
并发能力问题(解决方案:搭建主从集群,实现读写分离)
存储能力问题(解决方案:搭建分片集群,利用插槽机制实现动态扩容)
故障恢复问题(解决方案:利用 Redis 哨兵,实现健康检测和自动恢复)
Redis 持久化RDB 持久化RDB 全称 Redis Database Backup file(Redis数据备份文件),也被叫做 Redis 数据快照。简单来说就是把内存中的所有数据都记录到磁盘中。当 Redis 实例故障重启后,从磁盘读取快照文件,恢复数据。快照文件称为 RDB 文件,默认是保存在当前运行目录。
执行时机RDB 持久化在四种情况下会执行:
执行 save 命令:save 命令会导致主进程执行 RDB,这个过程中其它所有命令都会被阻塞。只有在数据迁移时可能用到。
执行下面的命令,可以立即执行一次 RDB
执行 bgsave 命令:这个命令执行后会开启独立进程完成 RDB,主进程可以持续处理用户请求,不受影响。
下面的命令可以异步执行 RDB:
停机时:Redis停机时会 ...











