MySQL mysqlbinlog查看binlog时报错unknown variable 'default-character-set=utf8'解决

转载来自:http://www.cnblogs.com/cobbliu/p/4311926.html


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

mysql查看各种日志是否启用:show variables like 'log_%';

在linux下指定日志输出位置:vim /etc/my.cnf

Sql代码   收藏代码
  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  
开启慢查询 
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  --对所有执行语句进行记录


裸的binlog文件是无法直接查看的,mysqlbinlog这个工具是用来查看binlog文件内容的(使用方式man mysqlbinlog查看),但是使用mysqlbinlog将binlog文件转换成人类可读的内容时却报错:

1
2
[xxx@dbhost log]$ mysqlbinlog mysql-bin.000004
mysqlbinlog: unknown variable  'default-character-set=utf8'

  原因是mysqlbinlog这个工具无法识别binlog中的配置中的default-character-set=utf8这个指令。

      两个方法可以解决这个问题

一是在MySQL的配置/etc/my.cnf中将default-character-set=utf8 修改为 character-set-server = utf8,但是这需要重启MySQL服务,如果你的MySQL服务正在忙,那这样的代价会比较大。

二是用mysqlbinlog --no-defaults mysql-bin.000004 命令打开


MySQL 最常用的 4 种日志类型:错误日志、二进制日志、查询日志和慢查询日志。
4 种日志各有不同的用途。
系统故障时,建议首先查看错误日志,以帮助用户迅速定位故障原因。
如果要记录数据的变更、数据的备份、数据的复制等操作时,二进制日志必须打开,以
帮助用户进行数据恢复等操作。默认不记录此日志,建议通过--log-bin 选项将此日志打开。
如果希望记录数据库发生的任何操作,包括 SELECT,则需要用--log 将查询日志打开,
此日志默认关闭,一般情况下建议不要打开此日志,以免影响系统整体性能。
如 果希 望查看 系统的 性能 问题, 希望 找到有 性能 问题的 SQL 语 句,则 需要 用
--log-slow-queries 打开慢查询日志。对于大量的慢查询日志,建议使用 mysqldumpslow 工具
来进行汇总查看。




你可能感兴趣的:(msyql)