一、MySQL数据库管理系统

1、mysql的 4个默认数据库

 information_schema: information_schema:是一个信息数据库,它保存着关于MySQL服务器所维护的所有其他数据库的信息。(如数据库名,数据库的表,表栏的数据类型与访问数限等)

Mysql:主要负责存储数据库的用户、权限设置、关键字等mysal自己需要使用的控制和管理信息

performance_schema:主要用于收集数据库服务器性能参数。并且库里表的存储引擎均为 PERFORMANCE_SCHEMA,而用户是不能创建存储引擎为PERFORMANCE_SCHEMA的表

Sys: Sys库所有的数据源来自: performance_schema。目标是把performance_schema的把复杂度降低,让DBA能更好的阅读这个库里的内容。让DBA更快的了解DB的运行情况

 2、给数据升顺

格式: select 编号,姓名,职业 from yg order by 编号 asc/desc;

例:以编号进行排序  
mysql> select 编号,姓名,职业 from yg order by 编号;
+--------+-----------+-----------------+
| 编号   | 姓名      | 职业            |
+--------+-----------+-----------------+
|    100 | 小光      | 云计算          |
|    170 | 小乔      | IT工程师        |
|    180 | 小i       | 云计算          |
|    200 | 王小红    | java工程师      |
|    220 | 小V       | 云计算          |
|    666 | 蒙牛      | apache工程师    |
+--------+-----------+-----------------+
6 rows in set (0.00 sec)

3、count统计、group by 分组

例:统计总共
mysql> select count(*) from yg;
+----------+
| count(*) |
+----------+
|        6 |
+----------+
1 row in set (0.00 sec)
例:统计有多少个重复的
mysql> select 职业,count(*) from yg group by 职业;
+-----------------+----------+
| 职业            | count(*) |
+-----------------+----------+
| apache工程师    |        1 |
| IT工程师        |        1 |
| java工程师      |        1 |
| 云计算          |        3 |
+-----------------+----------+
4 rows in set (0.00 sec)

4、事务(transaction)

保证成批操作要么完全执行,要么完全不执行,维护数据的完整性。简单来说就是要么成功要么不成功

5、一个事务中包含多条 SQL 语句,在 SQL 语句之间的关系

1、事务可以是 NSQL 语句(N >= 0)
2、不是所有数据库存储引擎都支持事务,InnoDB 存储引擎支持事务处理

6、数据库事务特性(ACID)

事务特性

作用

原子性(Atomic)

事务的所有操作,要么全部完成,要么全部不完成,不会结束在某个中间环节

一致性(Consistency)

事务开始之前和事务结束之后,数据库的完整性限制未被破坏

隔离性(Isolation)

当多个事务并发访问数据库中的同一数据时,所表现出来的是相互关系

持久性(Durability)

事务完成之后,所做的修改会进行持久化保存,不会丢失

7、 事务并发不进行事务隔离

脏读

事务 A 读到未提交事务 B 修改的数据,如果此时事务 B 中途执行失败回滚,那么此时事务 A 读取到的就是脏数据

不可重复读

同一个事务中,对同一份数据读取的结果不一致(针对某一个数据)

幻读

同一个事务中,同一个查询多次返回的结果不一样(针对表中总行)

区别

脏读和不可重复读

脏读是事务读取了还未提交事务的更新数据。不可重复读是同一个事务中,几次读取的数据不同

不可重复读和幻读

都是在同一个事务中,前者是几次读取数据不同,后者是几次读取数据整体不同

 8、隔离级别

事务隔离级别

脏读

不可重复读

幻读

读未提交(read-uncommitted)




不可重复读(read-committed)




可重复读(repeatable-read)




串行化(serializable)




9、MySQL常用的索引

普通索引

唯一索引

联合索引

全文索引

空间索引

index

加速查找

10、在什么时候二进制日志会重新生成?

1、重启mysql服务:systemctl restart mysql
2、进入myslq数据库:输入 flush logs;     刷新二进制日志
3、配置my.cnf 文件,根据二进制文件大小进行切割

11、二进制日志的格式

由 bin_log_format={ statement | row | mixed

statement

基于语句,记录生成数据的语句

缺点:在于如果当时插入信息为函数生成,有可能不同时间点执行结果不一样

row

基于行数据

缺点:有时候数据量会过大

mixed

混合模式

mysql自行决定何时使用statement, 何时使用row 模式

查看当前二进制日志记录格式

mysql> show variables like 'binlog_format';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| binlog_format | ROW   |
+---------------+-------+
1 row in set (0.00 sec)

修改二进制日志记录格式

mysql> set session binlog_format=statement;          #修改二进制记录格式
Query OK, 0 rows affected (0.00 sec)

mysql> show variables like 'binlog_format';
+---------------+-----------+
| Variable_name | Value     |
+---------------+-----------+
| binlog_format | STATEMENT |
+---------------+-----------+
1 row in set (0.00 sec)

 注意:5.7之前是statement,5.7之后是基于行的

12、工作原理

 1、innobackupex 在启动 xtrabackup 进程后,会一直等 xtrabackup 备份完 InnoDB 文件,方式就是等待 xtrabackup_suspended_2 这个文件被创建出来
2、xtrabackup 在备完 InnoDB 数据后,就在指定目录下创建出这个文件,然后等这个文件被 innobackupex 删除
3、innobackupex 检测到文件 xtrabackup_suspended_2 被创建出来后,就继续往下走
4、innobackupex 在备份完非 InnoDB 表后,删除 xtrabackup_suspended_2 这个文件,这样就通知 xtrabackup 可以继续了,然后等 xtrabackup_log_copied 被创建
5、xtrabackup 检测到 xtrabackup_suspended_2 文件删除后,就可以继续往下了

mysql schema 库名 mysql默认schema_面试

13、mysql的主从复制工作原理

主从复制过程中,主服务器有一个工作线程 I/O dump线程,从服务器有两个工作线程I/O 线程SQL 线程

主库把接收的SQL请求记录到自己的binlog日志中,从库的 I/O 线程去请求主库的 binlog 日志,并将 binlog 日志写到中继日志中,然后从库重做中继日志的 SQL 语句。主库通过I/O dump 线程给从库 I/O 线程传送 binlog 日志

mysql schema 库名 mysql默认schema_mysql schema 库名_02

1、异步复制

异步复制是MySQL默认的复制方式,主库写入binlog日志后即可成功返回客户端,无须等待binlog日志传递给从库的过程,但是一旦主库宕机,就有可能出现丢失数据的情况

2、半同步复制

 MySQL默认的复制方式是异步复制,但是当主库宕机,在高可用架构坐准备切换,就会造成新的主库丢失数据的现象

MySQL5.5版本之后引入了半同步复制,但是主从服务器必须同时安装半同步复制插件。在该功能下,确保从库接收完成主库传递过来的binlog内容已经写入到自己的relay log后才会通知主库上面的等待线程。如果等待超时(超时参数:rpl_semi_sync_master_timeout),则关闭半同步复制,并自动转换为异步复制模式,直到至少有一台从库通知主库已经接收到binlog信息为止

mysql schema 库名 mysql默认schema_云计算_03

 14、经常用Redis做什么?

redis:常用做数据库的缓存,缓存一些经常被客户端访问的数据,从而减轻后端数据库的压力

15、redis的持久化

实现方式

RDB持久化:Reids在内存中的数据库记录定时dump到磁盘上,类似于快照功能
AOF持久化:append only file:原理是将Reids的操作日志以追加的方式写入文件,近似实时性

二者的区别

RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘,实际操作过程是fork一个子进程,先将数据集写入临时文件,写入成功后,再替换之前的文件,用二进制压缩存储

16、搭建redis群集需要几个主从复制

3对:即3主3从