【澳门金沙vip】MySQL中的binlog相关命令和恢复技巧

mysql二进制日志文件出错导致mysql服务无法启动

今天打开phpmyadmin发现连不上mysql数据库,重启mysql启动不起来,查看日志发现如下错误

 mysqld: File '.\mysql-bin.000370' not found (Errcode: 2)
141120 13:23:13 [ERROR] Failed to open log (file '.\mysql-bin.000370', errno 2)
141120 13:23:13 [ERROR] Could not open log file
141120 13:23:13 [ERROR] Can't init tc log
141120 13:23:13 [ERROR] Aborting

进入mysql/data目录下手动删除mysql-bin.xxxxx相关的文件或者进入mysql命令行执行RESET
MASTER删除全部日志,重启mysql。

查询得知Mysql Data目录生成的大量mysql-bin.xxxxx文件是叫做MySQL Binary
Log,主要有下面两个作用:

1、数据恢复。

2、在主从服务器上提高复制的可靠性。

 

这些日志可以mysqlbinlog工具进行查看

#mysqlbinlog mysql-bin.xxxxx

 

如果不需要这些日志文件的话,在my.ini中注释掉以下两行,就不会再生成二进制日志文件了:
#log-bin=mysql-bin
#binlog_format=mixed
 

不注释的话可以配置自动删除的天数,在mysql配置文件中,找到[mysqld],加上以下语句:

expire_logs_days = 3

也可以直接使用mysql命令配置:mysql> SET GLOBAL expire_logs_days=1;

可以将二进制日志自动删除的天数设为3。不设置的话默认为0,表示不自动删除。

 

今天打开phpmyadmin发现连不上mysql数据库,重启mysql启动不起来,查看日志发现如下错误
span…

操作命令:

操作命令:

复制代码 代码如下:

复制代码 代码如下:

show binlog events in ‘mysql-bin.000016’ limit 10;

show binlog events in ‘mysql-bin.000016’ limit 10;

reset master 删除所有的二进制日志
flush logs  产生一个新的binlog日志文件

reset master 删除所有的二进制日志
flush logs  产生一个新的binlog日志文件

show master logs; 或者 show binary logs; 查看二进制文件列表和文件大小

show master logs; 或者 show binary logs; 查看二进制文件列表和文件大小

复制代码 代码如下:

复制代码 代码如下:

./mysqlbinlog –start-datetime=”2012-05-21 15:30:00″
–stop-datetime=”2012-05-21 16:40:00″ /binlog/mysql-bin.000005 >
a.log

./mysqlbinlog –start-datetime=”2012-05-21 15:30:00″
–stop-datetime=”2012-05-21 16:40:00″ /binlog/mysql-bin.000005 >
a.log

  1. 要想通过日志恢复数据库,在你的 my.cnf
    文件里应该有如下的定义,log-bin=mysql-bin,这个是必须的
    binlog-do-db=db_test
    ,这个是指定哪些数据库需要日志,每行一个,如果不指定的话默认就是所有数据库.
  1. 要想通过日志恢复数据库,在你的 my.cnf
    文件里应该有如下的定义,log-bin=mysql-bin,这个是必须的
    binlog-do-db=db_test
    ,这个是指定哪些数据库需要日志,每行一个,如果不指定的话默认就是所有数据库.

复制代码 代码如下:

复制代码 代码如下:

[mysqld]
澳门金沙vip, log-bin=mysql-bin
 binlog-do-db=db_test
 binlog-do-db=db_test2 

[mysqld]
 log-bin=mysql-bin
 binlog-do-db=db_test
 binlog-do-db=db_test2 

3.删除二进制日志:

3.删除二进制日志:

复制代码 代码如下:

复制代码 代码如下:

mysql> reset master  (清空所有的二进制日志文件)
purge master logs to ‘mysql-bin.000006’;
 (删除mysql-bin.000006之前的二进制日志文件)
purge master logs before ‘2007-08-10 04:07:00’  (删除该日期之前的日志)

mysql> reset master  (清空所有的二进制日志文件)
purge master logs to ‘mysql-bin.000006’;
 (删除mysql-bin.000006之前的二进制日志文件)
purge master logs before ‘2007-08-10 04:07:00’  (删除该日期之前的日志)