mysql5.7 打开日志bin-log

进入mysql 的文件下(未配置环境变量),进入mysql 。

1、首先确认你日志是否启用了mysql>show variables like ‘log_bin’。
在这里插入图片描述
编辑mysql配置文件

[mysqld]
default_authentication_plugin=mysql_native_password
port = 3306
添加:
log_bin=mysql_bin  
binlog-format=Row
server-id=1
expire_logs_days = 7   //修改保存天数      --查看mysql> show variables like 'expire_logs_days';
max_binlog_size = 500M   //修改保存文件大小     --查看mysql>  show variables like 'max_binlog_size';
#需要同步的数据库名称
binlog-do-db=test
binlog_do_db=xx
binlog_do_db=jj
#忽略数据库
binlog-ignore-db=mysql

在这里插入图片描述
在这里插入图片描述
2、查看正在写入的日志文件mysql> show master status,查看当前服务器所有的二进制日志文件show master logs.

二进制日志(binary log)默认放在数据目录下(系统变量datadir下)show variables like ‘datadir’;
在这里插入图片描述
查看当前binlog文件内容:show binlog events in ‘mysql-bin.000001’;

查看二进制文件内容:mysqlbinlog --no-defaults …/data/mysql_bin.000005
在这里插入图片描述
解密操作数据库的语句
mysqlbinlog --base64-output=decode-row -v ./data/mysql_bin.000005

在这里插入图片描述

实战

新建数据表插入数据并删除表格.
在这里插入图片描述
flush logs会生成新的mysql-bin.00000数+1文件
在这里插入图片描述
在这里插入图片描述
show binlog events in ‘mysql_bin.000006’;
解密操作数据库的语句mysqlbinlog --base64-output=decode-row -v ./data/mysql_bin.000006
记录开始插入和最后一条记录commit对应的at后的值
在这里插入图片描述
恢复数据:>mysqlbinlog --start-position=“219” --stop-position=“628” …/data/mysql_bin.000006 |mysql -uroot -p
在这里插入图片描述

修改mysql的binlog的位置

 

最近项目上装的mysql服务,分配的磁盘空间太小了,导致binlog两天时间就能打满,这里记录下处理方式

mysql的binlog日志是一个很重要的日志,以事件形式记录了所有的DDL和DML(除了数据查询语句)语句,还包含执行的消耗的时间,在数据丢失的紧急情况下,我们可以利用binlog日志功能进行数据恢复。

1、问题上面说了,默认情况下binlog日志默认在/var/spool/mail/root路径下,磁盘空间比较小很快就被binlog打满了,为了保证项目上能正常使用,之前是维护人员手动清理和备份。在找到重新挂盘和修改binlog日志路径方法前,先给现场的配置下自动清理。

2、配置自动清理在my.cnf文件中,这个文件路径不知道的话执行mysql --help | grep 'Default options' -A 1,就会列出文件的路径来

 修改配置文件,vi /etc/my.cnf,找到logbin的部分

路径因为测试环境没法挂盘,随便写了个路径,下面新建我们上面指定的文件夹mkdir -p /home/logs,然后重启mysql的时候报错了,经过一番折腾后,发现建的文件夹必须赋权限,泪目。。。chown -R mysql.mysql /home/logs

然后重启service mysql restart,去新建的目录下看看,已经有最新的日志了,我的截图日志比较多是因为我重启过好几次,每重启一次生成一次新的。

到这里更换路径和自动清理的工作就完成了。

下面列几个常用的命令

0、查看日志开启状态 show variables like 'log_%';  

 

1、查看所有binlog日志列表 show master logs;

2、查看最新一个binlog日志的编号名称,及其最后一个操作事件结束点 show master status;

 

3、刷新log日志,立刻产生一个新编号的binlog日志文件,跟重启一个效果 flush logs;

4、清空所有binlog日志 reset master;

5、日志查看,因为是二进制文件没法用vi等打开,可以用mysql的mysqlbinlog打开,/usr/bin/mysqlbinlog /home/logs/mysql-bin.000001,当然每个人路径可能不一样,这个只能自己去找了。

我这是新日志,也没做什么操作,所以日志内容没什么东西,具体的日志内容解释,以及如何通过binlog恢复数据,以后有时间的话再写写。

删除MySQL binlog日志的方法

对于比较繁忙的OLTP(在线事务处理)系统,由于每天生成日志量大,这些日志如果长时间不清除,将会对磁盘空间带来很大的浪费。因此,定期删除日志是DBA维护MySQL数据库的一个重要工作内容。下面跟大家分享几种删除MySQL binlog的方法。出自《深入浅出MySQL》第二版,如果你在虚拟机做实验导致binlog过大使得磁盘空间不多,下面的方法清理最合适不了过了

注意事项:

1.MySQL binlog日志是数据库灾难后恢复的关键,删除前一定要做好备份

2.如果做了MySQL主从,从服务器,会读取主服上的binlog,所以删除前要注意

3.个人建议,若真要删除binlog腾出硬盘空间,那先清理几个月前的binlog

 

方法一:

执行“RESET MASTER;”命令,该命令将删除所有BINLOG日志,新日志编号从“000001”开始。下例删除当前所有日志

复制代码
mysql> system ls -ltr /data/mysql/  
总用量 29756
drwx------. 2 mysql root      4096 12月  8 08:06 test
drwx------. 2 mysql mysql     4096 12月  8 08:06 performance_schema
drwx------. 2 mysql root      4096 12月  8 08:06 mysql
-rw-rw----. 1 mysql mysql    29698 12月  8 08:06 mysql-bin.000001
-rw-rw----. 1 mysql mysql  1036239 12月  8 08:06 mysql-bin.000002
-rw-rw----. 1 mysql mysql  5242880 12月  8 08:06 ib_logfile1
-rw-rw----. 1 mysql mysql      264 12月  8 08:38 mysql-bin.000003
-rw-rw----. 1 mysql mysql       76 12月  8 08:40 mysql-bin.index
-rw-rw----  1 mysql mysql        5 12月  8 08:40 localhost.localdomain.pid
-rw-r-----. 1 mysql root      3270 12月  8 08:56 localhost.localdomain.err
drwx------  2 mysql mysql     4096 12月  8 11:53 testdb
-rw-rw----. 1 mysql mysql 18874368 12月  8 11:53 ibdata1
-rw-rw----. 1 mysql mysql  5242880 12月  8 11:53 ib_logfile0
drwx------  2 mysql mysql     4096 12月  8 13:34 database
-rw-rw----  1 mysql mysql     1243 12月  8 13:35 mysql-bin.000004
复制代码

查看结果:

复制代码
mysql> reset master;
Query OK, 0 rows affected (0.12 sec)

mysql> system ls -ltr /data/mysql/
总用量 28708
drwx------. 2 mysql root 4096 12月 8 08:06 test
drwx------. 2 mysql mysql 4096 12月 8 08:06 performance_schema
drwx------. 2 mysql root 4096 12月 8 08:06 mysql
-rw-rw----. 1 mysql mysql 5242880 12月 8 08:06 ib_logfile1
-rw-rw---- 1 mysql mysql 5 12月 8 08:40 localhost.localdomain.pid
-rw-r-----. 1 mysql root 3270 12月 8 08:56 localhost.localdomain.err
drwx------ 2 mysql mysql 4096 12月 8 11:53 testdb
-rw-rw----. 1 mysql mysql 18874368 12月 8 11:53 ibdata1
-rw-rw----. 1 mysql mysql 5242880 12月 8 11:53 ib_logfile0
drwx------ 2 mysql mysql 4096 12月 8 13:34 database
-rw-rw---- 1 mysql mysql 107 12月 8 16:54 mysql-bin.000001
-rw-rw---- 1 mysql mysql 19 12月 8 16:54 mysql-bin.index
mysql>

复制代码

第二种方法:
执行“PURGE MASTER LOGS TO 'mysql-bin.*******'”命令。该命令将删除“******”编号之前的所有日志。下例删除了“mysql-bin.000004”编号之前的所有日志:

复制代码
mysql> system ls -ltr /data/mysql
总用量 29756
drwx------. 2 mysql root      4096 12月  8 08:06 test
drwx------. 2 mysql mysql     4096 12月  8 08:06 performance_schema
drwx------. 2 mysql root      4096 12月  8 08:06 mysql
-rw-rw----. 1 mysql mysql    29698 12月  8 08:06 mysql-bin.000001
-rw-rw----. 1 mysql mysql  1036239 12月  8 08:06 mysql-bin.000002
-rw-rw----. 1 mysql mysql  5242880 12月  8 08:06 ib_logfile1
-rw-rw----. 1 mysql mysql      264 12月  8 08:38 mysql-bin.000003
-rw-rw----. 1 mysql mysql       76 12月  8 08:40 mysql-bin.index
-rw-rw----  1 mysql mysql        5 12月  8 08:40 localhost.localdomain.pid
-rw-r-----. 1 mysql root      3270 12月  8 08:56 localhost.localdomain.err
drwx------  2 mysql mysql     4096 12月  8 11:53 testdb
-rw-rw----. 1 mysql mysql 18874368 12月  8 11:53 ibdata1
-rw-rw----. 1 mysql mysql  5242880 12月  8 11:53 ib_logfile0
drwx------  2 mysql mysql     4096 12月  8 13:34 database
-rw-rw----  1 mysql mysql     1243 12月  8 13:35 mysql-bin.000004
复制代码

执行命令后的结果如下:

复制代码
mysql> purge master logs to 'mysql-bin.000004';
Query OK, 0 rows affected (0.08 sec)

mysql> system ls -ltr /data/mysql
总用量 28708
drwx------. 2 mysql root 4096 12月 8 08:06 test
drwx------. 2 mysql mysql 4096 12月 8 08:06 performance_schema
drwx------. 2 mysql root 4096 12月 8 08:06 mysql
-rw-rw----. 1 mysql mysql 5242880 12月 8 08:06 ib_logfile1
-rw-rw---- 1 mysql mysql 5 12月 8 08:40 localhost.localdomain.pid
-rw-r-----. 1 mysql root 3270 12月 8 08:56 localhost.localdomain.err
drwx------ 2 mysql mysql 4096 12月 8 11:53 testdb
-rw-rw----. 1 mysql mysql 18874368 12月 8 11:53 ibdata1
-rw-rw----. 1 mysql mysql 5242880 12月 8 11:53 ib_logfile0
drwx------ 2 mysql mysql 4096 12月 8 13:34 database
-rw-rw---- 1 mysql mysql 1243 12月 8 13:35 mysql-bin.000004
-rw-rw----. 1 mysql mysql 19 12月 8 16:55 mysql-bin.index

复制代码


第三种方法以:

执行“PURGE MASTER LOGS BEFORE 'yyyy-mm-dd hh24:mi:ss'”  命令,该命令将删除日期为“hh24:mi:ss”之前产生的所有日志。下例中删除了日期在“2013-12-08 13:00:00”之前的所有日志:

复制代码
mysql> system ls -ltr /data/mysql
总用量 29756
drwx------. 2 mysql root      4096 12月  8 08:06 test
drwx------. 2 mysql mysql     4096 12月  8 08:06 performance_schema
drwx------. 2 mysql root      4096 12月  8 08:06 mysql
-rw-rw----. 1 mysql mysql    29698 12月  8 08:06 mysql-bin.000001
-rw-rw----. 1 mysql mysql  1036239 12月  8 08:06 mysql-bin.000002
-rw-rw----. 1 mysql mysql  5242880 12月  8 08:06 ib_logfile1
-rw-rw----. 1 mysql mysql      264 12月  8 08:38 mysql-bin.000003
-rw-rw----. 1 mysql mysql       76 12月  8 08:40 mysql-bin.index
-rw-rw----  1 mysql mysql        5 12月  8 08:40 localhost.localdomain.pid
-rw-r-----. 1 mysql root      3270 12月  8 08:56 localhost.localdomain.err
drwx------  2 mysql mysql     4096 12月  8 11:53 testdb
-rw-rw----. 1 mysql mysql 18874368 12月  8 11:53 ibdata1
-rw-rw----. 1 mysql mysql  5242880 12月  8 11:53 ib_logfile0
drwx------  2 mysql mysql     4096 12月  8 13:34 database
-rw-rw----  1 mysql mysql     1243 12月  8 13:35 mysql-bin.000004
复制代码

执行命令后的结果:

复制代码
mysql> purge master logs  before "2013-12-08 13:00:00";
Query OK, 0 rows affected (0.09 sec)

mysql> system ls -ltr /data/mysql
总用量 28708
drwx------. 2 mysql root 4096 12月 8 08:06 test
drwx------. 2 mysql mysql 4096 12月 8 08:06 performance_schema
drwx------. 2 mysql root 4096 12月 8 08:06 mysql
-rw-rw----. 1 mysql mysql 5242880 12月 8 08:06 ib_logfile1
-rw-rw---- 1 mysql mysql 5 12月 8 08:40 localhost.localdomain.pid
-rw-r-----. 1 mysql root 3270 12月 8 08:56 localhost.localdomain.err
drwx------ 2 mysql mysql 4096 12月 8 11:53 testdb
-rw-rw----. 1 mysql mysql 18874368 12月 8 11:53 ibdata1
-rw-rw----. 1 mysql mysql 5242880 12月 8 11:53 ib_logfile0
drwx------ 2 mysql mysql 4096 12月 8 13:34 database
-rw-rw---- 1 mysql mysql 1243 12月 8 13:35 mysql-bin.000004
-rw-rw----. 1 mysql mysql 19 12月 8 16:57 mysql-bin.index

复制代码

嘻嘻,如果想了解更多删除MySQL binlog的方法以,可以去参考官网或者书籍《深入浅出MySQL》第二版

 

作者:陆炫志

出处:xuanzhi的博客 http://www.cnblogs.com/xuanzhi201111

您的支持是对博主最大的鼓励,感谢您的认真阅读。本文版权归作者所有,欢迎转载,但请保留该声明。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值