MySQL 知识点

文件格式:

frm、MYI、MYD   分别是   MyISAM   表的表结构\索引\数据文件  
   
  一个库在一个目录下  
  不过在   MySQL   4.0   以上版本中,  
  你可以在   CREATE   TABLE   语句中通过使用   DATA   DIRECTORY="directory"   或   INDEX   DIRECTORY="directory",你可以指定存储引擎在什么地方存放它的表和索引文件。注意,目录必须以一个完整路径指定(不是相对路径)。   这仅仅工作于   MySQL   4.0   中的   MyISAM   表,并且你没有使用   --skip-symlink   选项。查看章节   5.6.1.2   对表使用符号链接。      
    
    
  日志文件可以是一个文件,  
   
  也可以是多个文件,在每次系统启动时产生一个,扩展名是   .000   ,依次递增  
   
  使用一个文件,还是多个日志文件,在系统配置文件   my.cnf   或   my.ini   中的配置项确定

日志:

登录mysql终端
日志文件路径
mysql> show variables like 'general_log_file';
+------------------+------------------------------------+
| Variable_name | Value |
+------------------+------------------------------------+
| general_log_file | /usr/local/mysql/data/localhost.log |
+------------------+------------------------------------+
1 row in set (0.00 sec)
错误日志文件路径
mysql> show variables like 'log_error';
+---------------+------------------------------------+
| Variable_name | Value |
+---------------+------------------------------------+
| log_error | /usr/local/mysql/data/localhost.err |
+---------------+------------------------------------+
1 row in set (0.00 sec)
慢查询日志文件路径
mysql> show variables like 'slow_query_log_file';
+---------------------+-----------------------------------------+
| Variable_name | Value |
+---------------------+-----------------------------------------+
| slow_query_log_file | /usr/local/mysql/data/localhost-slow.log |
+---------------------+-----------------------------------------+
1 row in set (0.01 sec)

mysql有以下几种日志:  
   错误日志:     -log-err  
   查询日志:     -log  
   慢查询日志:   -log-slow-queries  
   更新日志:     -log-update  
   二进制日志: -log-bin

是否启用了日志 
mysql>show variables like 'log_%';

怎样知道当前的日志 
mysql> show master status;

顯示二進制日志數目 
mysql> show master logs;

看二进制日志文件用mysqlbinlog 
shell>mysqlbinlog mail-bin.000001 
或者shell>mysqlbinlog mail-bin.000001 | tail

mysqlbinlog localhost-bin.000202 > new_file_name.log
命令,将目标文件保存为日志文件,可指定保存路径下
 
有个小技巧跟大家介绍下,我在准备转换的时候发现日志文件有2G多,寻思着为什么mysql为什么不把日志按日志定期的分多个文件放呢。结果发现mysql有个更好的方法,可以通过时间参数获取某个时间段的数据,例子如下:
mysqlbinlog   --start-datetime="2010-11-20 00:00:00"  --stop-datetime="2010-11-21 00:00:00" 

在配置文件中指定log的輸出位置. 
Windows:Windows 的配置文件为 my.ini,一般在 MySQL 的安装目录下或者 c:\Windows 下。 
Linux:Linux 的配置文件为 my.cnf ,一般在 /etc 下。

在linux下:

  1. # 在[mysqld] 中輸入
  2. #log
  3. log-error=/usr/local/mysql/log/error.log
  4. log=/usr/local/mysql/log/mysql.log
  5. long_query_time=2
  6. log-slow-queries= /usr/local/mysql/log/slowquery.log

windows下:

  1. # 在[mysqld] 中輸入
  2. #log
  3. log-error="E:/PROGRA~1/EASYPH~1.0B1/mysql/logs/error.log"
  4. log="E:/PROGRA~1/EASYPH~1.0B1/mysql/logs/mysql.log"
  5. long_query_time=2
  6. log-slow-queries= "E:/PROGRA~1/EASYPH~1.0B1/mysql/logs/slowquery.log"

开启慢查询 
long_query_time =2  --是指执行超过多久的sql会被log下来,这里是2秒 
log-slow-queries= /usr/local/mysql/log/slowquery.log  --将查询返回较慢的语句进行记录

log-queries-not-using-indexes = nouseindex.log  --就是字面意思,log下来没有使用索引的query

log=mylog.log  --对所有执行语句进行记录

上一篇:Redis代码阅读1--Redis启动原理


下一篇:Linux查看端口使用状态、关闭端口方法