持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第12天,点击查看活动详情
体系结构
存储引擎
- 查看当前支持的引擎
show engines;
- 数据库引擎线程
-
Master Thread 主要是把数据从缓存池刷新到硬盘中,保证数据的一致性
-
查询 IO Thread
show engine innodb status; -
Purge Thread 事务被提交后,使用的 undolog 不再被需要,因此需要 Purge Thread 来回收
连接 Mysql
- 请求远程服务器上的 mysql 实例
mysql -h 192.168.128.91 -u root -p
- 连接的时候,系统数据库 mysql 里面有一个 user 权限表。用于判断客户端能否连接到该实例
select user,host from user;
- 查看 mysql 版本
select version();
InnoDB 关键特性
- 插件缓存
- 两次写
- 自适应哈希缓存
- 异步 IO
- 刷新临近页
Mysql 文件
- mysql 参数文件
- 通过命令 mysql --help | grep my.cnf 查找
- 可以查看所有的参数配置
- show variables;
- 改变参数
- global:改变全局参数,session 改变会话参数
- set global read_buffer_size=1048675;
- 用 set 改变的参数只是本实例有效,并没有去改掉配置文件。
- 日志文件
- 错误日志
- 通过 show variables like 'log_error';定位错误文件的位置
- 慢查询日志
-
慢查询就是查询时间超过一个阀值的查询。这个阀值可以通过这个查询
show variables like 'long_query_time'; -
修改慢查询时间
set global long_query_time=2; -
查看慢查询是否开启,默认是不启动慢查询的
show variables like "%slow%"; -
开启慢查询
set global slow_query_log='ON'; -
查询慢日志
cat mysql-slow.log文件位置可由(show variables like "%slow%"; )查出
-
慢日志分析工具
- mysqldumpslow
- 查询日志
- 记录了所有对数据库请求的信息
- 二进制日志
-
记录了对数据库执行更改的所有操作
-
可以用于
- 恢复数据库
- 复制数据库
- 审计数据库:通过二进制中的日志进行审计,判断是否有注入攻击
-
查看日志文件位置
show variables like 'datadir';
- 套接字文件
-
在 unix 系统下可以采用套接字连接的方式,这个方式需要一个套接字文件
#可以查询这个文件位置 show variables like 'socket'
- PID 文件
- 当 mysql 实例启动时,会将进程 ID 写入一个文件中-该文件为 pid 文件
show variables like 'pid_file';
- 表结构定义文件
- mysql 的存储是根据表的,所以每个表都有对应的文件。不论哪种存储引擎,都有一个 frm 后缀的文件,记录了该表的表结构定义
- InnoDB 存储文件
- InnoDB 设计采用将存储的数据按表空间进行存放的设计。默认有一个初始 10M,名为 ibdata1 的文件,这个就是表空间文件
- 重做日志文件
- 目录下有两个 ib_logfile0 和 ib_logfile1 的文件。当主机断点或者介质失败时就能派上用场。InnoDB 引擎会使用重做日志恢复到断电之前。
- 查看数据库文件大小
show variables like 'datadir'; //得到文件目录
system ls -lh /usr/local/mysql/data/; 查看大小