Innodb文件系统
Innodb文件系统
不管数据库再怎么牛掰,最后它一定也是落到了文件当中,但也不仅仅有数据库文件,在Innodb中有各种文件去支撑它的功能实现
参数文件
这个文件当然很重要了,这决定了我们启动数据库时的各种参数配置
日志文件
错误日志
错误日志对Mysql的启动、运行、关闭过程进行了记录,记录了SQL的错误信息和警告信息,当我们遇到问题的时候,可以去快速定位
查询日志
这个一般不开启
慢查询日志*
慢查询日志指的是执行了超出我们指定时间的SQL日志
- 数据库默认不开启慢查询日志
- 参数long_query_time来设置阈值,默认值为10,代表10秒,严格大于它的才算是慢查询
- MySQL5.1以后用微秒为单位衡量慢查询
- MySQL可以开启是否使用索引才加入慢查询
- log_throttle_queries_not_using_indexes限制每分钟一条语句最多记录多少,默认是0没有限制,一般要设置,如果一条记录访问太多,会导致慢查询日志臃肿
二进制文件binlog
binlog做两件事
- recover恢复
- replication复制
- audit审计,看有无攻击内容
为什么binlog默认关闭
首先对于小型项目来说,没有主从复制,recover也是有redo log来做,更不用考虑什么审计的问题,所以是用不上bin log的,再加上这多多少少也会对性能有所影响
为什么要使用binlog
对于大型项目的主从复制和point-in-time恢复,并且binlog的性能影响可能就1%,绝对可以被接受
binlog的各种参数
max_binlog_size
单个binlog文件的最大size,默认1GB,超出了就会新建一个新文件,同时维护了一个index尾缀文件去持有这些文件
binlog_cache_size
binlog也是需要有size的,毕竟也是有写入有IO,那就想着可以一起给他写入了,大小默认为32KB。
如果一个文件超过了binlog_cache_size,它会写入一个临时文件中,这里可以从两个值观察到:
- binlog_cache_use
- binlog_cache_disk_use。
如果发现disk_use很多,那毫无疑问要调整binlog_cache_size了
sync_binlog
这个参数的意思是每写缓存多少次就写入磁盘,这个参数关系到binlog_cache了,如果设置为1,那cache就没有意义了。
binlog-do-db
需要写入哪些库的日志,默认为空,也就代表全部
binlog-ignore-db
需要忽略那些库的日志,默认为空
log-slave-update
从主服务器获取binlog然后写入自己的,如果不开启就是我只用你的binlog但是我不存到自己的。
binlog_format
三种不同的格式,STATEMENT,ROW,MIXED
- STATEMENT就是正常的语句
- ROW就是原本的样子
- MIXED默认使用STATEMENT,有需要就使用ROW格式
说的也是当使用了一些不确定的函数或者什么的导致STATEMENT每次读取出来的值可能不一样