基础服务&&Mysql1-30



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存储会省去不少的麻烦。

你可能感兴趣的:(基础服务&&Mysql1-30)