最近由于项目需要,所以小魏总结了经常用的mysqlbinlog日志常用的几个命令,然后小魏进行了搜集希望分享给大家,同时方便自己在操作时忘记可以用的上,那么接下来看看小魏亲自测试总结的binlog日志常用命令整理吧!
什么是binlog日志:binlog既二进制日志文件,它记录了数据库上的所有改变.
重要性:
众所周知,binlog日志对于mysql数据库来说是十分重要的。在数据丢失的紧急情况下,我们往往会想到用binlog日志功能进行数据恢复(定时全备份+binlog日志恢复增量数据部分),化险为夷!
1.binlog日志常用命令整理如下:
mysqlbinlog日志是否开启:show variables like '%log_bin%'; 查看binlog日志位置:show variables like '%datadir%'; 查看binlog日志文件列表:show binary logs; 查看指定binlog文件的内容:show binlog events in 'mysql-bin.000026'; 只查看第一个binlog文件的内容:show binlog events; 查看当前正在写入的binlog文件:show master status\G 查看binlog的格式:show variables like 'binlog_format'; purge binary logsto 'mysql-bin.**' #删除到**文件 flush logs; 刷新日志 reset master; 重置(清空)所有binlog日志 show variables like '%log%'; 查看log
2.MySQL数据的binlog处理方法 日志定时清理
日志太多导致网站可能出现的情况如下:
1.最近发现mysql的binlog目录下的日志太多了,磁盘空间被占满了,导致网站访问不了。 2.对于比较繁忙的OLTP系统,由于每天生产日志量大,这些日志如果长时间不清理,将会对磁盘空间带来很大的浪费,因此,定期删除日志是DBA维护MySQL数据库的一个重要工作内容 3.当开启MySQL数据库主从时,会产生大量如mysql-bin.00000* log的文件,这会大量耗费您的硬盘空间。
查看指定删除日志
mysql >show binary logs; 查看多少binlog日志,占用多少空间。
mysql> PURGE MASTER LOGS TO ‘mysql-bin.002467’; 删除mysql-bin.002467以前所有binlog,这样删除可以保证*.index信息与binlog文件同步。
自动设置清理:
mysql> set global expire_logs_days = 5; 把binlog的过期时间设置为5天; mysql> flush logs; 刷一下log使上面的设置生效,否则不生效。
为保证在MYSQL重启后仍然有效,在my.cnf中也加入此参数设置
expire_logs_days = 5
手动清理
mysql>PURGE MASTER LOGS BEFORE DATE_SUB(CURRENT_DATE, INTERVAL 5 DAY); 手动删除5天前的binlog日志
不复启mysql重新加载my.cnf文件的情况下,修改mysqlbinlog类型的方法:
mysql> SET SESSION binlog_format = ‘STATEMENT’;
mysql> SET SESSION binlog_format = ‘ROW’;
mysql> SET SESSION binlog_format = ‘MIXED’;
mysql> SET GLOBAL binlog_format = ‘STATEMENT’;
mysql> SET GLOBAL binlog_format = ‘ROW’;
mysql> SET GLOBAL binlog_format = ‘MIXED’;
利用binlog恢复数据:
bin/mysqlbinlog –start-datetime=’2011-7-7 18:0:0′–stop-datetime=’2011-7-7 20:07:13′ data/mysql-bin.000008 |mysql -u root