关闭

mysql 配置和日志

726人阅读 评论(0) 收藏 举报

目录:

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版本
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:734842次
    • 积分:10981
    • 等级:
    • 排名:第1501名
    • 原创:480篇
    • 转载:10篇
    • 译文:0篇
    • 评论:29条
    文章分类
    最新评论