2.软链接和硬链接区别
1.创建命令不同
2.软链接创建时必须使用绝对路径(链接和源文件在同一目录下,可以相对路径)
硬链接创建时可以绝对路径也可以相对路径
3.软链接的源文件不可以剪切,重命名,删除
硬链接的源文件可以剪切,重命名,删除
4.软链接的源文件权限永远是777,即使将链接文件的权限进行了修改,也不会发生变化,变得是 源文件的权限
硬链接的链接文件权限永远和源文件相同
5.软链接的链接文件innode号和源文件不同
硬链接的链接文件的inode号和源文件相同
6.软链接可以对目录操作
硬链接不支持对目录操作,是针对于上层来说,底层可以针对于目录做硬链接的,通过代码可以实现.
7.软链接可以跨文件系统.
硬链接不可以跨文件系统,因为硬链接是存放在源文件的同一个block上面的.
8.软链接可以跨文件系统,且可以针对于目录做软链接,
硬链接可以缩短文件路径,且可以防止重要的文件误删除.
3.RAID类型 (软件RAD(操作系统实现),硬件RAID,需要RAID卡,有自己的CPU,处理速度快,分为有电池和无电池)
RAID类型 个数 利用率 优缺点
-------------------------------------
RAID0条带集 2+ 100% 读写速率快,不容错
RAID1镜像集 2+ 50% 读写速率一般,容错
RAID5带奇偶校验条带集 3+ (n-1)/n 读写速率快,容错,允许坏一块
RAID6带奇偶双校验条带集 4+ (n-2)/n 读写快,容错,允许坏两块
RAID01
RAID10RAID1的安全+RAID0的高速 450%读写速率快,容错
RAID50RAID5的安全+RAID0的高速 6(n-2)/n 读写速率快,容错
RAID60RAID6的安全+RAID0的高速 8(n-4)/n 读写速率快,容错
--------------------------------
4.软件的类型
A.源码包tar bail
所有的包在初始的时候都是源码的,需先解压在编译,因此安装起来较慢,但是灵活性高,可以自行配置,经过编译之后变成二进制包
B.二进制包
可以直接拿过来就用的,适用于大批量安装软件时。
5.FTP主动被动
主动模式(端口模式)
客户端开启一个大于1024的端口去连接服务器端的21号控制端口;
客户端开启另外一个大于1024的端口去告诉服务器端;
服务端通过20号数据端口把数据送到客户端告诉他的1024端口。
被动模式
被动模式:(linux默认)
客户端开启一个大于1024的端口去连接服务器的21号控制端口;
服务端开启一个大于1024的端口去告诉客户端;
客户端开启另外一个大于1024的端口去服务器端大于1024得到端口把数据取回来
6.DNS解析流程
1.客户端查询自己的缓存,在查询本地hosts中的记录,如果没有将查询发送/etc/resolv.conf中的DNS服务器;
2.如果本地DNS服务器对于请求的信息具有权威性,会将权威答案发送到客户端;
3.否则不具有权威性,那么DNS服务器会在其缓存中查看是否有以前的请求信息留下的缓存,如果有有则将非权威答案发送到客户端;
4.否则缓存中没有查询该信息,DNS服务器从根域服务器开始,按照DNS层次结构向下搜索,一直查到对于信息具有权威的服务器,为客户端获取答案。
5.DNS服务器将信息传递给客户端,并在自己的缓存中保留一个副本,以备以后查找==>Caching only (仅缓存)
7.DNS为什么又使用TCP又使用UDP?我们都知道NDS既采用了TCP协议,又采用了UDP协议,什么时候采用TCP协议?什么时候采用UDP协议?为什么这样设计?
DNS域名系统: 用于命名组织到域层次结构中的计算机和网络服务。
在Internel上域名和IP地址一一对应的,域名只是方便人们记忆,但机器之间只能互相认识IP地址,他们之间的转换工作称为域名解析,域名解析需要专门的域名解析服务器来完成。
1>DNS进行区域传输的时候使用TCP协议,其他时候则使用UDP协议:
2>为什么即使用TCP又使用UDP?
首先了解一下TCP与UDP传送字节的长度限制:
UDP报文的最大长度为512字节,而TCP则允许报文长度超过512字节,当DNS查询超过512字节时,协议的TC标志出现删除标志,这时则使用TCP发送。通常传统的UDP报文一般不会大于512字节。
3>区域传送时使用TCP,因为TCP是一种可靠的连接,保证了数据的准确性:
4>域名解析时候使用UDP协议:
客户端向DNS服务器查询域名,一般返回的内容都不超过512字节,用UDP传输即可。不用经过TCP三次握手,这样DNS服务器负载更低,响应更快
8.OSI了解多少?
产生原因:
1.开放的标准化接口,多厂商兼容性,
2.易于理解,学习和更新协议标准
3.实现模块化工程,降低开发实现的复杂度
4.便于故障排除,将大块问题划分成小块问题来进行处理,查看问题层
OSI参考模型一共分为七层
数据要通过网络进行传输,在发送端从高层一层层向下传送,如果一个主机要传送数据到别的主机,先把数据装到一个特殊协议报头中,这个过程叫——封装
封装
一,应用层: 指的是应用程序,用户接口,只负责产生相应格式的数据
二,表示层: 数据的表示,压缩和加密,封装在应用层外部
三,会话层:加装在表示层外部封装,建立会话/通道,传递身份验证信息,通常可以理解为通道
四,传输层: 负责分段,重组,端口号:实现网络不同主机的进程间的数据通信,定义数据传输的两种模式:TCP和UDP。
五,网络层: 加装在传输层之外,用来寻址,路由,仅提供尽力而为的传输;
六,数据链路层: 将上层数据封装成帧,封装源IP和目的Mac,利用mac地址完成点到点的传输,同时负责错误的检测。封装时加封FCS(循环冗余校验和),用于校验数据完整性。
七,物理层: 用于提供设备之间的比特流传输,数据依赖截止到达对端。
解封装:
一,物理层被封装之后,通过介质传输到对端
二,数据链路层拆掉对端添加的封装(mac地址校验和),检查主机的Mac是否是自己的,不是自己的就扔掉
三,网络层拆掉封装查看IP地址是否是自己的,不是就丢弃
四,传输层使用相应的端口对数据报文进行重组
五,会话层来验证会话信息
六,表示层中文写的用中文,对端压缩这里就解压,对端加密这里就解密
七,应用层,数据交给相应的应用程序,应用程序拆掉自己应用标识的封装,得到数据
数据单元/单位:
应用层、表示层、会话层: APDU—— 应用数据单元
传输层: segment DU-------分段数据
网络层: packet DU--------- 包数据
数据链路层: frame DU------- 帧数据(即加了Mac地址地址的数据就叫帧数据)
物理层: bit DU------- 比特数据(是计算机形容一个子的单位)
各层协议:
应用层,超文本传输协议,也是用文字传递声音图片的一种技术(网页源代码均是文字,落实在工作中就是h5)
telnet: 远程连接协议
FTP: 文件传输协议
SMTP: 简单邮件传输协议
DNS: 域名服务
pop3 收邮件协议
传输层:
IP协议,互联网协议,用来寻址
ICMP: 网络消息管理协议,用来探测使用的ping
IGMP: 网络组管理协议,管理网路设备用的
数据链路层:
arp协议: 地址解析协议
rarp协议: 反向地址解析协议
物理层:没有协议
九,交换机及交换机工作原理?
同种设备交叉线,不同中设备直连线:
服务器-----交叉线-----路由器 服务器和路由器默认属于同种设备
服务器------直连线------交换机 不同种设备直连线
路由器-------直连线-------交换机
交换机上的端口是用来转发数据包的,他的每一个端口都有自己对应的编号,交换机就是通过这些端口来识别主机,从而完成主机之间的通讯。
十, 数据库分类
数据库: 是按照数据结构来组织,存储和管理数据的仓库,给我们提供了一种以关系的方式存放数据的方法,能够解决文本形式存储数据的劣势。
1.关系型数据库
Mysql(开源)
Oracle
SQL server (微软,适用于数据量小的情况使用,几千条数据可以)
MariadDB(percona组织维护开源)
DB2
库中有表,几个表之间是有关联的,拥有共同的列,我们称之为关系型数据库
2.非关系型数据库
MongoDB
Redis,Memcached : 健值存储,因为相比其他数据存储没有数据结构,又工作在内存中,所以性能很高。
HBase,Cassandra: 列式存储
Documentation MongoDB: 文档存储
Graph NoSQL Neo4j: 图式存储
以健值对的方式存储数据,健和健之间无关的数据库
3.NewSQL: 分布式数据库
Areospike,FoundationDB,RethinkDB
分布式数据库,通过分片机制进行数据分布,clustering内的每个节点仅数据库的一部分数据。
每个节点都可以接受客户端请求(去中心化)
每个节点持有全局元数据,但仅持由一部分数据。
十一,数据库备份
1).根据服务是否在线
热备份:又称之为在线备份,备份期间不需要服务停机,业务不受影响
温备份:备份期间仅允许读的请求,不允许写
冷备份:又称之为离线备份,备份期间需要关闭Mysql服务
2).根据备份的方式
物理备份:直接复制数据库文件,适用于大型数据库环境,不受存储引擎的限制,速度快,但不能恢复到异构系统中
cp,tar , xtrabackup,ibbackup, lvm snapshot
逻辑备份: 备份的是建表,建库,插入等操作所执行的SQL语句,适用于中小型数据库,速度相对较低,但可跨平台
mysqldump 使用不当容易锁表
select
常用备份工具:
1.使用Mysqldump 备份工具实现完全备份,并结合二进制实现增量备份
特点: 逻辑备份工具,支持InnoDB热备份,MyISAM温备份:备份与恢复较慢
2.使用LVM逻辑卷快照功能实现几乎热备份的完全备份,并结合二进制日志实现增量备份
特点:几乎接近于热备份,物理备份,备份与恢复较快
3.使用Xtrabackup备份工具实现完全备份与增量备份
特点:物理备份工具,支持InnoDB热备份,MyISAM温备份,速度较快
4.Xtrabackup的优缺点
1).备份的速度快且可靠(因为是物理备份)
2).支持增量备份,更为灵活
3).备份过程中不会打断正在执行的事务
4).能够基于压缩等功能节约磁盘空间和流量
5).自动实现备份校验
6).还原速度快
缺点.
1).只能对innodb表做增量备份,Myisam表增量备份时只能做全备
2).innobackupex备份Myisam表之前要对全库加锁,不能进行写操作,若备份时在从库上进行会直接影响主从同步,造成延迟。但对Innodb表不会阻塞读写
十二,mysql主从复制原理
1.从库生成两个线程,SQL线程和I/O线程
2.I/O线程去请求主库的binlog,并将得到的binlog日志写到relay log(中继日志)文件中:
3.主库会生成一个Log dump 线程,用来给从库I/O线程传binlog;
4.SQL线程会读取relay log文件中的日志,并解析成具体操作,来实现主从的操作一致,而最终数据一致:
作用: mysql主从复制是Mysql高可用性,高性能(负载均衡)的基础,简单,灵活,部署方式多样,可以根据不同业务场景部署不同复制结构,复制过程中应该时刻监控复制状态,复制出错或延时可能给系统造成影响,Mysql主从复制目前也存在一些问题,可以根据需要部署复制增强功能
GTID复制技术(mysql5.6版本后才有)
GTID的作用:
使用GTID技术可以让两台服务器之间自动交换事务ID,经过对比,请求数据,保证服务器之间的数据是同步的
提升安全性
多事务并发执行时,也不会造成数据混乱
多线程复制:从服务器可以启动多个SQL thread,并发执行多个库的复制,提升速度
mysql5.7以后出现多源复制(1.方便备份数据, 2.方便对数据的同意分析)
十三,Mysql数据库和Oracle数据库有什么区别?
1.Oracle是大型数据库而mysql是中小型数据库
2.Oracle支持大并发,大访问量,是OLTP最好的工具
3.安装所用的空间差别也是很大的
4.Oracle和Mysql操作上有一些区别
十四,PHP和Mysql的联合使用解决了?
在WWW服务器上处理数据库的访问问题。
十五,你在工作中遇到什么样的经典问题,是如何处理的?
工作中遇到的问题比较多,每天都会遇到各种问题,也称不上什么经典,比如说mysql无法复制或mysql server的利用率过高(如何处理详见后面内容)
十六, mysql server CPU 利用率高,如何处理?
使用show processlist(进程列表); 或show full(满的) processlist: 查看哪些线程超过1000ms,然后使用explain(解释分析)这些语句,在允许的情况下降占用时间长的线程kill掉。
主从复制延迟: mysql5.6之前没有GTID复制技术,mysql主从复制都是单线程的操作,所以容易导致有一个DDL卡主了,需要执行10分钟,那么所有之后的DDL都会等待这个DDL执行完才会继续执行,这就造成了延时:
当主库的TPS并发较高时,产生的DDL数量超过slave一个SQL线程所能承受的范围,那么延时就产生了,还有就是可能与slave的大型query语句产生了锁等待
解决方案:
(1).架构方面:
1.业务的持久化的实现采用分库架构,mysql服务可平行扩展,分散压力
2.单个库读写分离,一主多从,再从多台slave来分摊读请求,从这些slave中取出一台专用的服务器,只作备份用。主写从读,分散压力,这样从库压力比主库高,保护主库
3.服务的基础架构在业务和Mysql之间加入Memcache或者redis的cache层,降低Mysql的读压力
4.不同业务的MySQL物理放在不同机器,分散压力。
5.让主库的DDL快速执行,还有就是主库是写,对数据安全性较高,比如sync_binlog=1,innodb_flush_log_at_trx_commit=1之类或者关闭binlog,innodb_flushlog 也可以设置为0来提高sql的执行效率。
(2).硬件方面:
1.采用好服务器,比如40比20性能明显好,2U比1U性能明显好,从库硬件要比主库好
2.存储用SSD或盘阵或者SAN,提升随机读写的性能
3.主从间保证处在同一个交换机下面,并且是万兆环境
总结:硬盘强劲,延迟自然会变小,一句话,缩小延迟的方案就是花钱和花时间
十七,在工作中,一台线上数据库突然变的异常缓慢,如果交给你来排查,请写出排查思路?
先从业务的角度看是DB的使用跟以前有何不同,然后做进一步判断,硬件/网络故障通常也会引起DB性能的突然下降
解决思路: 查询SQL语句是否有问题,查看是否建立索引(这两者交给DBS解决)
第一步: 查看DB/OS/NETWORK的系统log,排除硬件/网络问题
第二部: 查看数据库的等待事件,根据等待事件来判断可能出问题的环节。如果,没有等待事件,可以排除数据库的问题,如果有等待事件,来找引起事件的根源。
比如latch free等跟SQL parse有关系的等待事件,OS的表现是CPU的占用率过高
db file scattered read等跟SQL disk read有关系的等待时间,OS的表现是iostat可以看到磁盘读写量增加
第三部. cpu的占用率
CPU占用率与数据库性能不成反比,CPU占用率高,不能说明数据库性能慢,通常情况,一个优化很好,而且业务量确实很大的数据库,CPU的占用率都会搞,而且会平均分布在每个进程上,反过来,CPU的占用率都会搞也不代表数据库性能就很好,要结合数据库的等待事件来判断CPU占用率高是否合理
如果某个进程的CPU占用高,肯定是这个进程有问题,如果,不是Oracle的进程,可以让application察看是否程序有死循环等漏洞,如果,是oracle的进程,可以根据PID查找oracle数据字典看看这个进程的发起程序,正在执行的SQL语句,以及等待事件,然后不同情况使用不同的方法来解决。
IO
排除硬件的IO问题,数据库突然变的很慢,一般来说,都是一个或几个SQL语句
排除硬件的IO问题,数据库突然变的很慢,一般来说,都是一个或几个SQL语句引起的。
如果IO很频繁,可以通过优化disk reads高的TOP SQL来解决,当然这也是解决IO问题的最笨也是最有效的办法
OS以及存储的配置也是影响IO的一个重要的原因
主从同步加速:
1.sync_binlog在slave端设置为0;
2.slave端如果使用的存储引擎是innodb
MyISAM只支持表级锁:
读写不可并发操作,主库在设置对应值的情况下,能并发在select 时执行insert,但是在从库重放时并不可并发。
从Mysql5.5开始,Mysql已经开始半主从同步复制了,提高了数据安全性,同时也造成了一个TCP/IP往返耗时的延迟。
十八, Mysql主从复制,数据不同步怎么解决?
1.先进入主库,进行锁表,防止数据写入
2.进行数据备份
3.查看master状态
4.把mysql备份文件传给从库机器,进行数据恢复
5.停止从库的状态
6.然后到从库执行mysql命令,导入数据备份
7.设置从库同步,注意该处的同步点,就是主库show master status 信息里的file|position两项
8.重新开启从同步
9.查看同步状态
十九,Mysql读写分离作用?
缓解主服务器压力
一般需要两台及以上数据库服务器即可(一台用于写数据,一台用于同步主的数据并用于数据查询操作)
二十,mysql相对其他数据库有哪些特点?
1.可以处理拥有千万条记录的大型数据
2.支持常见的SQL语句规范
3.可移植性,安装简单小巧
4.良好的运行效率,有丰富的网络支持
5.调优,管理,优化简单(相对大型数据库)
二十一,主从复制下升级数据库?
1.从库安装新版本,这个时候还没有做主从复制,然后开始主从复制,同步后,切换主从。
2.一主多从,停从库升级,切换主从,继续升级从库,就全部升级了。
二十二,mycat具体对数据库功能上的提升?
1.他是一个开源的分布式数据库系统,是一个实现了MySQL协议的服务器,前端用户可以把它看做是一个数据库代理,用Mysql客户端工具和命令行访问
而其后端可以用Mysql原生协议与多个Mysql服务器通信,也可以用JDBC协议与大多数主流数据库服务器通信,其核心功能是分表分库
即将一个大表分割成N个小表,存储在后端Mysql服务器里或者其他数据库里。Mycat发展到目前版本,已经不是一个单纯的Mysql代理了
他的后端可以支持Mysql,SQL,Server,Oracle,DB2,PostgreSQL等主流数据库,也支持MongoDB这种新型NoSQL方式的存储
未来还会支持更多类型的存储。而在最终用户看来,无论是哪种存储方式,在Mycat里,都是一个传统的数据库表,支持标准的SQL语句进行数据的操作,这样一来,对前端业务系统来说,可以大幅度降低开发难度,提升开发速度。
二十三,SQL和NoSQL?
SQL数据库,指关系型数据库-主要代表:SQL server ,Oracle,Mysql(开源),PostgreSQL(开源)
ACID:原子性,一致性,隔离性,持久性
NoSQL: 泛指非关系型数据库-主要代表: MongoDB,Redis,CouchDB
用于超大规模数据的存储,这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。
二十四,mysql需要监控哪些项:
进程 端口 复制的状态 I/O进程 SQL进程 mysqladmin --status 回车都监控
mysql status: 主要监控alive 0表示down 了,则报警
mysql qps: 最近5分钟qps的值大于200000,则报警mysql slave
query: 最近3分钟的慢查询大于3000,报警
mysql connections 当前连接数大于500,则报警。
二十五,mongodb和mysql一样吗?什么区别?
二十六,shell写过什么?
mysql自动化部署 系统信息的采集 zabbix信息的采集 部署lnmp的脚本 统计nginx的 top10的脚本
二十七.MyiSAM和InnoDB的主要区别?
1.MyISAM是非事务安全型的,而InnoDB是事务安全型的。
2.MyISAM锁的粒度是表级,而InnoDB支持行级锁定。
3.MyISAM不支持foreign(外健),而InnoDB支持外健
4.MyISAM相对简单,所以在效率上要优于InnoDB.
5.MyISAM表示保存成文件的形式,在跨平台的数据转移中使用MyISAM存储会省去不少的麻烦。