Chinaunix首页 | 论坛 | 博客
  • 博客访问: 405061
  • 博文数量: 112
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 800
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-29 13:41
文章分类

全部博文(112)

文章存档

2020年(1)

2018年(10)

2017年(27)

2016年(18)

2015年(31)

2014年(25)

分类: Mysql/postgreSQL

2014-12-23 18:31:42

1、错误日志:
                  记录当前mysqld启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息;
                   --log-error=file_name    指定mysql服务器保存错误日志文件(默认错误日志名为hostname.err)的位置;

2、二进制日志:
                     二进制日志(binlog)记录了所有的DDL(数据定义语言)语句和DML(数据操纵语言)语句,但不包括数据查询语句。语句以“事件”的形式保存,它描述了数据的更改过程。此日志对于灾难时的数据恢复起着极其重要的作用。
    2.1、日志的位置和格式:
                                      --log-bin=file_name    将包含所有更新数据的sql命令写入日志文件。默认名为                                                                            hostname-bin。如没有指定路径,默认路径为数据目录。
    2.2、日志的读取:
                             例:mysqlbinlog  localhost-bin.000006


     2.3、日志的删除:
                              对于比较繁忙的OLTP(在线事务处理)系统,由于每天生成日志量大,这些日志如果长         时间不清除,将会浪费很大的磁盘空间。因此,需要定期删除日志。
                      方法一:执行reset master命令,该命令将删除所有binlog日志,新日志编号从”000001“开始。
                                   mysql>system ls -ltr localhost-bin*    #查看删除前的日志;
                                   mysql>reset master;     #用reset master命令删除日志;
                      方法二:执行purge master logs to 'mysql-bin.******',该命令将删除"******"编号之前的所有日志。
                                   mysql>system ls -ltr localhost-bin*    #查看删除前日志;
                                   mysql>purge master logs to 'localhost-bin.000006';     #删除编号000006之前的所有日志;
                       方法三:执行purge master logs before ‘yyyy-mm-dd hh:mm:ss’命令,删除日期为‘yyyy-mm-dd hh:mm:ss之前产生的所有日志。
                                    mysql>system ls -ltr localhost-bin*    #查看删除前日志;
                                    mysql>purge master logs before ‘2007-08-10 04:04:00’;
                   

                         方法四:设置参数--expire_logs_days=#,设置日志的过期天数,过了指定的天数后日志将会被自动删除,这样有利于减少DBA管理日志的工作量。
                                     vi /etc/my.cnf
                                      [mysqld]
                                      log-bin=mysql-bin
                                      expire_logs_day=30        #过期天数设置为30天;

                                      service mysql restart        
                                       mysqladmin  flush-log     #flush logs 触发日志文件更新。    
                                      
       2.4、其它选项:
                            二进制日志由于记录了数据的变化过程,对于数据的完整性和安全性起着非常重要的作用。
                            --binlog-do-db=db_name      如果当前数据库(use dbname)是db_name,应将更新记录到二进制日志中。
                            --binlog-ignore-db=db_name      如果当前数据库(use dbname)是db_name,不应将更新保存到二进制日志中,其它没有显示忽略的数据库都将进行记录。
                            --innodb-safe-binlog          配合--sync-binlog=N(每写N次日志同步磁盘)一起使用,使得事务在日志中的记录更加安全。
                            set sql_log_bin=0        具有SUPER权限的客户端可以通过此语句禁止将自己的语句记入二进制记录。使用此选项一定要小心,因为它很可能造成日志记录的不完整或者在复制环境中造成主从数据不一致。
             
3、查询日志:
                  记录了客户端所有的语句,二进制日志不包含只查询数据的语句。
      3.1、日志的位置(可在/etc/my.cnf中设置)和格式:
                                        --log=file_name或-l file_name     mysqld使用此选项启动时,查询日志开始被记录。
       3.2、日志的读取:
                                 查询日志记录的格式是纯文本,可以直接进行读取。

4、慢查询日志:
                     慢查询日志记录了包含所有执行时间超过参数long_query_time(单位:秒)所设置值的sql语句日志。
          4.1、文件位置和格式:
                                         --log-slow-queries=file_name        mysqld使用此选项启动时,慢查询日志开始被记录。默认文件名为host_name-slow.log。
          4.2、日志的读取:
                                             
                                    慢查询日志记录的格式也是纯文本,和错误日志、查询日志一样,可以被直接读取。
                    例:
                    show variables like 'long%';     #查询long_query_time的值;
                    set long_query_time=2;        #修改慢查询时间为2秒;
                    使用select语句查询时间低于2秒是不会出现在慢查询日志中的,时间大于2秒是会出现在慢查询日志中的。
                    mysqldumpslow    hostname-slow.log       #使用mysqldumpslow对慢查询日志进行分类汇总。
             
            
总结:
        系统故障,建议首先查看错误日志,以便能够迅速定位故障原因。
        二进制日志记录数据的变更、数据的备份、数据的复制等操作,以帮助用户进行数据恢复等操作,通过--log-bin选项将此日志打开。
        查询日志记录数据库发生的任何操作,包括select,通过--log选项将此日志打开,次日志默认关闭,一般不建议打开此日志,以免影响系统整体性能。
        慢查询日志查看系统的性能问题,通过此日志找到有性能问题的sql语句,--log-slow-queries选项打开慢查询日志。对于大量的慢查询日志,建议使用mysqldumpslow工具。

阅读(968) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~