目录
一.MySQL主从复制
主MySQL服务器做的增删改,都会写入自己的二进制日志(Binary log),然后从MySQL服务器打开自己的I/O线程连接主服务器,进行读取主服务器的二进制日志,备份写入到从服务器的中继日志(Relay log)当中,然后从服务器打开SQL线程,将中继日志中的数据重放到自己的服务器中,复制完成。
先复制一份表,做为临时表,保存在内存中,给与用户修改,当事务提交后,再将内存中的临时表数据修改、保存到磁盘中I/o sql线程主要用于主从复制
增删改查中查询和写入→消耗线程资源(是一种连接机制) mysql的线程池处理能力较差→多线程处理能力不够→并发处理能力不够→线程/任务处理能力进行优化redis + MQ
二.MHA
2.1原理
基于二进制日志故障备份+基于VIP的健康检查+故障自动切换(master→backup master)
2.2如何搭建MHA
① 首先搭建主从复制
② 软连接(一条是做MySQL命令,mysqlbinlog 软连接)
③ ssh 免交互
④ manager 提权
以上是MySQL集群的操作
node组件
在所有服务器上优先部署
→ 抢救
→ 同步中继日志
→ 在mha节点上的node组件还会汇总其他node组件的信息,用于将详细信息提供给Manager组件
manager
→ 维护mysql集群信息
→ 健康检查+故障切换
核心的配置文件 2个
master_ip_failover → VIP +VIP所在的虚拟接口,如下:
my $vip ='192.168.226.200'; #浮动IP
my $ifdev='ens33' ; #使用的网卡为ens33
my $key='1'; #虚拟接口
app1.cnf
定义了mysql节点的主机(以server的方式来表示)
定义了从节点信息
可定义主备服务器(需要忽略检查策略)
→ 执行两个健康检查+启动MHA
→ 首次启动时,在master节点创建VIP
三.Linux五大负载
3.1CPU
排查cPU负载过高+CPü怎么看负载过大,多少的数值算是负载,多少算为高负载
→ CPU 占用过高 →进程级别
→ CPU 使用百分比 →哪个CPU 压力过高
3.2内存
内存使用过高,内存溢出out memory 怎么解决 → 内存过高的话,内存中的数据是否可以删除,如
何减缓压力,如何持久化后,再清理,如何选择性的清理内存中的数据 → redis
3.3 I/O
→ I/0负载过高,如何定义I/o的负载,read 和write速率或者压力是多大,多少算是负载
3.4磁盘容量
如何定位磁盘容量使用最高的目录/文件位置
→引申出:如果我的磁盘负载过高了,在定位到磁盘负载最高的文件/目录后,执行了删除(如何删除)删除后的话,发现磁盘的容量大小,没有发生变化,是什么原因?(inode号排除,进阶:排除进程占用)
3.5网络
防火墙、linux防火墙策略 、DNS 解析 → 假设我在网上申请了一个域名www.cat.com,发现无法进行解析,是啥情况 → 换一个DNS服务端,是解决方式之一、配置的安全组(云上)、防火墙的选择WAF防火墙,第三方的网络插件,使用的协议TCP为例
TCP协议中:重传机制
四.TCP协议
4.1TCP介绍
TCP/IP协议簇:指TCP和IP协议对应的通信协议
TCP/IP在数据包设计中使用了封装和分用的策略
封装:应用程序发送数据的过程中,每层都增加了一些首部信息,用于发送方与接收方这一层次进行交互
分用:对于不同通信、交互方式使用了不同的协议规范
TCP重要的机制:三次握手、四次挥手
为什么要三次握手:为了防止已失效的连接延迟后连接到server端,当server端收到请求后,会误认为是新建连接,然后会向Client端发送ACK建立连接,而Client端已经放弃了此次请求,也并不会向Server端发送数据,如此,server端就会浪费很多资源,所以第三次握手是为了解决这个问题,而如果为四次挥手的话再次确认会浪费资源
4.2TCP与UDP比较
直观意义而言,TCP就是有校验的UDP
比较而言:
TCP面向连接、UDP无连接
UDP(无连接)︰协议不能保证准确无误的传递到目的地,所以一般在短消息、或数据重要性较低的传输方式会使用到UDP
TCP(面向连接)︰目的为提高可靠的数据传输,建立虚拟连接是其特性,在数据包接受无序、丢失或者在交付期间被破坏时,负责数据恢复。通过给每个数据包绑定一个序列号来完成恢复
为了保证正确的接受数据,TCP要求在目标计算机成功收到数据时发回一个确认(ACK),如指定时限内美誉偶收到、则会重新传送数据包,若网络拥塞,重传机制会导致数据包重复,因序列号相同,所以接收端可以据此确定数据句是否为重复,可以活时丢弃
TCP逻辑通信信道为全双工可靠信道、UDP是不可靠信道
同时,这也是为什么三次握手的解释
五.内核
TCP控制
转发的控制
重定向
内存使用、分配
CPU使用、分配
端口使用范围
连接数
六.Nginx
Nginx使用的资源:
CPU
内存
磁盘容量
I/O
网络 → QOS → 工具优化 → 防火墙、流量清洗(重复流量筛选/过滩,可以由第三方软件/服务来完成,大数据),以上指的是连接的效率,以下指的是安全 → DDOS、CC、等等WAF防火墙→渗透、网络安全体系
→Nginx中返回各种服务端的状态码5XX
→配置文件
多台nginx一起组合
一种类型的nginx会做为反向代理使用
另一种Nginx类型,会做为专门的图片加载工具→ 内存/缓存型数据库
mysql
先复制一份表,做为临时表,保存在内存中,给与用户修改,当事务提交后,再将内存中的临时表数据修改、保存到磁盘中I/o sql线程主要用于主从复制
增删改查中查询和写入→消耗线程资源(是一种连接机制) mysql的线程池处理能力较差→多线程处理能力不够→并发处理能力不够→线程/任务处理能力进行优化redis + MQ
磁盘(固态SCSI 机械):RAID、LVM、quota
CPU:
划分CPU 资源比例
CPU 亲和NICE指优先级
10个
Nginx → 8个CPU
2个