博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL binlog
阅读量:5268 次
发布时间:2019-06-14

本文共 2839 字,大约阅读时间需要 9 分钟。

前言:mysql-bin文件是数据库的操作日志,例如UPDATE一个表,或者DELETE一些数据,即使该语句没有匹配的数据,这个命令也会存储到日志文件中,还包括每个语句执行的时间,也会记录进去的。

这样做主要有以下两个目的:

1:数据恢复:如果你的数据库出问题了,而你之前有过备份,那么可以看日志文件,找出是哪个命令导致你的数据库出问题了,想办法挽回损失。
2:主从服务器之间同步数据
      主服务器上所有的操作都在记录日志中,从服务器可以根据该日志来进行,以确保两个同步。

1、查看大小

每次重启就会产生一个。

mysql> show binary logs;

2、查看配置

默认最大是1G

mysql> show global variables like '%bin%';+-----------------------------------------+----------------------+| Variable_name                           | Value                |+-----------------------------------------+----------------------+| binlog_cache_size                       | 32768                || binlog_direct_non_transactional_updates | OFF                  || binlog_format                           | MIXED                || binlog_stmt_cache_size                  | 32768                || innodb_locks_unsafe_for_binlog          | OFF                  || log_bin                                 | ON                   || log_bin_trust_function_creators         | OFF                  || max_binlog_cache_size                   | 18446744073709547520 || max_binlog_size                         | 1073741824           || max_binlog_stmt_cache_size              | 18446744073709547520 || sql_log_bin                             | ON                   || sync_binlog                             | 0                    |+-----------------------------------------+----------------------+12 rows in set (0.00 sec)

 3、清除日志

3.1 RESET MASTER

执行RESET MASTER命名删除全部日志

mysql> reset master;Query OK, 0 rows affected (8.51 sec)

可以看到,以前的日志全部被清空,新的日志从00001开始。

3.2 PURGE MASTER LOGS TO & PURGE MASTER LOGS BEFORE

执行PURGE MASTER LOGS TO 'mysql-bin.******'命令,是将'******'编号之前的所有日志进行删除
执行PURGE MASTER LOGS BEFORE 'yyyy-mm-dd hh:mm:ss'命令,是将在'yyyy-mm-dd hh:mm:ss'时间之前的所有日志进行删除

 4、配置日志

4.1 设置日志保留时长expire_logs_days自动删除

查看当前日志保存天数:

show variables like ‘%expire_logs_days%’;

这个默认是0,也就是logs不过期,可通过设置全局的参数,使他临时生效:

set global expire_logs_days=7;

设置了只保留7天BINLOG, 下次重启mysql这个参数默认会失败,所以需在my.cnf中设置

expire_logs_days = 7

 5、误删恢复

使用binlog恢复数据:   
         
使用mysqlbinlog命令恢复日志   
         
mysqlbinlog -d test /root/mysql/mysql-bin.000001|mysql -uroot -ppassword     
         
     
#1、关于mysqlbinlog在mysql 5.0上的使用方法,可以参考:官方资料   
         
#2、如果不知道log-bin存放的文件位置,可以使用下面的命令查看:   
         
mysql -uroot -ppassword -e
'SHOW BINLOG EVENTS G'   
         
#3、当只是需要恢复部分记录的时候,你可以使用时间点或位置点来定位,例如:     
         
mysqlbinlog
--start-date="2005-04-20 9:01:00" --stop-date="2005-04-20 10:00:01" /var/log/mysql/bin.123456|mysql -uroot -ppassword[code]       
         
#意思是恢复4月20日早上9点到10点这一段时间的数据。    
         
mysqlbinlog
--start-position="368301" --stop-position="368312"/var/log/mysql/bin.123456| mysql -uroot -pmypwd       
         
#意思是重做368301到368312位置点之间的操作。(位置点可以就是用mysqlbinlog看到的
at
xxx节点)       
         
mysqlbinlog
--start-date="2005-04-20 9:55:00" --stop-date="2005-04-20 10:05:00" /var/log/mysql/bin.123456 > /tmp/mysql_restore.sql       
         
#同样的,如果我们只是想查看某段时间的操作,直接把它导到一个文件即可。

转载于:https://www.cnblogs.com/trustnature/articles/3284719.html

你可能感兴趣的文章
mongodb命令----批量更改文档字段名
查看>>
MacOS copy图标shell脚本
查看>>
国外常见互联网盈利创新模式
查看>>
Oracle-05
查看>>
linux grep 搜索查找
查看>>
Not enough free disk space on disk '/boot'(转载)
查看>>
android 签名
查看>>
android:scaleType属性
查看>>
mysql-5.7 innodb 的并行任务调度详解
查看>>
shell脚本
查看>>
Upload Image to .NET Core 2.1 API
查看>>
Js时间处理
查看>>
【雷电】源代码分析(二)-- 进入游戏攻击
查看>>
Entityframework:“System.Data.Entity.Internal.AppConfig”的类型初始值设定项引发异常。...
查看>>
Linux中防火墙centos
查看>>
如何设置映射网络驱动器的具体步骤和方法
查看>>
centos下同时启动多个tomcat
查看>>
slab分配器
查看>>
【读书笔记】C#高级编程 第三章 对象和类型
查看>>
【SVM】libsvm-python
查看>>