注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

阿飘的博客

十里平湖霜满天 寸寸青丝愁华年

 
 
 

日志

 
 

mysql 配置和日志  

2010-06-07 15:44:03|  分类: mysql |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

目录:

1 配置说明

2 my.cnf修改log

3 命令说明

 

 

---------------------------------------------------------------------1 配置
my.cnf                           #find 查找my.cnf   /etc/my.cnf
data 目录                        1  查看my.cnf搜索datadir

                                      2 phpinfo搜索MYSQL_SOCKET            /var/lib/mysql/
               
     
------------------mysql 日志


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


通常, MySQL 的日志是放在它的数据库目录下。
要把日志生成在 /var/log 目录下(是系统日志存放的地方,只有 root 账号有写权限),需要 MySQL 进程对这个目录有读写权限,一般是不这么做的,也考虑到安全问题,包括 MySQL 本身的数据安全,因为对 MySQL 的所有操作,都会记录到常规查询日志。MySQL 的日志就不要用 /var/log/ 目录下。

---------------------------------------------------------------------2 my.cnf
# 在[mysqld] 中輸入

log-bin=/var/lib/mysql/mysql-bin

#expire_logs_days = 10
#max_binlog_size = 100M

log=/var/lib/mysql/mysql.log
log-error=/var/lib/mysql/error.log

#log-update=/var/lib/mysql/update.log  未能成功生成

long_query_time=1
log-slow-queries

log-queries-not-using-indexes

 

 

 

 


#详细说明
log-bin=/var/lib/mysql/mysql-bin #二进制LOG,mysqlbinlog直接读取二进制日志文件。二进制日志包含所有更新数据的语句 ,其目的是在恢复数据库时用它来把数据尽可能恢复到最后的状态。另外,如果做同步复制( Replication )的话,也需要使用二进制日志传送修改情况。log_bin指定日志文件,如果不提供文件名,MySQL将 自己产生缺省文件名。MySQL会在文件名后面自动添加数字索引,每次启动服务时,都会重新生成一个新的二进制文件。

 

时间长了log bin也会占很大的硬盘空间,所以在my.ini中加上对其的限制。
#expire_logs_days = 10
#max_binlog_size = 100M

---------------------

# show master status;

#mysqlbinlog mysql-bin.000052

-------------格式如下:

flush privileges
/*!*/;
# at 173
#090814 10:09:22 server id 1  end_log_pos 448   Query   thread_id=51    exec_tim                                             e=0     error_code=0
use sq_gllutf8/*!*/;
SET TIMESTAMP=1250215762/*!*/;
/*!\C utf8 *//*!*/;
SET @@session.character_set_client=33,@@session.collation_connection=33,@@sessio                                             n.collation_server=8/*!*/;
update gll_products set  sn_name='休闲裤'  ,ch_name='H957-3'  ,color='卡其'  ,co                                             mposition='60%马棉44'  ,huoqi=''  ,p_remarks=''  ,utime='2009-08-14 10:09:22'  ,                                             uip='192.168.200.96'   WHERE id = '339'
/*!*/;
# at 448
#090814 10:11:14 server id 1  end_log_pos 556   Query   thread_id=59    exec_tim                                             e=0     error_code=0
SET TIMESTAMP=1250215874/*!*/;
delete from gll_member  WHERE id = '26'
/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;

-----------------------------------


log=/var/lib/mysql/mysql.log   #对所有执行语句进行记录

----------------------------格式如下:

090814 10:11:14      59 Connect     sq_szczkj@localhost on
                     59 Init DB     sq_gllutf8
                     59 Query       SET NAMES 'UTF8'
                     59 Query       delete from gll_member  WHERE id = '26'
                     59 Quit
090814 10:11:15      60 Connect     sq_szczkj@localhost on
                     60 Init DB     sq_gllutf8
                     60 Query       SET NAMES 'UTF8'
                     60 Query       select * from gll_member  ORDER BY id DESC
                     60 Query       select * from gll_member  ORDER BY id DESC   limit  0,50
                     60 Quit
                     61 Connect     sq_szczkj@localhost on
                     61 Init DB     sq_gllutf8
                     61 Query       SET NAMES 'UTF8'
                     61 Query       select * from gll_zone  ORDER BY id DESC
                     61 Query       select * from gll_zone  ORDER BY id DESC   limit  0,99
                     61 Quit

---------------------------------


log-error=/var/lib/mysql/error.log

#log-update=/var/lib/mysql/update.log  未能成功生成


long_query_time=1
log-slow-queries

#--log-slow-queries[=file_name ] 的file_name参数可选,缺省值是host_name -slow.log ,如果指定了file_name参数的话,mysql就会把慢查询的日志记录到file_name所设定的文件中,如果 file_name提供的是一个相对路径,mysql会把日志记录到mysql的data目录中。
log-queries-not-using-indexes #在mysql的启动配置文件或命令行参数中增加--log-queries-not-using-indexes 参数就可以启用未使用索引查询语句了,日志记录的文件就是log-slow-queries对应的文件。

 

 

----------------Mysql的log_slow_queries日志文件设置不当错误

1,容易发生错误的设置:
log_slow_queries = ON
log_slow_queries=/var/log/slow-queries.log
long_query_time=5
这种容易导致slow-queries.log无法读取的错误(权限问题)。
常见错误提示:
[ERROR] Could not use /var/log/slow-queries.log for
logging (error 13). Turning logging off for the whole duration of the
MySQL server process. To turn it on again: fix the cause, shutdown the
MySQL server and restart it.


2,比较妥当的配置:
log_slow_queries = ON
log_slow_queries=slow-log
long_query_time=5
直接在目录/var/lib/mysql/ 下生成 slow-log 文件

 

 

 

----------------------------测试慢日志

mysql>select sleep(1);

mysql>select sleep(3);

mysql>select * from gll_products;

 

打开mysql.log和慢日志文件可以 看到

select sleep(3);

select * from gll_products;

 

 

---------------------------------------------------------------------3 命令说明

 

 

 

show variables like 'long%'; 查询 long_query_time 的值


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

mysql> show variables like 'log_%';
+---------------------------------+--------------------------+
| Variable_name                   | Value                    |
+---------------------------------+--------------------------+
| log_bin                         | ON                       |
| log_bin_trust_function_creators | OFF                      |
| log_error                       | /var/lib/mysql/error.log |
| log_queries_not_using_indexes   | ON                       |
| log_slave_updates               | OFF                      |
| log_slow_queries                | ON                       |
| log_warnings                    | 1                        |
+---------------------------------+--------------------------+

 

 



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

mysql>show variables like 'log_bin'; 确认你日志是否启用

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

查看从某一段时间到某一段时间的二进制日志
mysqlbinlog --start-datetime='2008-01-19 00:00:00' --stop-datetime='2008-01-30 00:00:00'  /var/lib/mysql/mysql-bin.000006 > mysqllog1.log

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

flush privileges;  刷新数据库

mysql> SHOW STATUS;  运行下列命令可以获取状态变量的值:

mysql> SHOW STATUS LIKE ‘[匹配模式]’; ( 可以使用%、?等 )  如果只要检查某几个状态变量,可以使用下列命令:

select version(); 查看mysql版本
  评论这张
 
阅读(8618)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017