show global variables like ‘%log%’; #查看各种日志的定义(其中二进制日志最重要)
日志分类:
1、错误日志:error_log、warnings_log
2、一般查询日志:general_log、general_log_file、log(一般是关闭的,因为会产生大量的io)
3、慢查询日志:log_query_time、log_slow_queries、slow_query_log、slow_query_log_file
set global slow_query_log=1; #开启慢查询日志
4、二进制日志:
二进制日志的格式:
基于语句:statement
基于行:row
混合方式:mixed
备注:
可以通过show global variables like ‘%log%’; #查看当前是使用哪种日志格式
二进制日志文件:
索引文件(比如mysql-bin.index)
二进制日志文件(mysql-bin.000005)
show master status; #查看当前使用的二进制文件
show binlog events in ‘mysql-bin.000005’; #查看mysql-bin.000005文件中记录的内容
备注:
mysql-bin.000005是退出mysql命令行之后在linux的data目录下查到的文件
mysqlbinlog命令:
–start-position
–stop-position
–start-datetime
–stop-datetime
mysqlbinlog mysql-bin.000005 #查看000005文件的内容(因为是二进制文件,不能用cat来查看)
mysqlbinlog –start-position=107 –stop-position=358 mysql-bin.000005; #指定位置(这个位置格式是000005文件中的格式)
mysqlbinlog –start-datetime=’2013-04-26 15:14:39’ mysql-bin.000005; #指定时间(年月日的格式与000005二进制文件中的格式不一样)
为了实现二进制日志滚动,可以使用以下命令:
flush logs;
show binary logs; #查看当前所有的二进制文件
purge binary logs to ‘某二进制日志文件’; #删除此二进制文件之前的所有日志文件
5、中继日志:从服务器上,从主服务器的二进制日志文件中复制而来的事件,并保存为的日志文件
6、事务日志:事务性存储引擎用于保证原子性、一致性、隔离性和持久性
mysql调优:
innode_flush_log_at_trx_commit:默认为1
值为0表示每秒同步,并执行磁盘flush操作
值为1表示每事务同步,并执行磁盘flush操作
值为2表示每事务同步,但不执行磁盘flush操作
show engines; #查看mysql支持的存储引擎
存储引擎对比:
(1)myisam:
表锁
不支持事务
不支持外键
b数索引、fulltext索引、空间索引
支持表压缩
.frm:表格式
.myd:数据文件
.myi:索引文件
(2)innodeDB:
行级锁
支持事务
b数索引、聚簇索引、自适应hash索引
支持使用表空间
支持使用raw磁盘设备(将数据放在没有文件系统的磁盘上,因为可以实现自我管理文件)
.frm:表格式
.ibd:表空间(innode_file_per_table的值设置为on,就会为每个表建立一个表空间。建议这样设置)
备注:
存储引擎支持每张表各用一个存储引擎。但是不建议这样设置。
因为如果一个事务涉及到多个表的时候,就只能多个表都用innodeDB。