配置文件 my.cnf
查询方式: mysql --help | grep my.cnf
日志文件:
错误日志: SHOW VARIABLES LIKE 'log_error' \G;
慢查询日志: SHOW VARIABLES LIKE 'long_query_time' \G; 查询工具 mysqldumpslow。
查询日志: 主机名.log
二进制日志 : SHOW MASTER STATUS\G;
二进制日志的几个作用:
恢复:某些数据恢复需要二进制日志
复制:
审计:可以通过二进制日志中的信息进行审计,判断是否有对数据进行注入
配置参数
1.max_binlog_size: 单个二进制文件的最大值
2.binlog_cache_size:缓冲的大小(基于会话),这个值的设置可以通过查询SHOW variables like "binlog_cache_size" 查看 binlog_cache_use 使用缓冲写入次数,binlog_cache_disk_use 使用临时文件写入次数
3.sync_binlog:sync_binlog=N,表示每次缓冲多少次就写入日志。如果1,表示同步。同时开启innodb_support_xa=1 可以保证二进制日志和InnoDB存储引擎文件同步
4.binlog-do-db:写入那些数据库
5.binlog-ignore-db:忽略那些数据库
6.log-slave-update:如果需要 master>slave>slave
7.binlog-format: 存储格式有STATEMENT,ROW,MIXED
STATEMNET:记录逻辑SQL
ROW:记录行更改情况
MIXED:默认SQL,某些情况下使用ROW,如使用不确定函数(UUID(),USER()..)等
通常情况下设置成ROW,这可以为数据库的恢复和复制带来更好的可靠性。但也会带来二进制大小的增加
如数据为100W的两者一样的表, 分别执行UPDATE操作, STATEMENT的只要条SQL记录,但ROW记录了一条记录的修改。
查看工具:mysqlbinlog
表结构定义文件: 无论采用何种存储引擎,MySQL都有一个以frm为后缀的文件,这个文件记录了该表的表结构定义。视图定义也是用frm
InnoDB存储引擎文件:
表空间文件:ibdata1,默认表空间文件, 可以通过 innodb_data_file_path 设置
innodb_file_per_table设置之后,可以将每个基于InnoDB引擎的表产生一个独立表空间。命名规则为表名.ibd.
需要注意的是,这些单独的表空间文件仅存储代表的数据,索引,插入缓冲BITMAP等信息,其余还是存放到默认表空间 如 undo信息,插入缓冲索引页,系统事务信息,二次些缓冲等。
重做日志文件:
默认情况下,数据目录下会有两个名为 ib_logfile0,ib_logfile1的文件。
每个InnoDB 至少有1个重做日志文件组,每个文件组至少2个重做日志文件。每个文件大小一致,循环使用。
innodb_log_file_size:每个重做日志文件的大小
innodb_log_files_in_group:每组的文件数量
innodb_mirrored_log_groups:组的数量
innodb_log_group_home_dir:日志文件组所在目录
重做日志文件的大小设置对于InnoDB存储引擎的性能有非常大的影响,一方面不能设置的很大,大了,恢复时间可能需要很长,另一个方面不能太小,否则可能会导致一个事务日志需要多次切换重做日志文件,重做日志文件太小会导致频繁的发生async checkpoint,导致性能抖动。