Linux运维10

1.总结关系型数据库相关概念,关系,行,列,主键,唯一键。
关系:( Relational ) 这里的关系,指的是数学上的定义,是集合论中的关系模型,而不是我们日常生活中的人与人,人与物之间的关系。
行:( Row ) 表中的每一行,又称为一条记录 record。
列 :( column ) 表中的每一列,称为属性,字段,域 field。
主键:( Primary key ) 一个或多个字段的组合,用于惟一确定一个记录的字段,一张表只有一个主键,主键字段不能为空 NULL。
唯一键:( Unique key ) 一个或多个字段的组合,用于惟一确定一个记录的字段,一张表可以有多个UK,而且UK字段可以为NULL。
域:( domain ) 属性的取值范围,如,性别只能是'男'和'女'两个值,人类的年龄只能0-150。

2.总结关联类型,1对1,1对多,多对多关系。可以自行设计表进行解释。
一对一联系 ( 1:1 )

一对多联系 ( 1:n ):

多对多联系 ( m:n ):

3.总结Mysql多种安装方式,及安全加固,并总结mysql配置文件。
MySQL 主流的三种安装方式
源码编译安装: 下载源码,配置编译选项,编译并安装。
包管理工具安装: 使用如apt-get或yum等工具直接安装。
官方二进制安装: 下载预编译的二进制文件,解压并安装。

安全加固:
更改默认的root密码。
删除匿名用户。
删除默认测试数据库。
限制用户权限。
使用SSL加密连接。
配置防火墙规则。
定期更新MySQL。

mysql配置文件

4.掌握如何获取SQL命令的帮助,基于帮助完成添加testdb库,字符集utf8, 排序集合utf8_bin.创建host表,字段(id,host,ip,cname等)

5.根据表扩展出几个语句,完成总结DDL, DML的用法,并配上示例。
DDL:数据定义语言 CREATE,DROP,ALTER


DML:数据操纵语言 INSERT,DELETE,UPDATE

6.总结mysql架构原理和总结myisam和Innodb存储引擎的区别。
MySQL架构:
连接层: 处理客户端的连接、身份验证等。
服务层: 包括查询解析、优化、缓存、SQL接口等。
存储引擎层: 负责数据的存储和提取,支持多种存储引擎。
文件系统层: 实际的数据存储。

7.总结mysql索引作用,同时总结哪些查询不会使用到索引。
索引:是排序的快速查找的特殊数据结构,定义作为查找条件的字段上,又称为键 key,索引通过存储引擎实现。
优点
大大加快数据的检索速度;
创建唯一性索引,保证数据库表中每一行数据的唯一性;
加速表和表之间的连接;
在使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间。

不会使用索引的查询:
使用LIKE操作符且通配符在前,如LIKE '%text%'。
使用函数或表达式对索引列进行操作。
进行全表扫描更快时(如小表)。
索引列参与计算。
使用OR连接多个条件,其中一个条件不使用索引。

8.总结事务ACID事务特性
原子性( Atomicity )
原子性又称不可分割性。一个事务中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。

一致性( Consistency )
事务的执行结果,必须是符合预期的,这表示在事务中进行的数据读写,完全符合所有的预设规则,这包含资料的精确度、串联性以及后续数据库可以自发性地完成预定的工作。

隔离性( Isolation )
隔离性又称独立性。MySQL 允许多个事务并发,同时进行写操作,隔离性用于实现事务的并发控制,防止多个事务并发执行时的交叉执行而导致的数据不一致。事务的隔离分为不同的级别,包括读未提交( Read uncommitted ),读提交( read committed ),可重复读( repeatable read ),串行化( Serializable )。

持久性( Durability )
事务执行成功后,其对于数据的修改会永久保存于数据库中。

9.总结事务日志工作原理。
两种事务日志
redo log (重做日志)
InnoDB 引擎对数据更新时,先将更新记录写入到 redo log 的 buffer 中,而后在系统空闲的时候或者是按照设定的更新策略再将日志中的内容更新到磁盘之中。然后再将 commit 的事务的相关数据落盘,也就是说,先写日志,再去修改对应的 MySQL 中的数据文件,这就是所谓的预写式技术(Write Ahead logging)。如果事务在 commit 之后数据落盘时失败,则下次启动 MySQL 时,可以根据己经保存的 redo log 再次进行操作,保证 commit 提交成功。当然,如果 redo log 也写失败了,那么这段时间内的commit 就丢失了。redo log 通常是物理日志,用来保证事务的原子性,持久性。

undo log(回滚日志)
保存与执行的操作相反的操作,即记录某数据被修改前的值,可以用来在事务失败时进行回滚到某行记录的某个版本,其具体流程与 redo log 相似,也要先于 commit 数据落盘,更改对应的 MySQL 数据文件之前保存。
undo log 通常是逻辑日志,用来保证事务的原子性, 帮助事务回滚以及MVCC功能。

10.总结mysql日志类型,并说明如何启动日志。
错误日志
MySQL 中错误日志中记录的主要内容
mysqld 启动和关闭过程中输出的事件信息
mysqld 运行中产生的错误信息
event scheduler 运行一个 event 时产生的日志信息
在主从复制架构中的从服务器上启动从服务器线程时产生的信息

已启用

通用日志
通用日志,又称通用查询日志(General Query Log),用来记录对数据库的所有操作,包括启动和关闭 MySQL 服务、更新语句和查询语句等。默认情况下,通用查询日志功能是关闭的。可以通过配置开启此日志,并决定将日志存储到文件或数据表中。如果选择记录到数据表中,则具体的表是 mysql.general_log

慢查询日志
慢查询日志用来记录在 MySQL 中执行时间超过指定时间的查询语句。通过慢查询日志,可以查找出哪些查询语句的执行效率低,以便进行优化。慢查询日志默认不开启。

二进制日志
二进制日志(Binary Log)也可叫作变更日志(Update Log),是 MySQL 中非常重要的日志。主要用于记录数据库的变化情况,即 SQL 语句的 DDL 和 DML 语句,但不包含查询操作语句,因为查询语句并不会改变数据库中的数据。
如果 MySQL 数据库意外停止,可以通过二进制日志文件来查看用户执行了哪些操作,对数据库服务器文件做了哪些修改,然后根据二进制日志文件中的记录来恢复数据库服务器。
自 MySQL8.0 开始,默认开启了二进制日志功能,之前版本默认是关闭二进制日志的。

11.总结二进制日志的不同格式的使用场景。
binlog_format=STATEMENT|ROW|MIXED
Statement:基于语句的记录模式,日志中会记录原生执行的 SQL 语句,对于某些函数或变量,不会替换。
Row:基于行的记录模式,会将 SQL 语句中的变量和函数进行替换后再记录。
Mixed:混合记录模式,在此模式下,MySQL 会根据具体的 SQL 语句来分析采用哪种模式记录日志。

12.总结mysql备份类型,并基于mysqldump, xtrabackup完成数据库备份与恢复验证。


mysqldump 备份和还原实现
备份指定数据库中的数据



删除部分数据库

测试还原

备份数据库结构和数据

文件比较大

测试还原


xtrabackup 实现完全备份和还原
yum缓存

添加Percona仓库

使用percona-release工具来设置XtraBackup仓库:

安装Percona XtraBackup:

开始备份


查看相关信息:

备份文件CP到远程主机

在远程主机上还原
执行还原前的整理,将备份时没提交的事务进行回滚

mysql服务不能开启,数据目录不能有数据


开始还原

修改权限,启动

查看

xtrabackup 实现增量备份和还原
新增数据

第一次增量备份



再次新增数据

第二增量备份,基于上一次的增量备份数据进行

查看并复制到远程主机

在远程主机上还原
查看并整理全量备份数据,不回滚

整理第一次增量备份数据,不回滚

整理第二次增量备份数据,需要回滚

还原数据,修改权限

测试

13.编写crontab,每天按表备份所有mysql数据。将备份数据放在以天为时间的目录下。基于xtrabackup,每周1,周5进行完全备份,周2到周4进行增量备份。
按表备份脚本

完全备份脚本

增量备份脚本

配置 crontab 定时任务

posted on 2024-11-25 20:55  yuleslie  阅读(17)  评论(0)    收藏  举报