运维精选面试题
1.什么是数据库
DB.DataBase 数据库:
依照某种数据模型进行组织并存放到存储器的数据集合
DBMS.DataBase Management System – 数据库管理系统:
用来操纵和管理数据库的大型服务 软件
DBS.DataBase System – 数据库系统:
即 DB+DBMS ,指带有数据库并整合了数据库管理软件的计算机系统
2.主流数据库服务软件有哪些?开源且跨平台的数据库软件有哪些?
主流数据库服务软件有:
甲骨文公司 Oracle
IBM DB2
微软 SQL Server
美国 Sybase 公司 Sybase
加州大学伯克利分校计算机系开发的 PostgreSQL
开源且跨平台的数据库软件有:
MySQL、PostgreSQL:开源且跨平台
Oracle、DB2:跨平台不开源
SQL Server:不跨平台不开源
Sybase:跨平台不开源
3.MySQL 的特点及应用
主要特点
– 适用于中小规模、关系型数据库系统
– 支持 Linux/Unix 、 Windows 等多种操作系统
– 使用 C 和 C++ 编写,可移植性强
– 通过 API 支持 Python/Java/Perl/PHP 等语言
典型应用环境
– LAMP 平台,与 Apache HTTP Server 组合
– LNMP 平台,与 Nginx 组合
4.mysql 服务相关参数有什么?
文件
说明
/etc/my.cnf
主配置文件
/var/lib/mysql
数据库目录
默认端口号
3306
进程名
mysqld
传输协议
TCP
进程所有者
mysql
进程所属组
mysql5.mysql 操作指令和注意事项?
操作指令类型
– MySQL 指令:环境切换、看状态、退出等控制
– SQL 指令:数据库定义 / 查询 / 操纵 / 授权语句
基本注意事项
– 操作指令不区分大小写(密码、变量值除外)
– 每条 SQL 指令以 ; 结束或分隔
– 不支持 Tab 键自动补齐
– \c 可废弃当前编写错的操作指令
6.库管理命令都有什么?
– Show databases;
// 显示已有的库
– Use 库名 ;
// 切换库
– Select database();
// 显示当前所在的库
– Create database 库名 ; // 创建新库
– Show tables;
// 显示已有的表
– Drop database 库名;
// 删除库
7.常见的信息种类
• 数值型:体重、身高、成绩、工资
• 字符型:姓名、工作单位、通信住址
• 枚举型:兴趣爱好、性别
• 日期时间型:出生日期、注册时间
8.(数值型)关于整数型字段
– 使用 UNSIGNED 修饰时,对应的字段只保存正数
– 数值不够指定宽度时,在左边填空格补位
– 宽度仅是显示宽度,存数值的大小由类型决定
– 使用关键字 ZEROFILL 时,填 0 代替空格补位
– 数值超出范围时,报错。
9.(数值型)关于浮点型字段
– 定义格式: float( 总宽度 , 小数位数 )
– 当字段值与类型不匹配时,字段值作为 0 处理
– 数值超出范围时,仅保存最大 / 最小值
10.字符类型
• 定长: char( 字符数 )
– 最大长度 255 字符
– 不够指定字符数时在右边用空格补齐
– 字符数断超出时,无法写入数据。• 变长: varchar( 字符数 )
– 按数据实际大小分配存储空间
– 字符数断超出时,无法写入数据。
• 大文本类型: text/blob
– 字符数大于 65535 存储时使用
11.日期时间类型
• 日期时间, DATETIME
– 占用 8 个字节
– 范围: 1000-01-01 00:00:00.000000 ~ 9999-12-31 23:59:59.999999
• 日期时间, TIMESTAMP
– 占用 4 个字节
– 范围: 1970-01-01 00:00:00.000000 ~ 2038-01-19 03:14:07.999999
• 日期, DATE
– 占用 4 个字节
– 范围: 0001-01-01 ~ 9999-12-31
• 年份, YEAR
– 占用 1 个字节
– 范围: 1901~2155
• 时间, TIME
– 占用 3 个字节
– 格式: HH:MM:SS
12.时间函数
类型
now()
year()
sleep(N)
curdate()
curtime()
month()
date()
time()
用途
获取系统当前日期和时间
执行时动态获得系统日期时间
休眠 N 秒
获取当前的系统日期
获取当前的系统时刻
获取指定时间中的月份
获取指定时间中的日期
获取指定时间中的时刻
13.枚举类型
• 从给定值集合中选择单个值, ENUM
– 定义格式: enum( 值 1, 值 2, 值 N)
• 从给定值集合中选择一个或多个值, SET
– 定义格式: set( 值 1, 值 2, 值 N)14 约束条件
• Null 允许为空,默认设置
• NOT NULL 不允许为空 • Key 索引类型
• Default 设置默认值,缺省为 NULL
15 修改表结构的基本用法
– ALTER TABLE 表名 执行动作 ;
Add 添加字段
Modify 修改字段类型
Change 修改字段名
Drop 删除字段
Rename 修改表名
16.索引是什么?
– 索引是对记录集的多个字段进行排序的方法。
– 类似于书的目录
– 索引类型包括 :Btree 、 B+tree 、 hash
17.索引优缺点?
• 索引优点
– 通过创建唯一性索引,可以保证数据库表中每一行数 据的唯一性
– 可以加快数据的检索速度
• 索引缺点
– 当对表中的数据进行增加、删除和修改的时候,索引 也要动态的维护,降低了数据的维护
速度
– 索引需要占物理空间
18.键值类型有几种,分别是什么?
• INDEX :普通索引
• UNIQUE :唯一索引
• FULLTEXT :全文索引
• PRIMARY KEY :主键
• FOREIGN KEY :外键
19.INDEX 普通索引说明?
– 一个表中可以有多个 INDEX 字段
– 字段的值允许有重复,切可以赋 NULL 值
– 经常把做查询条件的字段设置为 INDEX 字段
– INDEX 字段的 KEY 标志是 MUL
20.primary key 主键注意事项
– 一个表中只能有一个 primary key 字段
– 对应的字段值不允许有重复,且不允许赋 NULL 值– 如果有多个字段都作为 PRIMARY KEY ,称为复合主 键,必须一起创建。
– 主键字段的 KEY 标志是 PRI
– 通常与 AUTO_INCREMENT 连用
– 经常把表中能够唯一标识记录的字段设置为主键字段
21.foreign key 外键 什么是外键?
– 让当前表字段的值在另一个表中字段值的范围内选择 。
• 使用外键的条件
– 表的存储引擎必须是 innodb
– 字段类型要一致
– 被参照字段必须要是索引类型的一种 (primary key)
22.简述 MySQL 体系结构的组成,并描述每个组成部分的作用。
主要包括 8 个部分:
连接池:进程数限制、内存检查、缓存检查等。
SQL 接口:用户通过 sql 客户端发过来的命令,由 sql 接口接收,sql 操作(DML 数据操作语
言:查询、修改、升级数据等;DDL 数据定义语言:创建一个新的数据库、新的索引、删除一
个用户等;存储过程、视图触发器。
分析器: 分析查询语句 事务处理 对象访问权限。
优化器: 优化访问路径 、 生成执行树。
缓存和缓冲:保存 sql 查询结果。
存储引擎:用于管理存储的文件系统,将逻辑结构转换为物理结构的程序;不同的存储引擎有
不同的功能和存储方式。
管理工具:备份,恢复,安全,移植,集群等,这些工具一般和文件系统打交道,不需要和
mysql-server 打交道,它们对应的都是命令。
物理存储设备(文件系统)。
23.MySQL 存储引擎
• 作为可插拔式的组件提供
– MySQL 服务软件自带的功能程序,处理表的处理器
– 不同的存储引擎有不同的功能和数据存储方式
• 默认的存储引擎
– MySQL 5.0/5.1 —> MyISAM
– MySQL 5.5/5.6 —> InnoDB
24.Myisam 存储引擎的主要特点
– 支持表级锁
– 不支持事务、事务回滚、外键
• 相关的表文件
– 表名 .frm 、 – 表名 .MYI – 表名 .MYD
25.InnoDB 存储引擎主要特点
– 支持行级锁定
– 支持事务、事务回滚、支持外键• 相关的表文件
– xxx.frm 、 xxx.ibd
– ibdata1
– ib_logfile0 – ib_logfile1
26.MySQL 锁机制
• 锁粒度
– 表级锁:一次直接对整张表进行加锁。
– 行级锁:只锁定某一行。
– 页级锁:对整个页面( MySQL 管理数据的基本存储单 位)进行加锁。
• 锁类型
– 读锁(共享锁):支持并发读。
– 写锁(互斥锁、排它锁):是独占锁,上锁期间其他 线程不能读表或写表。
27.数据库事务的事务特性 (ACID)
• Atomic :原子性
– 事务的整个操作是一个整体,不可分割,要么全部成 功,要么全部失败。
• Consistency : 一致性
– 事务操作的前后,表中的记录没有变化。
• Isolation :隔离性
– 事务操作是相互隔离不受影响的。
• Durability :持久性
– 数据一旦提交,不可改变,永久改变表数据
28.数据导入基本用法和注意事项
• 基本用法
– LOAD DATA INFILE “ 目录名 / 文件名” INTO TABLE 表名 FIELDS TERMINATED BY “ 分
隔符” LINES TERMINATED BY “\n”;
• 注意事项
– 字段分隔符要与文件内的一致
– 指定导入文件的绝对路径
– 导入数据的表字段类型要与文件字段匹配
– 禁用 SElinux
29.数据导出基本用法和注意事项
– SELECT 查询 … … INTO OUTFILE “ 目录名 / 文件名” FIELDS TERMINATED BY “ 分隔
符” LINES TERMINATED BY “\n”;
•注意事项
– 导出的内容由 SQL 查询语句决定
– 禁用 SElinux
30.增加表记录的格式
格式 1 :
给所有字段赋值– INSERT INTO 表名
( 字段 1 值, … …
( 字段 1 值, … …
( 字段 1 值, … …
VALUES
,字段 N 值 ) ,
,字段 N 值 ) ,
,字段 N 值 ) , … … ;
格式 2
给指定字段赋值
– INSERT INTO 表名 ( 字段 1,… …, 字段 N) VALUES
( 字段 1 值,字段 2 值,字段 N 值 ) ,
( 字段 1 值,字段 2 值,字段 N 值 ) ,
( 字段 1 值,字段 2 值,字段 N 值 ) ,
… … ;
注意事项
字段值要与字段类型相匹配
对于字符类型的字段,要用双或单引号括起来
依次给所有字段赋值时,字段名可以省略
只给一部分字段赋值时,必须明确写出对应的字段名称
31.查询表记录
语法格式
• 格式 1
ELECT 字段 1, … …, 字段 N FROM 表名 ;
• 格式 2
SELECT 字段 1, … …, 字段 N FROM 表名 WHERE 条件表达式 ;
• 注意事项
使用 * 可匹配所有字段
指定表名时,可采用 库名 . 表名 的形式
32.更新表记录
语法格式
• 格式 1 ,
更新表内的所有记录
– UPDATE 表名
SET 字段 1= 字段 1 值 , 字段 2= 字段 2 值 , 字段 N= 字段 N 值 ;
格式 2 ,
只更新符合条件的部分记录
– UPDATE 表名 SET 字段 1= 字段 1 值 , 字段 2= 字段 2 值 , 字段 N= 字段 N 值 ;
WHERE 条件表达式 ;
33. 注意事项
字段值要与字段类型相匹配
对于字符类型的字段,要用双或单引号括起来若不使用 WHERE 限定条件,会更新所有记录
限定条件时,只更新匹配条件的记录
34.删除表记录
• 格式 1 ,
仅删除符合条件的记录
– DELETE FROM 表名 WHERE 条件表达式 ;
• 格式 2, 删除所有的表记录
– DELETE FROM 表名 ;
35.基本查询条件
数值比较
= 等于 > 、 >= 大于、大于或等于 < 、 <= 小于、小于或等于 != 不等于
字符比较
= 相等
!= 不相等
IS NULL 匹配空
IS NOT NULL 非空
逻辑比较
• 多个判断条件时使用
OR 逻辑或
AND 逻辑与
! 逻辑非
( ) 提高优先级
范围内匹配 / 去重显示
• 匹配范围内的任意一个值即可
In ( 值列表 ) 在…里…
Not in ( 值列表 ) 不在…里…
Between 数字 1 and 数字 2 在…之间…
DISTINCT 字段名 去重显示
36.聚集函数都有哪些?
• MySQL 内置数据统计函数
– avg( 字段名 ) : 求平均值
– sum( 字段名 ) :求和
– min( 字段名 ) : 统计最小值
– max( 字段名 ) :统计最大值– count( 字段名 ) :统计个数
37.常见的 MySQL 管理工具有哪些?
mysql 命令行 跨平台 MySQL 官方 bundle 包自 带
MySQL-Workbench 图形 跨平台 MySQL 官方提供
MySQL-Front 图形 Windows 开源,轻量级客户端软件
phpMyAdmin 浏览器 跨平台 开源,需 LAMP 平台
Navicat 图形 Windows 专业、功能强大,商业版
38.安装 PhpMyAdmin 基本思路是什么?
- 安装 httpd 、 mysql 、 php-mysql 及相关包
- 启动 httpd 服务程序
- 解压 phpMyAdmin 包,部署到网站目录
- 配置 config.inc.php ,指定 MySQL 主机地址
- 创建授权用户
- 浏览器访问、登录使用
39.密码忘了怎么办?
- 停止 MySQL 服务程序
- 跳过授权表启动 MySQL 服务程序 skip-grant-tables
- 重设 root 密码(更新 user 表记录)
- 以正常方式重启 MySQL 服务程序
40.简述 MySQL 数据库访问的执行过程。
客户端发出请求。
2)服务器端开辟线程响应客户端请求。
3)客户端发起 sql 语句查询数据库。
4)查询缓存:记录用户的 sql 查询语句,如果查询内容相同,直接从查询缓存回复。
5)如果缓存没有进入分析器。
6)分析器:分析用户命令语法是否正确,将用户的命令进行切片,一个词一个词用空格隔开,
获得用户要查询的表、内容、用户的权限等。
7)优化器:执行路径的选择,生成执行树。(每个 SQL 语句都有很多执行路径,优化的目的就
是在这些执行路径里选择最优的执行路径)。
8)存储引擎:用于管理存储的文件系统,不同的存储引擎有不同的功能和存储方式。
41.GRANT 配置授权用法和注意事项?
• 基本用法
– GRANT 权限列表 … … ON 库名 . 表名
– TO 用户名 @’ 客户端地址 ’
– IDENTIFIED BY ’ 密码 ‘– [ WITH GRANT OPTION ];
• 注意事项
– 当库名 . 表名 为 . 时,匹配所有库所有表 – 授权设置存放在 mysql 库的 user 表
42.mysql 授权的权限列表分类?
– all :匹配所有权限
– SELECT,UPDATE,INSERT … …
– SELECT,UPDATE ( 字段 1, … … , 字段 N)
43.mysql 授权的客户端地址方法?
– % :匹配所有主机
– 192.168.1.% :匹配指定的一个网段
– 192.168.1.1 :匹配指定 IP 地址的单个主机
– %.tarena.com :匹配一个 DNS 区域
– svr1.tarena.com :匹配指定域名的单个主机
撤销用户权限的格式用法?
• 基本用法 – REVOKE 权限列表 ON 库名 . 表名 – FROM 用户名 @’ 客户端地址 ';
44.简述 MySQL 数据库中插入、更新、查询、删除表记录的指令格式。
连接到 MySQL 数据库服务器,练习以下表记录操作:
向表中插入记录的语法格式
更新表记录的语法格式
查询表记录的语法格式
删除表记录的语法格式
参考答案
1)向表中插入记录的语法格式
insert (into)表名(字段名列表) values(字段名=值,字段名=值,…);
2)更新表记录的语法格式
update 表名(set) (字段名=值,字段名=值,…) where(条件表达式列表);
3)查询表记录的语法格式
select (字段名列表) (from) 表名 (where) 条件表达式列表;
4)删除表记录的语法格式
delete (from) 表名 (where) ( 条件表达式列表);
45.数据备份策略有那几种?
• 完全备份 – 备份所有数据(一台服务器、一个库、一张表)
• 增量备份 – 备份自上一次备份(包含完全备份、差异备份、增量 备份)之后有变化的数据
• 差异备份 – 备份自上一次完全备份之后有变化的数据
46.逻辑备份及恢复
• 备份操作 – mysqldump 源库名 > 路径 /xxx.sql
• 恢复操作 – mysql 目标库名 < 路径 /xxx.sql47.利用 binlog 恢复数据的基本思路?
– 使用 mysqlbinlog 提取历史 SQL 操作
– 通过管道交给 mysql 命令执行
48.常用的 MySQL 备份工具 的缺点?
• 物理备份缺点
– 跨平台性差
– 备份时间长、冗余备份、浪费存储空间 •
mysqldump 备份缺点
– 效率较低,备份和还原速度慢
– 备份过程中,数据插入和更新操作会被挂起
49.介绍一下 XtraBackup 工具是什么?
• 一款强大的在线热备份工具
– 备份过程中不锁库表,适合生产环境
– 由专业组织 Percona 提供(改进 MySQL 分 支)
• 主要含两个组件
– xtrabackup : C 程序,支持 InnoDB/XtraDB
– innobackupex :以 Perl 脚本封装 xtrabacku p ,还支持 MyISAM
50 什么是读写分离?
MySQL Proxy 最强大的一项功能是实现“读写分离(Read/Write Splitting)”。基本的原理是
让主数据库处理事务性查询,而从数据库处理 SELECT 查询。数据库复制被用来把事务性查询导
致的变更同步到集群中的从数据库。 当然,主服务器也可以提供查询服务。使用读写分离最大
的作用无非是环境服务器压力。
51 读写分离的好处?
1.增加冗余
2.增加了机器的处理能力
3.对于读操作为主的应用,使用读写分离是最好的场景,因为可以确保写的服务器压力更小,
而读又可以接受点时间上的延迟。
52.读写分离提高性能之原因?
1.物理服务器增加,负荷增加
2.主从只负责各自的写和读,极大程度的缓解 X 锁和 S 锁争用
3.从库可配置 myisam 引擎,提升查询性能以及节约系统开销
4.从库同步主库的数据和主库直接写还是有区别的,通过主库发送来的 binlog 恢复数据,但
是,最重要区别在于主库向从库发送 binlog 是异步的,从库恢复数据也是异步的
5.读写分离适用与读远大于写的场景,如果只有一台服务器,当 select 很多时,update 和
delete 会被这些 select 访问中的数据堵塞,等待 select 结束,并发性能不高。 对于写和读
比例相近的应用,应该部署双主相互复制6.可以在从库启动是增加一些参数来提高其读的性能,例如–skip-innodb、–skip-bdb、–
low-priority-updates 以及–delay-key-write=ALL。当然这些设置也是需要根据具体业务需
求来定得,不一定能用上
7.分摊读取。假如我们有 1 主 3 从,不考虑上述 1 中提到的从库单方面设置,假设现在 1 分钟
内有 10 条写入,150 条读取。那么,1 主 3 从相当于共计 40 条写入,而读取总数没变,因此平
均下来每台服务器承担了 10 条写入和 50 条读取(主库不承担读取操作)。因此,虽然写入没
变,但是读取大大分摊了,提高了系统性能。另外,当读取被分摊后,又间接提高了写入的性
能。所以,总体性能提高了,说白了就是拿机器和带宽换性能。MySQL 官方文档中有相关演算
公式:官方文档 见 6.9FAQ 之“MySQL 复制能够何时和多大程度提高系统性能”
8.MySQL 复制另外一大功能是增加冗余,提高可用性,当一台数据库服务器宕机后能通过调整
另外一台从库来以最快的速度恢复服务,因此不能光看性能,也就是说 1 主 1 从也是可以的。
53.构建主从同步的思路?
- 确保数据相同 – 从库必须要有主库上的数据。
- 配置主服务器 – 启用 binlog 日志及设置格式,设置 server_id, 授权用户
- 配置从服务器 – 设置 server_id ,指定主数据库服务器信息
- 测试配置 – 客户端连接主库,写入的数据,在连接从库的时候也能够访问到。
54.复制模式都有哪些?
步复制( Asynchronous replication ) – 主库在执行完客户端提交的事务后会立即将结果
返给 客户端,并不关心从库是否已经接收并处理。
全同步复制( Fully synchronous replication ) – 当主库执行完一个事务,所有的从库都
执行了该事务 才返回给客户端。
半同步复制( Semisynchronous replication ) – 介于异步复制和全同步复制之间,主库在
执行完客户 端提交的事务后不是立刻返回给客户端,而是等待至 少一个从库接收到并写到
relay log 中才返回给客户端
55.MySQL 主从复制原理?
复制的基本过程如下:
1)、Slave 上面的 IO 进程连接上 Master,并请求从指定日志文件的指定位置(或者从最开始的
日志)之后的日志内容;
2)、Master 接收到来自 Slave 的 IO 进程的请求后,通过负责复制的 IO 进程根据请求信息读取
制定日志指定位置之后的日志信息,返回给 Slave 的 IO 进程。返回信息中除了日志所包含的
信息之外,还包括本次返回的信息已经到 Master 端的 bin-log 文件的名称以及 bin-log 的位
置;
3)、Slave 的 IO 进程接收到信息后,将接收到的日志内容依次添加到 Slave 端的 relay-log 文
件的最末端,并将读取到的 Master 端的 bin-log 的文件名和位置记录到 master-info 文件
中,以便在下一次读取的时候能够清楚的告诉 Master“我需要从某个 bin-log 的哪个位置开始
往后的日志内容,请发给我”;
4)、Slave 的 Sql 进程检测到 relay-log 中新增加了内容后,会马上解析 relay-log 的内容成
为在 Master 端真实执行时候的那些可执行的内容,并在自身执行。Mysql 为了解决这个风险并提高复制的性能,将 Slave 端的复制改为两个进程来完成。提出这
个改进方案的人是 Yahoo!的一位工程师“Jeremy Zawodny”。这样既解决了性能问题,又缩短
了异步的延时时间,同时也减少了可能存在的数据丢失量。当然,即使是换成了现在这样两个
线程处理以后,同样也还是存在 slave 数据延时以及数据丢失的可能性的,毕竟这个复制是异
步的。只要数据的更改不是在一个事物中,这些问题都是会存在的。如果要完全避免这些问
题,就只能用 mysql 的 cluster 来解决了。不过 mysql 的 cluster 是内存数据库的解决方案,
需要将所有数据都 load 到内存中,这样就对内存的要求就非常大了,对于一般的应用来说可实
施性不是太大。
复制常用架构
Mysql 复制环境 90%以上都是一个 Master 带一个或者多个 Slave 的架构模式,主要用于读压力
比较大的应用的数据库端廉价扩展解决方案。因为只要 master 和 slave 的压力不是太大(尤其
是 slave 端压力)的话,异步复制的延时一般都很少很少。尤其是自 slave 端的复制方式改成
两个进程处理之后,更是减小了 slave 端的延时。而带来的效益是,对于数据实时性要求不是
特别的敏感度的应用,只需要通过廉价的 pc server 来扩展 slave 的数量,将读压力分散到多
台 slave 的机器上面,即可解决数据库端的读压力瓶颈。这在很大程度上解决了目前很多中小
型网站的数据库压力瓶颈问题,甚至有些大型网站也在使用类似方案解决数据库瓶颈。
56.什么是多实例 ,为什么要使用多实例
在一台物理主机上运行多个数据库服务就叫作多实例。
节约运维成本 – 提高硬件利用率
57.多实例配置步骤?
– 安装支持多实例服务的软件包
– 修改主配置文件
– 根据配置文件做相应设置
– 初始化授权库
– 启动服务
– 客户端访问
58.MySQL 性能调优的作用?
提高 MySQL 系统的性能、响应速度
– 替换有问题的硬件( CPU/ 磁盘 / 内存等)
– 服务程序的运行参数调整
– 对 SQL 查询进行优化
59.介绍下 MHA 集群?
– 由日本 DeNA 公司 youshimaton (现就职于 Facebo ok 公司)开发
– 是一套优秀的作为 MySQL 高可用性环境下故障切换和主从提升的高可用软件。
– 目前在 MySQL 高可用方面是一个相对成熟的解决方案 。
– 在 MySQL 故障切换过程中,MHA 能做到在 0~30 秒之内自动完成数据库的故障切换操作
– 并且在进行故障切换的过程中,MHA 能在最大程度上保证数据的一致性,以达到真正意义上
的高可用。60.MHA 的组成由哪些?
MHA Manager (管理节点)
– 可以单独部署在一台独立的机器上管理多个 master-sl ave 集群,也可以部署在一台
slave 节点上。
• MHA Node (数据节点)
– 运行在每台 MySQL 服务器上。
61.MHA 的工作过程?
MHA Manager 会定时探测集群中的 master 节点, 当 master 出现故障时,它可以自动将最新
数据的 sl ave 提升为新的 master ,然后将所有其他的 slave 重新指向新的 master 。整个
故障转移过程对应用程 序完全透明。
– ( 1 )从宕机崩溃的 master 保存二进制日志事件( binlog events )
– ( 2 )识别含有最新更新的 slave
– ( 3 )应用差异的中继日志( relay log )到其他的 slave
– ( 4 )应用从 master 保存的二进制日志事件( binlog events )
– ( 5 )提升一个 slave 为新的 master ;
– ( 6 )使其他的 slave 连接新的 master 进行复制;
62.什么是视图 (View)
– 虚拟表 – 内容与真实的表相似,包含一系列带有名称的列和行 数据。
– 视图并不在数据库中以存储的数据的形式存在。
– 行和列的数据来自定义视图时查询所引用的基表,并 且在具体引用视图时动态生成。
– 更新视图的数据,就是更新基表的数据
– 更新基表数据,视图的数据也会跟着改变
63.视图优点有哪些?
• 简单
– 使用视图的用户完全不需要关心视图中的数据是通过 什么查询得到的。
– 视图中的数据对用户来说已经是过滤好的符合条件的 结果集。
• 安全
– 用户只能看到视图中的数据。
• 数据独立
– 一旦视图的结构确定了,可以屏蔽表结构变化对用户 的影响。
64.使用视图的限制有哪些?
• 不能在视图上创建索引
• 在视图的 FROM 子句中不能使用子查询
• 以下情形中的视图是不可更新的
– 包含以下关键字的 SQL 语句:聚合函数 (SUM 、 MIN 、 MAX 、 COUNT 等 ) 、
DISTINCT 、 GROUP BY 、 HAVING 、 UNION 或 UNION ALL
– 常量视图
– JOIN
– FROM 一个不能更新的视图– WHERE 子句的子查询引用了 FROM 子句中的表
– 使用了临时表,视图是不可更新
65.视图的语法格式是什么?
– create view 视图名称 as SQL 查询;
– create view 视图名称 (字段名列表) as SQL 查 询;
66.使用试图的语法格式?
• 查询记录
– Select 字段名列表 from 视图名 where 条件;
• 插入记录
– Insert into 视图名 ( 字段名列表 ) values( 字段值列 表 ) ;
• 更新记录
– Update 视图名 set 字段名 = 值 where 条件;
• 删除记录
– Delete from 视图名 where 条件;
注意:对视图操作即是对基本操作,反之亦然!!!
删除视图
• 语法格式
– drop view 视图名;
67.什么存储过程?
– 数据库中保存的一系列 sql 命令的集合
– 编写存储过程时,可以使用变量、条件判断、流程控 制等
– 存储过程,就是 MySQL 中的脚本
68.存储过程优点?
– 提高性能
– 可减轻网络负担
– 可以防止对表的直接访问
– 避免重复的 sql 操作
69.存储过程变量类型?
会话变量 会话变量和全局变量叫系统变量 使用 set 命令定 义;
全局变量的修改会影响到整个服务器,但是对会 话变量的修改,只会影响到当前的会话。 全
局变量
用户变量 在客户端连接到数据库服务的整个过程中都是有 效的。当当前连接断开后所有用户
变量失效。 定义 set @ 变量名 = 值; 输出 select @ 变量名;
局部变量 存储过程中的 begin/end 。其有效范围仅限于该 语句块中,语句块执行完毕后,变
量失效。 declare 专门用来定义局部变量。70.什么是分库分表?
– 通过某种特定条件,将存放在一个数据库 ( 主机 ) 中的 数据,分散存放到多个数据库
( 主机 ) 中。
– 已达到分散单台设备负载的效果,即分库分表
– 数据的切分根据其切分规则的类型,分为 2 种切分模 式 – 垂直分割 ( 纵向 ) 和 水平
分割 ( 横向 )
71.什么是垂直分割?
• 纵向切分
– 把单一的表,拆分成多个表,并分散到不同的数据库 ( 主机 ) 上。
– 一个数据库由多个表构成,每个表对应不同的业务, 可以按照业务对表进行分类,将其分
布到不同的数据 库 ( 主机 ) 上,实现专库专用,让不同的库 ( 主机 ) 分 担不同的业务。
72.什么是水平分割?
• 横向切分
– 按照表中某个字段的某种规则,把向表中写入的记录 分散到多个库 ( 主机 ) 中。 – 简
单来说,就是按照数据行切分,将表中的某些行存 储到指定的数据库 ( 主机 ) 中
73.Mycat 介绍?
Mycat 是基于 Java 的分布式数据库系统中间层,为 高并发下的分布式提供解决方案
– 支持 JDBC 形式连接
– 支持 MySQL 、 Oracle 、 Sqlserver 、 Mongodb 等
– 提供数据读写分离服务
– 可以实现数据库服务器的高可用
– 提供数据分片服务
– 基于阿里巴巴 Cobar 进行研发的开源软件
– 适合数据大量写入数据的存储需求
74.mycat 服务提供 10 种分片规则?
– 1 枚举法 sharding-by-intfile
– 2 固定分片 rule1
– 3 范围约定 auto-sharding-long
– 4 求模法 mod-long
– 5 日期列分区法 sharding-by-date
– 6 通配取模 sharding-by-pattern
– 7ASCII 码求模通配 sharding-by-prefixpattern
– 8 编程指定 sharding-by-substring
– 9 字符串拆分 hash 解析 sharding-by-stringhash
– 10 一致性 hash sharding-by-murmur75.mycat 工作工程?
当 Mycat 收到一个 SQL 时
– 会先解析这个 SQL 查找涉及到的表,然后看此表的定 义
– 如果有分片规则,则获取到 SQL 里分片字段的值,并 匹配分片函数,得到该 QL 对应的分
片列表
– 然后将 SQL 发往这些分片去执行,最后收集和处理所 有分片返回的结果数据,并输出到客
户端 以 select * from Orders where prov=? 语句为例,查到 prov=wuhan , 按照分片函
数, wuhan 返回 dn1 ,于是 SQL 就发给了 MySQL1 ,去 取 DB1 上的查询结果,并返回给用
户。 如果上述 SQL 改为 elect * from Orders where prov in (‘wuhan’,‘beijing’) ,
那么, SQL 就会发给 ySQL1 与 MySQL2 去执行, 然后结果集合并后输出给用户。但通常业务
中我们的 SQL 会有 Order By 以及 Limit 翻页语法,此时就涉及到结果集在 Mycat 端的二次
处理。
76.什么是 RDBMS?
关系数据库管理系统
– Relational Database Management System
– 数据按照预先设置的组织结构,存储在物理存储介质 上。
– 数据之间可以做关联操作
77.什么是 nosql?
• NoSQL(NoSQL = Not Only SQL )
– 意思是 " 不仅仅是 SQL“
– 泛指非关系型数据库
– 不需要预先定义数据存储结构
– 表的每条记录都可以有不同的类型和结构
78.NoSQL 服务软件主流软件
– Redis
– MongoDB
– Memcached
– CouchDB
– Neo4j
– FlockDB
79.Redis 特点是什么?
– 支持数据持久化,可以把内存里数据保存到硬盘中
– 不仅仅支持 key/values 类型的数据,同时还支持 list hash set zset 类型
– 支持 master-salve 模式数据备份
80.Redis 介绍
– Remode DIctionary Server( 远程字典服务器 )
– 使用 C 语言编写的,遵守 BSD 的开源软件
– 是一款高性能的 (Key/Values) 分布式内存数据库– 并支持数据持久化的 NoSQL 数据库服务软件
– 中文网站 www.redis.cn
81.redis 常用操作指令
– Set keyname keyvalue
存储
– get keyname
获取
– Select 数据库编号 0-15
切换库
– Keys *
打印所以变量
– Keys a?
打印指定变量
– Exits keyname
测试是否存在
– ttl keyname
查看生存时间
– type keyname
查看类型
82.redis 主从复制工作原理
• 工作原理
– Slave 向 maste 发送 sync 命令
– Master 启动后台存盘进程,同时收集所有修改数据命 令
– Master 执行完后台存盘进程后,传送整个数据文件到 slave 。
– Slave 接收数据文件后,将其存盘并加载到内存中完成 首次完全同步
– 后续有新数据产生时, master 继续将新的所以收集到 的修改命令依次传给 slave ,完成
同步。
83.redis 主从复制缺点
– 网络繁忙,会产生数据同步延时问题
– 系统繁忙,会产生数据同步延时问题
84.RDB 介绍
• 全称 Reids DataBase
– 数据持久化方式之一
– 在指定时间间隔内,将内存中的数据集快照写入硬盘 。
– 术语叫 Snapshot 快照。
– 恢复时,将快照文件直接读到内存里。
85.RDB 优点缺点有哪些?
• RDB 优点
– 持久化时, Redis 服务会创建一个子进程来进行持久 化,会先将数据写入到一个临时文件
中,待持久化过 程都结束了,再用这个临时文件替换上次持久化好的 文件;整个过程中主进
程不做任何 IO 操作,这就确保 了极高的性能。 –
如果要进程大规模数据恢复,且对数据完整行要求不 是非常高,使用 RDB 比 AOF 更高效。 •
RDB 的缺点
– 意外宕机,最后一次持久化的数据会丢失。86.AOF 介绍
• 只追加操作的文件
– Append Only File
– 记录 redis 服务所有写操作。
– 不断的将新的写操作,追加到文件的末尾。
– 使用 cat 命令可以查看文件内容
87.AOF 优点 / 缺点
• RDB 优点
– 可以灵活的设置同步持久化 appendfsync alwayls 或 异步持久化 appendfsync verysec
– 宕机时,仅可能丢失 1 秒的数据
• RDB 的缺点 –
AOF 文件的体积通常会大于 RDB 文件的体积。执行 fs ync 策略时的速度可能会比 RDB 慢。
88.MongoDB 软件介绍?
介于关系数据库和非关系数据库之间的产品
– 一个基于分布式文件存储的数据库。
– 由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高 性能数据存储解决方案。
– MongoDB 将数据存储为一个文档,数据结构由键值 (key=>value) 对组成。
– MongoDB 文档类似于 JSON 对象。字段值可以包 含其他文档,数组及文档数组。
89.MongoDB 软件特点 ?
– 安装简单
– 面向文档存储,操作比较简单容易
– 支持丰富的查询表达
– 可以设置任何属性的索引
– 支持主流编程语言 RUBY|PYTHON|JAVA|PHP|C++
– 支持副本集,分片
90.MongoDB 常用管理命令?
• 库管理命令: 查看 创建 切换 删除
– show dbs 查看已有的库
– db 显示当前所在的库
– use 库名 切换库,若库不存在的话 自动延时创建库
– show collections 或 show tables 查看库下已有的 集合
– db.dropDatabase() 删除当前所在的库
数据库名可以是满足以下条件的任意 UTF-8 字符串。
– 不能是空字符串( “”) 。
– 不得含有 ’ ’ (空格 ) 、 . 、 $ 、 / 、 \ 和 \0 ( 空字符 ) 。
–应全部小写。– 最多 64 字节。
91.集合管理命有哪些?
查看 创建 删除
– show collections 或 show tables # 查看集合
– db. 集合名 .drop() # 删除集合
– db. 集合名 .save({’’,’’}) # 创建集合,集合不存 在时,创建并添加文档
92.MongoDB 文档基本管理?
文档管理命令:
查看 统计 添加 删除
– db. 集合名 .find()
– db. 集合名 .count()
– db. 集合名 .insert({“name”:”jim”})
– db. 集合名 .find({ 条件 })
– db. 集合名 .findOne() # 返回一条文档
– db. 集合名 .remove({}) # 删除所有文档
– db. 集合名 .remove({ 条件 }) # 删除与条件匹配的所有文 档
93.MongoDB 基本数据类型 ?
字符 string/ 布尔 bool/ 空 null
• 字符串 string
– UTF-8 字符串都可以表示为字符串类型的数据
– {name:” 张三” } 或 { school:“tarena”}
• 布尔 bool
– 布尔类型有两个值 true 和 false , {x:true}
• 空 null
– 用于表示空值或者不存在的字段, {x:null}
数值 / 数组 array
• 数值
– shell 默认使用 64 为浮点型数值。 {x : 3.14} 或 {x : 3} 。
– NumberInt ( 4 字节整数) {x:NumberInt(3)}
– NumberLong ( 8 字节整数) {x:NumberLong(3)}
• 数组 array
– 数据列表或数据集可以表示为数组
– {x : [“a“ , “ b”,”c”]}
代码 / 日期 / 对象
• 代码
– 查询和文档中可以包括任何 JavaScript 代码– {x: function( ){/* 代码 */}}
• 日期
– 日期被存储为自新纪元依赖经过的毫秒数,不存储时区
– {x:new Date( )}
• 对象
– 对象 id 是一个 12 字节的字符串,是文档的唯一标识
– {x: ObjectId() }
内嵌 / 正则表达式
• 内嵌
– 文档可以嵌套其他文档,被嵌套的文档作为值来处理
– {tarena: {address:“Beijing”,tel:“888888”,perso n:”hanshaoyun” – }} • 正则
表达式
– 查询时,使用正则表达式作为限定条件
– {x:/ 正则表达式 /}
94 MongoDB 数据导出?
• 语法格式 1 – #mongoexport [–host IP 地址 --port 端口 ] -d 库名 -c 集合名 -f 字
段名 1, 字段名 2 --type=csv > 目录名 / 文件名 .csv
• 语法格式 2 – #mongoexport --host IP 地址 --port 端口 - 库名 -c 集合名 -q ‘{ 条
件 }’ -f 字段名 1 ,字 段名 2 --type=csv > 目录名 / 文件名 .csv
• 语法格式 3 #mongoexport [ --host IP 地址 --port 端口 ] -d 库名 -c 集合名 [ -q
‘{ 条件 }’ –f 字段列表 ] --type=json > 目录名 / 文件名 .json
95.MongoDB 数据导入?
• 语法格式 1 – #mongoimport –host IP 地址 – port 端口 -d 库名 – c 集合名 –
type=json 目录名 / 文件名 .json
• 语法格式 2 – #mongoimport –host IP 地址 – port 端口 -d 库名 – c 集合名 –
type=csv --headerline [–drop] 目录名 / 文件名 .c sv
96.数据备份
• 备份数据所有库到当前目录下的 dump 目录下
mongodump [ --host ip 地址 --port 端口 ]
• 备份时指定备份的库和备份目录
mongodump [ --host ip 地址 --port 端口 ] -d 数据库名 -c 集合名 -o 目录
目录无需事先创建 备份时指定即可!!!
• 查看 bson 文件内容 #bsondump ./dump/bbs/t1.bson
97.副本集是什么?
– MongoDB 复制是将数据同步在多个服务器的过程。
– 复制提供了数据的冗余备份,并在多个服务器上存储 数据副本,提高了数据的可用性, 并
可以保证数据的 安全性。
– 复制还允许您从硬件故障和服务中断中恢复数据98.副本集工作过程?
– mongodb 的复制至少需要两个节点。其中一个是主 节点,负责处理客户端请求,其余的都
是从节点,负 责复制主节点上的数据。
– mongodb 各个节点常见的搭配方式为:一主一从、 一主多从。
– 主节点记录在其上的所有操作 oplog ,从节点定期轮 询主节点获取这些操作,然后对自己
的数据副本执行 这些操作,从而保证从节点的数据与主节点一致。
第四阶段
- iscsi 优点
基于 IP 协议技术的标准, 允许网络在 TCP/IP 协议上传输 SCSI 命令,相对 FC SAN,iSCSI 实
现的 IP SAN 投资更低,解决了传输效率、存储容量、兼容性、开放性、安全性等方面的问题,
没有距离限制
2 iSCSI操作流程
• Target端:选择target名称,安装iSCSI target
– 准备用于target的存储
– 配置target
– 启用服务
• Initiator端
– 安装initiator
– 配置 initiator 并启动服务
3.udev 的作用
从内核收到添加/移除硬件事件时,udev将会分析:
/sys目录下信息
/etc/udev/rules.d目录中的规则
基于分析结果,udev会:
处理设备命名,决定要创建哪些设备文件或链接,决定如何设置属性,决定触发哪些事件
4.什么是多路径,功能是什么
当服务器到某一存储设备有多条路径时,每条路径都会识别为一个单独的设备,多路径允许您
将服务器节点和储存阵列间的多个I/O,路径配置为一个单一设备,这些 I/O 路径是可包含独
立电缆、交换器和控制器的实体 SAN 链接,多路径集合了 I/O 路径,并生成由这些集合路径
组成的新设备,功能:冗余:主备模式,高可用,改进的性能: 主主模式,负载均衡
5.什么是集群
一组通过高速网络互联的计算组,并以单一系统的模式加以管理,将很多服务器集中起来一
起,提供同一种服务,在客户端看来就象是只有一个服务器可以在付出较低成本的情况下获得
在性能、可靠性、灵活性方面的相对较高的收益,任务调度是集群系统中的核心技术6.集群的目的
1.提高性能:如计算密集型应用,如:天气预报、核试验模拟
2.降低成本:相对百万美元级的超级计算机,价格便宜
3.提高可扩展性: 只要增加集群节点即可
4.增强可靠性: 多个节点完成相同功能,避免单点失败
- 集群分类
•高性能计算集群HPC
– 通过以集群开发的并行应用程序,解决复杂的科学问题
• 负载均衡(LB)集群
– 客户端负载在计算机集群中尽可能平均分摊
• 高可用(HA)集群
– 避免单点故障,当一个系统发生故障时,可以快速迁移
8.LVS集群组成
• 前端:负载均衡层
– 由一台或多台负载调度器构成
• 中间:服务器群组层
– 由一组实际运行应用服务的服务器组成
• 底端:数据共享存储层
– 提供共享存储空间的存储区域
9.LVS工作模式有哪些
• VS/NAT
– 通过网络地址转换实现的虚拟服务器
– 大并发访问时,调度器的性能成为瓶颈
• VS/DR
– 直接使用路由技术实现虚拟服务器
– 节点服务器需要配置VIP,注意MAC地址广播
• VS/TUN
– 通过隧道方式实现虚拟服务器
10.负载均衡调度算法有哪些
• LVS 目前实现了 10 种调度算法
• 常用调度算法有 4 种
– 轮询(Round Robin)将客户端请求平均分发到 Real Server
– 加权轮询(Weighted Round Robin)根据 Real Server 权重值进行轮询调度
– 最少连接(Least Connections)选择连接数最少的服务器
– 加权最少连接( Weighted Least Connections )根据 Real Server 权重值,选择连接数最少的服
务器11. 什么是HAProxy
• 它是免费、快速并且可靠的一种解决方案
• 适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理
• 提供高可用性、负载均衡以及基于TCP和HTTP应用的代理
- HAProxy的工作模式是什么
• mode http
– 客户端请求被深度分析后再发往服务器
• mode tcp
– 客户端与服务器之间建立会话,不检查第七层信息
• mode health
– 仅做健康状态检查,已经不建议使用
- HTTP事务模型
• HTTP close
– 客户端向服务器建立一个TCP连接
– 客户端发送请求给服务器
– 服务器响应客户端请求后即断开连接
– 如果客户端到服务器的请求不只一个,那么就要不断的去建立连接
– TCP三次握手消耗相对较大的系统资源,同时延迟较大
• Keep-alive
– 一次连接可以传输多个请求
– 客户端需要知道传输内容的长度,以避免无限期的等待传输结束
– 降低两个HTTP事务间的延迟
– 需要相对较少的服务器资源
• Pipelining
– 仍然使用Keep-alive
– 在发送后续请求前,不用等前面的请求已经得到回应
– 适用于有大量图片的页面
– 降低了多次请求之间的网络延迟
14.什么是Keepalived?
• Keepalived实现了高可用集群
• Keepalived最初是为LVS设计的,专门监控各服务器节点的状态
• Keepalived后来加入了VRRP功能,防止单点故障
15.Keepalived运行原理
• Keepalived检测每个服务器节点状态
• 服务器节点异常或工作出现故障, Keepalived将故障节点从集群系统中剔除
• 故障节点恢复后,Keepalived再将其加入到集群系统中
• 所有工作自动完成,无需人工干预16. HAProxy优缺点是什么
• 优点
– 支持session、cookie功能
– 可以通过url进行健康检查
– 效率、负载均衡速度,高于Nginx,低于LVS
– HAProxy支持TCP,可以对MySQL进行负载均衡
– 调度算法丰富
• 缺点
– 正则弱于Nginx
– 日志依赖于syslogd,不支持apache日志
- 什么是分布式文件系统
• 分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接
连接在本地节点上,而是通过计算机网络与节点相连
• 分布式文件系统的设计基于客户机/服务器模式
- 什么是ceph
• ceph是一个分布式文件系统
• 具有高扩展、高可用、高性能的特点
• ceph可以提供对象存储、块存储、文件系统存储
• ceph可以提供PB级别的存储空间
• 软件定义存储(Software Defined Storage)作为存储
行业的一大发展趋势,已经越来越受到市场的认可
- 什么是块存储
• Ceph块设备也叫做RADOS块设备
– RADOS block device:RBD
• RBD驱动已经很好的集成在了Linux内核中
• RBD提供了企业功能,如快照、COW克隆等等
• RBD还支持内存缓存,从而能够大大提高性能
• 单机块设备
– 光盘
– 磁盘
• 分布式块存储
– Ceph
– Cinder
- 什么是CephFS
• 分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接
连接在本地节点上,而是通过计算机网络与节点相连
• CephFS使用Ceph集群提供与POSIX兼容的文件系统
• 允许Linux直接将Ceph存储mount到本地21. 什么是元数据
• 元数据(Metadata)
– 任何文件系统中的数据分为数据和元数据。
– 数据是指普通文件中的实际数据
– 而元数据指用来描述一个文件的特征的系统数据
– 比如:访问权限、文件拥有者以及文件数据块的分布信息(inode…)等
- 什么是对象存储
• 对象存储
– 也就是键值存储,通其接口指令,也就是简单的GET、PUT、DEL和其他扩展,向存储服务上
传下载数据
– 对象存储中所有数据都被认为是一个对象,所以,任何数据都可以存入对象存储服务器,如
图片、视频、音频等
• RGW全称是Rados Gateway
• RGW是Ceph对象存储网关,用于向客户端应用呈现存储界面,提供RESTful API访问接口
- 什么是kvm
是 Kernel-based Virtual Machine 的简称,KVM 要求 CPU 支持硬件虚拟化技术(如 intel
VT 或 AMD-V),是 Linux 下的全虚拟化解决方案。KVM 由处于内核态的 KVM 模块和用户态的
QEMU 两部分构成。KVM 虚拟化技术是当前云计算中计算虚拟化的主流技术,是云计算的核心底
层能力,使用 KVM 把多台物理机虚拟化后,组成一个大的虚拟资源池,方便用户从资源池中按
需分配计算能力,提升资源的使用效率,同时保证多用户资源之间的隔离性、安全性
24.云模式有哪些?
1.IaaS:基础设施即服务:用户通过网络获取虚机、存储、网络,然后用户根据自己的需求操作获取的
资源
2.PaaS:平台即服务:将软件研发平台作为一种服务,
接口/运行平台等
如 Eclipse/Java 编程平台,服务商提供编程
3.SaaS:软件即服务 :将软件作为一种服务通过网络提供给用户,如 web 的电子邮件、HR 系统、订单
管理系统、客户关系系统等。用户无需购买软件,而是向提供商租用基于 web 的软件,来管理企业经营
活动
25.虚拟主机 服务器 云主机 三者的区别
虚拟主机,就是把一台运行在互联网上的服务器划分成多个“虚拟”的服务器,每一个虚拟主
机都具有独立的域名和完整的 Internet 服务器(支持 WWW、FTP、E-mail 等)功能。
虚拟主机是使用特殊的软硬件技术,把一台运行在因特网上的服务器主机分成一台台“虚拟”
的主机,每一台虚拟主机都具有独立的域名,具有完整的 Internet 服务器(WWW、FTP、Email
等)功能,虚拟主机之间完全独立,并可由用户自行管理,在外界看来,每一台虚拟主机和一台
独立的主机完全一样。
云主机是多个服务组合到快然后之间去分割的一个云主机。他可以独立的系统这个跟独立服务
器差不多。他们的可以这样来大小关系这样理解:服务器>云主机>虚拟主机。26.什么是 Docker
•Docker 是完整的一套容器管理系统
•Docker 提供了一组命令,让用户更加方便直接地使用容器技术,而不需要过多关心底层内核
技术
27.Docker 优缺点
Docker 的优点
•相比于传统的虚拟化技术,容器更加简洁高效
•传统虚拟机需要给每个 VM 安装操作系统
•容器使用的共享公共库和程序
Docker 的缺点
•容器的隔离性没有虚拟化强
•共用 Linux 内核,安全性有先天缺陷
•SELinux 难以驾驭
•监控容器和容器排错是挑战
28.什么是镜像
•在 Docker 中容器是基于镜像启动的
•镜像是启动容器的核心
•镜像采用分层设计
•使用快照的 COW 技术,确保底层数据不丢失
29.说出 docker 常用命令
–dockerimages//查看镜像列表
–dockerhistory//查看镜像制作历叱
–dockerinspect//查看镜像底层信息
–dockerpull//下载镜像
–dockerpush//上传镜像
–dockerrmi//删除本地镜像
–dockersave//镜像另存为 tar 包
–dockerload//使用 tar 包导入镜像
–dockersearch//搜索镜像
–dockertag//修改镜像名称和标签
30.说出对储存卷的理解
docker 容器不保持任何数据
•重要数据请使用外部卷存储(数据持久化)
•容器可以挂载真实机目录或共享存储为卷
31.什么是共享存储,举例说明
共享存储基本概念
•一台共享存储服务器可以提供给所有 Docker 主机使用•共享存储服务器(NAS、SAN、DAS 等)
•如:–使用 NFS 创建共享存储服务器,客户端挂载 NFS 共享,并最终映射到容器中
- Openstack主要组件都有什么
•Horizon
–用于管理Openstack各种服务的、基于web的管理接口
–通过图形界面实现创建用户、管理网络、启用实例等操作
•Keystone
–为其他服务提供认证和授权的集中身份管理服务
–也提供了集中的目录服务
–支持多种身份认证模式,如果密码认证、令牌认证、以及AWS(亚马逊Web服务)登陆
–为用户和其他服务提供了SSO认证服务
•Neutron
–一种软件定义网络服务
–用于创建网络、子网、路由器、管理浮动IP地址
–可以实现虚拟交换机、虚拟路由器
–可用于在项目中创建VPN
•Cinder
–为虚拟机管理存储卷的服务
–为运行在Nova中的实例提供永久的块存储
–可以通过快照迚行数据备份
–经常应用在实例存储环境中,如果数据库文件
•Nova
–在节点上用于管理虚拟机的服务
–Nova是一个分布式的服务,能够不Keystone交互实现认证,不Glance交互实现镜像管理
–Nova被设计成在标准硬件上能够迚行水平扩展
–启动实例时,如果有需要则下载镜像
•Glance
–扮演虚拟机镜像注册的角色
–允许用户为直接存储拷贝服务器镜像
–这些镜像可以用于新建虚拟机的模板33. 简述什么是Horizon,它的功能和特点
Horizon是一个用以管理、控制OpenStack服务的Web控制面板,也称之为Dashboard仪表盘
•可以管理实例、镜像、创建密匙对,对实例添加卷、操作Swift容器等。除此乊外,用户还可以在控制
面板中使用终端(console)或VNC直接访问实例
•基于python的djangoweb框架迚行开发
功能与特点
•实例管理:创建、终止实例,查看终端日志,VNC连接,添加卷等
•访问不安全管理:创建安全群组,管理密匙对,设置浮动IP等
•偏好设定:对虚拟硬件模板可以迚行不同偏好设定
•镜像管理:编辑或删除镜像
•用户管理:创建用户等
•卷管理:创建卷和快照
•对象存储处理:创建、删除容器和对象
34.什么是云主机类型
•云主机类型就是资源的模板
•它定义了一台云主机可以使用的资源,如内存大小、磁盘容量和CPU核心数等
•Openstack提供了几个默认的云主机类型
•管理员还可以自定义云主机类型
- 举例说明云主机类型参数
•Name:云主机类型名称
•ID:云主机类型ID,系统自动生成一个UUID
•VCPUs:虚拟CPU数目
•RAM(MB):内存大小
•Root disk(GB):外围磁盘大小。如果希望使用本地磁盘,设置为0•临时磁盘:第二个外围磁盘
•swap磁盘:交换磁盘大小
36.Glance磁盘格式都是什么
•raw:非结构化磁盘镜像格式
•vhd:VMware、Xen、Microsoft、、VirtualBox等均支持的通用磁盘格式
•vmdk:另一个通用的磁盘格式
•vdi:VirtualBox虚拟机和QEMU支持磁盘格式
•iso:光盘数据内容的归档格式
•qcow2:QEMU支持的磁盘格式。空间自动扩展,并支持写时复制copy-on-write
37.Openstack网络工作原理
•实例被分配到子网中,以实现网络连通性
•每个项目可以有一到多个子网
•在红帽的Openstack平台中,OpenStack网络服务是缺省的网络选项,Nova网络服务作为备用
•管理员能够配置丰富的网络,将其他Openstack服务连接到这些网络的接口上
•每个项目都能拥有多个私有网络,各个项目的私有网络互相不受干扰
38.Openstack网络类型都有什么
•项目网络:项目拥有的网络由Neutron提供。网络间采用VLAN隔离
•外部网络:访问虚拟机实例的流量,通过外部网络迚入。实例需要配置浮动IP地址
•提供商网络:将实例连接到现有网络,实现虚拟机实例不外部系统共享同一二层网络
- 浮动IP地址的作用
•浮动IP地址用于从外界访问虚拟机实例
•浮动IP地址只能从现有浮动IP地址池中分配
•创建外部网络时,浮动IP地址池被定义
•虚拟机实例起动后,可以为其关联一个浮动IP地址
•虚拟机实例也可以解除IP地址绑定
•解除绑定后,再绑定时,不保证绑定原来的IP地址
40.安全组规则
•安全组规则定义了如何处理网络访问
•规则基于网络或协议定义•每个规则都有出和入两个方向
•规则也可以指定ip协议版本
•默认的安全组规则,允许虚拟机实例对外访问,但是阻止所有对虚拟机实例的访问
41.什么是ansible,实现什么功能
•Ansible是2013年推出的一款IT自动化和DevOps软件,目前由Redhat已签署Ansible收购协议。其是基
亍Python研发,揉合了很多老运维工具的优点实现了批量操作系统配置,批量程序的部署,批量运行命
令等功能
•ansible可以让我们实现:
–自动化部署APP
–自动化管理配置项
–自动化的持续交付
–自动化的(AWS)于服务管理
42 ansible的优缺点以及特性
•ansible优点
–是仅需要ssh和Python即可使用
–无客户端
•ansible功能强大,模块丰富
•上手容易门槛低
•基亍python 开发,做二次开发更容易
•使用公司比较多,社区活跃
•ansible缺点
–对亍几千台、上万台机器的操作,还不清楚性能、效率情况如何,需要迚一步了解。
ansible 特性
•模块化设计,调用特定的模块来完成特定任务
•基亍 pythone 诧言实现–paramiko–PyYAML(半结构化诧言)–jinja2
•其模块支持 JSON 等标准输出格式,可采用任何编程诧言重写
•部署简单
•主从模式工作
•支持自定义模块
•支持 playbook
•易亍使用
•支持多层部署
•支持异构 IT 环境43.json 是什么?包含哪些特性?
–json 是 JavaScript 对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式。
–JSON 中的分隔符限于单引号 ’ 、小括号 ()、中括号 [ ]、大括号 { } 、冒号 : 和逗号 ,
•json 特性
–JSON 是纯文本
–JSON 具有"自我描述性"(人类可读)
–JSON 具有层级结构(值中存在值)
–JSON 可通过 JavaScript 进行解析
- yaml 是什么 ?
–是一个可读性高,用来表达数据序列的格式。
–YAML参考了其他多种语言,包括:C语言、Python、Perl,并从XML、电子邮件的数据格式(RFC 2822)
中获得灵感。目前已经有数种编程语言或脚本语言支持(或者说解析)这种语言。
45.yaml 中”-”,”:”,“”缩进“,“#”代表什么?
–数组使用"- “来表示
–键值对使用”: "来表示
–YAML使用一个固定的缩进风格表示数据层级结构关系
–一般每个缩进级别由两个以上空格组成
–# 表示注释
46.如何定义 playbook ?
–playbook 是 ansible 用于配置,部署,和管理托管主机剧本。通过 playbook 的详细描
述,执行其中的一系列 tasks,可以让远端主机达到预期的状态。
47.使用playbook的好处?
执行一些简单的任务,使用ad-hoc命令可以方便的解决问题,但是有时一个设施过于复杂,需要大量的
操作时候,执行的 ad-hoc 命令是不适合的,这时最好使用playbook,就像执行 shell 命令与写
shell 脚本一样,也可以理解为批处理任务
–使用 playbook 你可以方便的重用编写的代码,可以移植到不同的机器上面,像函数一样,最大化的
利用代码在使用 Ansible 的过程中,你也会发现,你所处理的大部分操作都是编写 playbook
- playbook 构成包含哪些?
–Target: 定义将要执行 playbook 的远程主机组
–Variable: 定义 playbook 运行时需要使用的变量
–Tasks: 定义将要在远程主机上执行的任务列表
–Handler: 定义 task 执行完成以后需要调用的任务49. 说出playbook几种排错调试方法?
–检测语法
ansible-playbook --syntax-check playbook.yaml
–测试运行
ansible-playbook -C playbook.yaml
–显示收到影响到主机 --list-hosts
–显示工作的 task --list-tasks
–显示将要运行的 tag --list-tags
- ELK 是什么?
•ELK 其实并不是一款软件,而是一整套解决方案,是三个软件产品的首字母缩写
–Elasticsearch:负责日志检索和储存
–Logstash:负责日志的收集和分析、处理
–Kibana:负责日志的可视化
–这三款软件都是开源软件,通常是配合使用,而且又先后归于 Elastic.co 公司名下,故被简称为
ELK
- ELK的功能?
•ELK 组件在海量日志系统的运维中,可用于解决:
–分布式日志数据集中式查询和管理
–系统监控,包含系统硬件和应用各个组件的监控
–故障排查
–安全信息和事件管理
–报表功能
52.描述 Elasticsearch
•ElasticSearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜
索引擎,基于 RESTful API 的 web 接口。
•Elasticsearch 是用 Java 开发的,并作为 Apache 许可条款下的开放源码发布,是当前流行的
企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便
53.Elasticsearch 特点
•主要特点
–实时分析
–分布式实时文件存储,并将每一个字段都编入索引
–文档导向,所有的对象全部是文档
–高可用性,易扩展,支持集群(Cluster)、分片和复制(Shards 和 Replicas)
–接口友好,支持 JSON
54.ES 没有什么功能?
•Elasticsearch 没有典型意义的事务.
•Elasticsearch 是一种面向文档的数据库。•Elasticsearch 没有提供授权和认证特性
55.阐述 ES 常用插件
•head 插件:
–它展现 ES 集群的拓扑结构,并且可以通过它来进行索引(Index)和节点(Node)级别的操
作
–它提供一组针对集群的查询 API,并将结果以 json 和表格形式返回
–它提供一些快捷菜单,用以展现集群的各种状态
•kopf 插件
–是一个 ElasticSearch 的管理工具
–它提供了对 ES 集群操作的 API
•bigdesk 插件
–是 elasticsearch 的一个集群监控工具
–可以通过它来查看 es 集群的各种状态,如:cpu、内存使用情况,索引数据、搜索情况,
http 连接数等
56.kibana 是什么 ?有哪些特点?
–数据可视化平台工具
•特点:
–灵活的分析和可视化平台
–实时总结和流数据的图表
–为不同的用户显示直观的界面
–即时分享和嵌入的仪表板
57.什么是大数据以及作用?
•大数据的定义
–大数据由巨型数据集组成,这些数据集大小常超出人类在可接受时间下的收集、庋用、管理
和处理能力。
•大数据能做什么?
–把数据集合幵后进行分析可得出许多额外的信息和数据关系性,可用来察觉商业趋势、判定
研究质量、避免疾病扩散、打击犯罪或测定即时交通路况等;这样的用途正是大型数据集盛行
的原因
58.大数据的 5V 特性是什么?
–(V)olume(大体量)
即可从数百 TB 到数十数百 PB、甚至 EB 的规模。
–(V)ariety(多样性)
即大数据包括各种格式和形态的数据。
–(V)elocity(时效性)
即很多大数据需要在一定的时间限度下得到及时处理。
–(V)eracity(准确性)
即处理的结果要保证一定的准确性。
–(V)alue(大价值)即大数据包含很多深度的价值,大数据分析挖掘和利用将带来巨大的商业价值。
59.Hadoop 是什么和特点?
–Hadoop 是一种分析和处理海量数据的软件平台
–Hadoop 是一款开源软件,使用 JAVA 开发
–Hadoop 可以提供一个分布式基础架构
.Hadoop 特点
–高可靠性、高扩展性、高效性、高容错性、低成本
60.Hadoop 常用组件有哪些
•HDFS(Hadoop 分布式文件系统)
•Mapreduce(分布式计算框架)
•Zookeeper(分布式协作服务)
•Hbase(分布式列存数据库)
•Hive(基于 Hadoop 的数据仓库)
•Sqoop(数据同步工具)
•Pig(基于 Hadoop 的数据流系统)
•Mahout(数据挖掘算法库)
•Flume(日志收集工具)
61.Hadoop 的部署模式有几种?
–单机
只需要配置好环境变量即可运行,这个模式一般用来学习和测试 hadoop 的功能
–伪分布式
伪分布式的安装和完全分布式类似,但区别是所有角色安装在一台机器上,使用本地磁盘,一
般生产环境都会使用完全分布式,伪分布式一般用来学习和测试方面的功能
–完全分布式
62.什么是分布式文件系统
•分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接
连接在本地节点上,而是通过计算机网络不节点相连
•分布式文件系统的设计基于客户机/服务器模式
•一个典型的网络可能包括多个供多用户访问的服务器
•对等特性允许一些系统扮演客户机和服务器的双重角色
63.Hadoop的三大核心组件是什么?
–Hdfs
–Mapreduce
–Yarn64. NFS网关用途
–1.用户可以通过操作系统兼容的本地NFSv3客户端来阅览HDFS文件系统
–2.用户可以从HDFS文件系统下载文档到本地文件系统
–3.用户可以通过挂载点直接流化数据。支持文件附加,但是不支持随机写
65.zookeeper 是什么?
–ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务
•ZooKeeper 能干什么哪?
–ZooKeeper 是用来保证数据在集群间的事务性一致
66.zookeeper 角色特性
–Leader:
–接受所有Follower的提案请求并统一协调发起提案的投票,负责不所有的Follower迚行内部的数据交
换
–Follower:
–直接为客户端服务并参不提案的投票,同时不Leader中行数据交换
–Observer:
–直接为客户端服务但并不参不提案的投票,同时也不Leader迚行数据交换
67.zookeeper 角色与选举
–服务在启动的时候是没有角色的(LOOKING)
–角色是通过选举产生的
–选举产生一个leader,剩下的是follower
–选举leader 原则:
–集群中超过半数机器投票选择leader.
–假如集群中拥有n台服务器,那么leader必须得到n/2+1台服务器投票
–如果leader 死亡,从新选举leader
–如果死亡的机器数量达到一半,集群挂起
–如果无法得到足够的投票数量,就重新发起投票,如果参不投票的机器不足n/2+1 集群停止工作
–如果follower 死亡过多,剩余机器不足n/2+1 集群也会停止工作
–observer 不计算在投票总设备数量里面68.zookeeper 可伸缩扩展性原理设计是什么
–leader 所有写相关操作
–follower 读操作不响应leader提议
–在Observer出现以前,ZooKeeper的伸缩性由Follower来实现,我们可以通过添加Follower节点的数
量来保证ZooKeeper服务的读性能。但是随着Follower节点数量的增加,ZooKeeper服务的写性能受到了
影响。
–客户端提交一个请求,若是读请求,则由每台Server的本地副本数据库直接响应。若是写请求,需要
通过一致性协议(Zab)来处理
–Zab协议规定:来自Client的所有写请求,都要转发给ZK服务中唯一的Leader,由Leader根据该请求
发起一个Proposal。然后,其他的Server对该Proposal迚行Vote。乊后,Leader对Vote迚行收集,当
Vote数量过半时Leader会吐所有的Server发送一个通知消息。最后,当Client所连接的Server收到该消
息时,会把该操作更新到内存中并对Client的写请求做出回应
69.kafka 是什么?
–Kafka 是由 LinkedIn 开发的一个分布式的消息系统
–kafka 是使用 Scala 编写
–kafka 是一种消息中间件
70.为什么要使用 kafka
–冗余、提高扩展性、缓冲
–保证顺序,灵活
–异步通信
71.kafka角色和集群结构是什么
–producer:生产者,负责发布消息
–consumer:消费者,负责读取处理消息
–topic:消息的类别
–Parition:每个Topic包含一个戒多个Partition.
–Broker:Kafka集群包含一个戒多个服务器
–Kafka通过Zookeeper管理集群配置,选丼leader
72.为什么NameNode需要高可用
–NameNode是HDFS 的核心配置,HDFS 又是Hadoop的核心组件,NameNode在Hadoop集群中至关重要,
NameNode机器宕机,将导致集群不可用,如果NameNode数据丢失将导致整个集群的数据丢失,而
NameNode的数据的更新又比较频繁,实现NameNode高可用势在必行73.说出 NameNode 高可用方案
–为了解决 NameNode 单点故障问题,Hadoop 给出了 HDFS 的高可用 HA 方案:HDFS 通常由两个
NameNode 组成,一个处于 active 状态,另一个处于 standby 状态。Active NameNode 对外提
供服务,比如处理来自客户端的 RPC 请求,而 Standby NameNode 则不对外提供服务,仅同步
Active NameNode 的状态,以便能够在它失败时进行切换。
74.NameNode高可用架构是什么
–一个典型的HA集群,NameNode会被配置在两台独立的机器上,在任何时间上,一个NameNode处于活动
状态,而另一个NameNode处于备份状态,活动状态的NameNode会响应集群中所有的客户端,备份状态的
NameNode只是作为一个副本,保证在必要的时候提供一个快速的转移。 为了让Standby Node不Active
Node保持同步,这两个Node都不一组称为JNS的互相独立的迚程保持通信(Journal Nodes)。当
Active Node上更新了namespace,它将记录修改日志发送给JNS的多数派。Standby noes将会从
JNS中读取这些edits,并持续关注它们对日志的变更。Standby Node将日志变更应用在自己的
namespace中,当failover发生时,Standby将会在提升自己为Active之前,确保能够从JNS中读
取所有的edits,即在failover发生之前Standy持有的namespace应该不Active保持完全同步。
NameNode更新是很频繁的,为了的保持主备数据的一致性,为了支持快速failover,Standby node持有
集群中blocks的最新位置是非常必要的。为了达到这一目的,DataNodes上需要同时配置这两个
Namenode的地址,同时和它们都建立心跳链接,并把block位置发送给它们,还有一点非常重要,任何
时刻,只能有一个Active NameNode,否则将会导致集群操作的混乱,那么两个NameNode将会分别有两
种不同的数据状态,可能会导致数据丢失,戒者状态异常,这种情冴通常称为“split-brain”(脑裂,
三节点通讯阻断,即集群中不同的Datanode看到了不同的Active NameNodes)。对于JNS而言,任何时
候只允讲一个NameNode作为writer;在failover期间,原来的Standby Node将会接管Active的所有职能,
并负责吐JNS写入日志记录,这中机制阻止了其他NameNode基于处于Active状态的问题
75.存储的目标的是什么?
• 存储是根据不同的应用环境通过采取合理、安全、有效
的方式将数据保存到某些介质上并能保证有效的访问
• 一方面它是数据临时或长期驻留的物理媒介
• 另一方面,它是保证数据完整安全存放的方式或行为
• 存储就是把这两个方面结合起来,向客户提供一套数据 存放解决方案
76.SCSI 技术
• Small Computer System Interface 的简称
• 作为输入/输出接口
• 主要用于硬盘、光盘、磁带机等设备
77.DAS 技术
• Direct-Attached Storage 的简称
• 将存储设备通过 SCSI 接口或光纤通道直接连接到计算机上
• 不能实现数据与其他主机的共享
• 占用服务器操作系统资源,如 CPU、IO 等
• 数据量越大,性能越差78.NAS 技术
• Network-Attached Storage 的简称
• 一种专用数据存储服务器,以数据为中心,将存储设 备与服务器彻底分离,集中管理数据,
从而释放带宽、 提高性能、降低总拥有成本、保护投资
• 用户通过 TCP/IP 协议访问数据
– 采用标准的 NFS/HTTTP/CIFS 等
79.SAN 技术
• Storage Area Network 的简称
– 通过光纤交换机、光纤路由器、光纤集线器等设备将 磁盘阵列、磁带等存储设备与相关服
务器连接起来, 形成高速专网网络
• 组成部分
– 如路由器、光纤交换机
– 接口:如 SCSI、FC – 通信协议:如 IP、SCSI
80.Fibre Channel
– 一种适合于千兆数据传输的、成熟而安全解决方案
– 与传统的 SCSI 相比,FC 提供更高的数据传输速率、更 远的传输距离、更多的设备连接支
持以及更稳定的性 能、更简易的安装
FC 主要组件
– 光纤
– HBA(主机总线适配置器)
– FC 交换机
81.iSCSI 技术的优势?
– 基于 IP 协议技术的标准
– 允许网络在 TCP/IP 协议上传输 SCSI 命令
– 相对 FC SAN,iSCSI 实现的 IP SAN 投资更低
– 解决了传输效率、存储容量、兼容性、开放性、安全 性等方面的问题
– 没有距离限制
82.LVS 术语
• Director Server:调度服务器
– 将负载分发到 Real Server 的服务器
• Real Server:真实服务器
– 真正提供应用服务的服务器
• VIP:虚拟 IP 地址
– 公布给用户访问的虚拟 IP 地址
• RIP:真实 IP 地址
– 集群节点上使用的 IP 地址
• DIP:调度器连接节点服务器的 IP 地址83.衡量负责均衡器性能的因素
• Session rate 会话率
– 每秒钟产生的会话数
• Session concurrency 并发会话数
– 服务器处理会话的时间越长,并发会话数越多
• Data rate 数据速率
– 以 MB/s 或 Mbps 衡量
– 大的对象导致并发会话数增加
– 高会话数、高数据速率要求更多的内存
84.说一下 Keepalived+LVS 拓扑?
• 使用 Keepalived 高可用解决调度器单点失败问题
• 主、备调度器上配置 LVS
• 主调度器异常时,Keepalived 启用备用调度器调度器
85.分析 Nginx 优缺点?
• 优点
– 工作在 7 层,可以针对 http 做分流策略
– 正则表达式比 HAProxy 强大
– 安装、配置、测试简单,通过日志可以解决多数问题
– 并发量可以达到几万次 – Nginx 还可以作为 Web 服务器使用
• 缺点
– 仅支持 http、https、mail 协议,应用面小
– 监控检查仅通过端口,无法使用 url 检查