1.加电
2.加载bios设置
3.加载grub
4. 加载内核系统到内存中
5.加载配置文件
6.加载内核模块
7.完成相应初始化工作和启动相应服务
8.启动系统进程
9.出现登录界面
10.开机自启动完成
1、 查看版本
cat /etc/redhat-release
2.查看内核版本
uname -a
uname -r
uptime top
free -m
raid0 ---数据条带卷
最少需要两块磁盘,分别往每一块磁盘上写一部分数据
优点:
1.读写速度快,
2.磁盘利用率:100%
缺点:不提供数据冗余,无数据检验,不能保证数据的正确性,存在单点故障。
应用场景:
1)对数据完整性要求不高的场景,如:日志存储,个人娱乐
2)要求读写效率高,安全性能要求不高,如图像工作站
============================================================================
raid1 又叫镜像raid,通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互为备份的数据。
一般需要两块磁盘,每块磁盘上都会存储一份完整数据。其数据安全性就会较高,但是磁盘空间利用率是比较低的。
优点:提供数据冗余,数据双倍存储安全性高支持容错。读速度快
缺点:写速度慢,无数据校验。磁盘利用率不高
磁盘利用率:50%
应用场景:
存放重要数据,如数据存储领域
===========================================================
raid5:RAID5应该是目前最常见的 RAID 等级,它的校验数据分布在阵列中的所有磁盘上。RAID5的磁盘上同时存储数据和校验数据。当一个数据盘损坏时,系统可以根据其他数据块和对应的校验数据来重建损坏的数据。
raid5最少需要3块磁盘。
优点:
1.可以找回丢失的数据---数据可以通过校验计算得出,
2.冗余磁盘-->(需要4快磁盘将其中一块做热备)当某一块磁盘坏掉后,冗余磁盘会自动替换上去
3.有校验机制
4.读写速度高
5.磁盘利用率高
缺点:
1.磁盘越多安全性能越差
#定义:
RAID 5是RAID 0和RAID 1的折中方案。RAID 5具有和RAID0相近似的数据读取速度,只是多了一个校验信息。RAID5的磁盘空间利用率要比RAID 1高,存储成本相对较低,是目前运用较多的一种解决方案。
应用场景:安全性高,如金融、数据库、存储等。
==================================================
raid6:RAID6 等级是在 RAID5 的基础上为了进一步增强数据保护而设计的一种 RAID 方式。
RAID6引入双重校验的概念,最少需要四块磁盘,它可以保护阵列中同时出现两个磁盘失效时,阵列仍能够继续工作,不会发生数据丢失。
优点:
1.容错:允许两块磁盘同时坏掉。读写快。
2.良好的随机读性能
3.有校验机制
缺点:
1.写入速度差
2.成本高
应用场景:对数据安全级别要求比较高的企业
===============================================
RAID10:先做镜像再作条带--也叫混合raid
优点:
1.较高的IO性能
2.有数据冗余
3.无单点故障
4.安全性能高
缺点:成本稍高
应用场景:
特别适用于既有大量数据需要存取,同时又对数据安全性要求严格的领域,如银行、金融、商业超市、仓储库房、各种档案管理等。
软链接可以跨文件系统,硬链接不可以;
- 软链接可以对目录进行连接,硬链接不可以;
- 删除源文件之后,软链接失效,硬链接无影响;
- 软连接有不同的inode号,硬链接相同的inode号;
- 两种链接都可以通过命令 ln 来创建;
1.用户在Web浏览器中输入“www.example.com”,浏览器先检查自身缓存中有没有解析过的这个域名对应的ip地址,如果有,解析结束.如果浏览器没有缓存,那么就检查操作系统的hosts文件,称为本地解析,比如windows就是C:\Windows\System32\drivers\etc\hosts文件,linux在/etc/hosts文件中配置。如果命中域名解析结束。如果没有命中域名解析,浏览器会向本地的DNS服务器查询,如果命中域名解析就结束。
2. 如果本地DNS服务器没有命中域名解析,那么本地DNS服务器采用递归查询的方法,向根域名服务器进行查询。
3. 根域名服务器开启迭代查询方法告诉本地域名服务器,下一步应该查询的顶级域名服务器.com TLD的IP地址
4. 本地域名服务器向顶级域名服务器.com TLD进行查询
5. .com TLD服务器告诉本地域名服务器,下一步查询example.com权威域名服务器的IP地址
6. 本地域名服务器向example.com权威域名服务器发送查询
7. example.com权威域名服务器告诉本地域名服务器所查询的主机IP地址
8. 本地域名服务器最后把查询的IP地址响应给web浏览器
- 一旦DNS查询的8个步骤返回了example.com的IP地址,浏览器就能够发出对网页的请求:
9. 浏览器向IP地址发出HTTP请求
10. 该IP处的web服务器返回要在浏览器中呈现的网页
原子性(Atomicity):最小单位,不可分割
一致性(Consistency):sql语句,要么全部成功,要么全部失败
隔离性(Isolatio >):各个事务互不干扰
持续性(Durability):事务提交后,数据改变会记录在磁盘中
Mysql在V5.1之前默认存储引擎是MyISAM;在此之后默认存储引擎是InnoDB
MyISAM不支持事务,而InnoDB支持
InnoDB支持数据行锁定,MyISAM不支持行锁定,只支持锁定整个表
InnoDB支持外键,MyISAM不支持
Innodb能存储64TB,MyISAM能存储256TB
InnoDB不支持全文索引,而MyISAM支持
MyISAM支持GIS数据,InnoDB不支持
1. 选择合适的存储引擎: InnoDB
2. 选取磁盘读写速度较快的设备作为Mysql服务器
3. 充分使用索引
4. 增加慢查询日志功能 redis
5. 频繁访问的数据,用缓存数据库解决
6. 单条查询最后增加 LIMIT 1,停止全表扫描
7. 设置最大连接数
8. 设置引擎的读写速度
1.数据库不要暴露在公网
授权普通用户;注意远程连接地址 权限
2、修改数据库端口3306
3、进程,使用mysql普通用户启动
4、启动mysql二进制文件(binlog),在误删除数据的情况下。
5.删除空口令账号
6.test(5,6)数据库删除
7.禁止root用户远程访问
8.记录慢日志
9.最大连接数max_connections=300;
主服务器上面的任何修改都会保存在二进制日志( Bin-log日志) 里面。 从服务器上面启动一个I/O线程, 连接到主服务器上面请求读取二进制(Bin-log)日志,然后把读取到的二进制日志写到本地的Realy-log(中继日志)里面。 从服务器上面同时开启一个SQL线程,读取Realy-log(中继日志),如果发现有更新立即把更新的内容在本机的数据库上面执行一遍。
1.关系型数据库:
优点:
1、易于维护:都是使用表结构,格式一致;
2、使用方便:SQL语言通用,可用于复杂查询;
3、复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询;
4、学习成本低。
缺点:
1、读写性能比较差,尤其是海量数据的高效率读写;
2、固定的表结构,灵活度稍欠;
3、高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈。
非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合,可以是文档或者键值对等。
优点:
1、格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等,使用灵活,应用场景广泛,而关系型数据库则只支持基础类型。
2、速度快:nosql可以使用硬盘或者随机存储器作为载体,而关系型数据库只能使用硬盘;
3、高扩展性;
4、成本低:nosql数据库部署简单,基本都是开源软件。
缺点:
1、不提供sql支持,学习和使用成本较高;
2、无事务处理;
3、数据结构相对复杂,复杂查询方面稍欠。
string(字符串)
hash(哈希)
list(列表)
set(集合)
zset(sorted set:有序集合)
从服务器会向主服务器发出SYNC指令,当主服务器接到此命令后,就会调用BGSAVE指令来创建一个子进程专门进行数据持久化工作,也就是将主服务器的数据写入RDB文件中。在数据持久化期间,主服务器将执行的写指令都缓存在内存中。
在BGSAVE指令执行完成后,主服务器会将持久化好的RDB文件发送给从服务器,从服务器接到此文件后会将其存储到磁盘上,然后再将其读取到内存中。这个动作完成后,主服务器会将这段时间缓存的写指令再以redis协议的格式发送给从服务器。
(1) 速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1)
(2) 支持丰富数据类型,支持string,list,set,sorted set,hash
(3) 支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行
(4) 丰富的特性:可用于缓存,消息,按key设置过期时间,过期后将会自动删除
(1) memcached所有的值均是简单的字符串,redis作为其替代者,支持更为丰富的数据类型
(2) redis可以持久化其数据
(1) Master最好不要做任何持久化工作,如RDB内存快照和AOF日志文件
(2) 如果数据比较重要,某个Slave开启AOF备份数据,策略设置为每秒同步一次
(3) 为了主从复制的速度和连接的稳定性,Master和Slave最好在同一个局域网内
(4) 尽量避免在压力很大的主库上增加从库
(5) 主从复制不要用树状结构,用单向链表结构更为稳定,即:Master(写) <- Slave1(读) <- Slave2(读) <- Slave3(读)...
这样的结构方便解决单点故障问题,实现Slave对Master的替换。如果Master挂了,可以立刻启用Slave1做Master,其他不变。
主多从+哨兵模式(keelalived)
telnet:不安全,没有对传输数据进行加密,容易被监听,还有遭受中间人攻击,telnet不能压缩传输数据,所以传输慢
ssh:对数据进行了加密,安全度高,ssh传输数据经过压缩,所以传输速度比较快
关系型数据库: 支持事务,有表结构,支持复杂查询,但是读写性能较差,固定表结构,不灵活,在高并发的请求下,磁盘io是很大的瓶颈。
关系型数据库:memcache redis mogodb
非关系型数据库:存储格式灵活,不仅支持key-value的格式,还支持图片和文本文档,读写速度快,支持磁盘和和随机存储器作为载体,高扩展性,不支持sql语句,不支持事务。
非关系型数据库:oralce MySQL sqlserver
三次握手:
客户端向服务端发送一个带有SYN标志的数据给服务
服务器接收后,回传一个带有syn/ack标志的数据包确认消息
客户端再回传一个带有AVK+1的数据包
四次挥手:
客户端发送一个FIN=1.来关闭服务器和客户端的连接
服务器送到后,发送一个ack给客户端,确认序号为ack+1,在数据传输完成后
服务器个客户端发送一个带有FIN=1,来关闭客户端和服务端的连接
客户端收到FIN后,发送一个ack给server,确认序号为ack+1
1)在自身缓存中查找,若果存在,解析结束,然后再hosts文件中查找,成为本地解析
2) 在本地DNS服务器中查找
3)本地DNS服务器开启递归查询在根域查询
4)根域开启迭代查询向顶级域查询
5)顶级域开启迭代查询向权威域查询
6)顶级域把解析到的ip发送给本地DNS服务器
7)本地 DNS服务器把解析到的ip发送给浏览器
8)浏览器建立连接
innodb:支持事务,支持行锁定,可以进行数据回滚
myisam:有较高的查询速度,不支持事务
memory:读写速度快,但是不支持事务
方式:物理备份 逻辑备份
方法:完整备份:备份数据库中全部的数据
增量备份:基于上一次备份到当前时间的所有数据
差异备份:备份上一次完整备份到现在更新的数据
从服务器向主服务器发送一个SYNC报文,当主服务器接收到命令后,就会调用一个bgsave创建一个子进程来专门进行数据的持久化工作,也就是将数据写入RDB文件,在数据持久化期间,主服务器接送执行的指令都缓存在内存中
在bgsave结束后,主服务器将bgsave发送给从服务器,从服务器将文件存储在磁盘,然后将其读取到内存中,主服务器会将在此期间缓存的指令以redis协议的格式发送给从服务器
redis支持更加丰富的数据类型
redis支持数据持久化
支持丰富的数据类型
支持数据持久化
支持事务
速度快
丰富的特性
分摊服务器的压力,提高系统的处理效率,主要分摊服务器读的压力,间接提高了服务器写的性能,因为读的请求全部发送给从库
将网页静态资源与后台应用分开部署,提高用户的访问静态资源速度,减低对后台应用的访问
确保每个用户的请求都能够一台服务器进行处理
处理不了动态请求,单进程多线程,
string(字符串类型)
ip_hash
list
set(集合)
zset(有序集合)
在安全优化:降权启动,隐藏版本
在生产优化方面:
上策:优化代码
中策:内存回收
下策:加大内存
下下策:每天零点定时重启
公网ip
检查网线和交换机是否正常工作
检查ip和子网掩码是否写错
ping网关是否正常
DNS配置是否正确
检查是不是网络机房抖动
内网ip
检查网线和交换机是否正常工作
检查ip和子网掩码是否写错
ping网关是否正常
检查ip是否冲突
主库语言本来就慢,从库当然也慢
主库系统负载繁忙或者网络拥塞
从库性能不如主库
没有开启gtid,导致dump串行传输
开启慢语句记录日志
ELK收集慢日志
使用执行计划查看慢语句是否走索引
询问开发是否可以开启索引
延时状态
报错信息
主从延时情况
主从情况
监控锁状态
参数指标
完整备份+binlog
前端页面挂上维护信息
在完整备份时使用参数指定pOST位置点
查看POST位置点,在测试环境导入完整备份的数据
截取binlog日志,截取出上一次全量备份到误删除前的所有数据
将截取binlog数据导入测试库
查看数据是否完整,从测试库将数据导出给主库
主库恢复数据
验证数据是否完整
在安全方面:修改默认端口号,禁止root用户远程登录,对用户降权,以普通用户运行mysql
在性能方面:升级硬件,内存,磁盘,优化sql语句
在参数方面:增加连接数,缓存的参数优化
在架构方面:读写分离,高可用,一主多从
是某些用户慢,还是所有用户都满
打开监控,查看cpu,mem,磁盘的负载情况
打开ELK,查看关键响应时间,看看是否存在规律,比如某个时间突然升高,或者间歇性
如果某个服务器负载过高,可以将它先从负载均衡器上摘掉,在去具体分析查询问题
如果web服务器负载正常,但是访问慢,可能是数据库服务器响应不来或者负载过高
查看数据库是否存在慢语句,或者数据库执行语句卡死
通过日志分析法