mysql删除binlog日志及日志恢复数据

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

基本上大家装mysql,都会开启binlog功能,开启这个功能的好处是,日后方便恢复数据,而坏处是日志文件增长速度快,很快占会占满磁盘空间。

所以我们要定期或手工来删除过大的日志文件。

删除日志文件的方法大概有如下几中:

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

 
  1. #查看当前日志保存天数:  
  2.  
  3. show variables like ‘%expire_logs_days%’;  
  4.  
  5. #这个默认是0,也就是logs不过期,可通过设置全局的参数,使他临时生效:  
  6.  
  7. set global expire_logs_days=7;  
  8.  
  9. #设置了只保留7天BINLOG, 下次重启mysql这个参数默认会失败,所以需在my.cnf中设置  
  10.  
  11. expire_logs_days = 7  

二、手动删除BINLOG (purge binary logs)

 
  1. #用于删除列于在指定的日志或日期之前的日志索引中的所有二进制日志。这些日志也会从记录在日志索引文件  
  2.  
  3. PURGE {MASTER | BINARY} LOGS TO ‘log_name’  
  4. PURGE {MASTER | BINARY} LOGS BEFORE ‘date’  
  5.  
  6. #例如:  
  7.  
  8. PURGE MASTER LOGS TO ‘mysql-bin.010′;  
  9. PURGE MASTER LOGS BEFORE ‘2008-06-22 13:00:00′;  
  10. PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 3 DAY);  
  11.  

其它:

 
  1. 查看当前日志文件列表:show binary logs; 

使用binlog日志的目的是为了方便恢复数据,所以我们不光要会删除,还要会用日志来恢复数据。

使用binlog恢复数据:

使用mysqlbinlog命令恢复日志

 
  1. mysqlbinlog -d test /root/mysql/mysql-bin.000001|mysql -uroot -ppassword   
  2.  
  3. ※附录   
  4.  
  5. #1、关于mysqlbinlog在mysql 5.0上的使用方法,可以参考:官方资料   
  6.  
  7. #2、如果不知道log-bin存放的文件位置,可以使用下面的命令查看:   
  8.  
  9. mysql -uroot -ppassword -e 'SHOW BINLOG EVENTS \G'   
  10.  
  11. #3、当只是需要恢复部分记录的时候,你可以使用时间点或位置点来定位,例如:   
  12.  
  13. 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]   
  14.  
  15. #意思是恢复4月20日早上9点到10点这一段时间的数据。   
  16.  
  17. mysqlbinlog --start-position="368301" --stop-position="368312"/var/log/mysql/bin.123456| mysql -uroot -pmypwd   
  18.  
  19. #意思是重做368301到368312位置点之间的操作。(位置点可以就是用mysqlbinlog看到的at xxx节点)   
  20.  
  21. 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   
  22.  
  23. #同样的,如果我们只是想查看某段时间的操作,直接把它导到一个文件即可。  

 


本文转自 cyr520 51CTO博客,原文链接:http://blog.51cto.com/cyr520/957041


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
19天前
|
存储 安全 关系型数据库
Mysql 的binlog日志的优缺点
MySQL的binlog(二进制日志)是一个记录数据库更改的日志文件,它包含了所有对数据库执行的更改操作,如INSERT、UPDATE和DELETE等。binlog的主要目的是复制和恢复。以下是binlog日志的优缺点: ### 优点: 1. **数据恢复**:当数据库出现意外故障或数据丢失时,可以利用binlog进行点恢复(point-in-time recovery),将数据恢复到某一特定时间点。 2. **主从复制**:binlog是实现MySQL主从复制功能的核心组件。主服务器将binlog中的事件发送到从服务器,从服务器再重放这些事件,从而实现数据的同步。 3. **审计**:b
|
28天前
|
SQL 关系型数据库 MySQL
mysql的binlog恢复数据
mysql的binlog恢复数据
29 0
|
29天前
|
SQL 关系型数据库 MySQL
MySQL数据库,可以使用二进制日志(binary log)进行时间点恢复
对于MySQL数据库,可以使用二进制日志(binary log)进行时间点恢复。二进制日志是MySQL中记录所有数据库更改操作的日志文件。要进行时间点恢复,您需要执行以下步骤: 1. 确保MySQL配置文件中启用了二进制日志功能。在配置文件(通常是my.cnf或my.ini)中找到以下行,并确保没有被注释掉: Copy code log_bin = /path/to/binary/log/file 2. 在需要进行恢复的时间点之前创建一个数据库备份。这将作为恢复的基准。 3. 找到您要恢复到的时间点的二进制日志文件和位置。可以通过执行以下命令来查看当前的二进制日志文件和位
|
1月前
|
存储 SQL 关系型数据库
[MySQL]事务原理之redo log,undo log
[MySQL]事务原理之redo log,undo log
|
1月前
|
SQL 缓存 关系型数据库
MySQL的万字总结(缓存,索引,Explain,事务,redo日志等)
MySQL的万字总结(缓存,索引,Explain,事务,redo日志等)
66 0
|
2月前
|
SQL 存储 关系型数据库
binlog 日志的三种格式
binlog 日志的三种格式
|
2月前
|
存储 监控 关系型数据库
ELK架构监控MySQL慢日志
ELK架构监控MySQL慢日志
|
3天前
|
SQL 存储 关系型数据库
MySQL Cluster集群安装及使用
MySQL Cluster集群安装及使用
|
18天前
|
关系型数据库 MySQL 数据库
mysql卸载、下载、安装(window版本)
mysql卸载、下载、安装(window版本)
|
7天前
|
关系型数据库 MySQL 数据库
《MySQL 简易速速上手小册》第1章:MySQL 基础和安装(2024 最新版)
《MySQL 简易速速上手小册》第1章:MySQL 基础和安装(2024 最新版)
31 4