Mysql采用datadir指定其数据目录,默认情况下所有数据库和各种文件都位于该目录下,可以通过my.cnf固定
[mysqld]
Datadir=/var/local/mysql/var/
Mysql常见文件分别如下
进程ID文件
错误日志(log_error):默认名为host_name.err,对于出现的错误代码,可通过perror error_no方式查看其具体信息;
如果使用mysqld_safe开启mysqld,其有3个选项指定错误信息的输出文件:--syslog使用syslog;--skip-syslog使用默认文件;--log-error使用错误日志文件
二进制日志(log_bin):默认名位pid-bin,记录数据库的更改操作,用于replication和recovery,其还配备有相应的索引文件;
其大小受限于max_binlog_size(最大1g),单个事务不能跨文件存储因此当事务大于该参数设置时相应文件尺寸会超过该参数;
用于super权限的用户可通过 set sql_log_bin=0禁止其执行的语句被记录入该日志;
默认情况下二机制日志不是每次写都同步到磁盘,如果系统crash可能导致最后提交的几条语句信息丢失,可将sync_binlog设置为1,则mysql每次写都将 二进制日志(fdatasync())同步到磁盘 ,最多只丢失一条语句;
innodb表commit时,先将事务信息写入二进制日志然后提交事务,如果在两者中间系统crash,重启时innodb会rollback该事务但该信息仍存在于二进制日志,而innodb_support_xa=1可解决此问题,
innodb表crash重启时,那些rollback的事务会从binary log中清除,以确保binary log准确的记录innodb表数据;
binlog_cache_size:缓存事务的binary log,每个线程都有一个,如果事务缓存大于该值则生成临时文件;同通过状态变量binlog_cache_disk_use/binlog_cache_use查看;
而sync_binglog=1在ext3性能不佳 http://www.mysqlperformanceblog.com/2009/01/21/beware-ext3-and-sync-binlog-do-not-play-well-together/
5.6引入group commit
Fsync(int fd)—将fd对应文件的数据和元数据写入磁盘
Fdatasync(int fd)—将fd对应文件的数据写入磁盘,不含元数据
慢查询日志(slow_query_log):默认名位host_name-slow.log,包含运行时间超过long_query_time(默认10秒)的sql,默认不开启,可设置slow_query_log=1启动;
slow_query_log_file决定文件名,而log_output决定文件路径;
log_output包含file|table|none选项,用于general日志和慢查询日志,
none:即便开启了慢查询也不会记录
file:日志写入文件
table:将日志分别记录入general_log/slow_log
还有一些选项允许定制化:log_queries_not_using_indexes=on,记录没有使用索引的sql;--log-slow-admin-statements:记录诸如optimize|analyze table等admin sql;
Min_examined_row_limit:记录检查行数超出此限定的sql
Mysqldumpslow用于查看slow log;