mysql删除binlog日志及日志恢复数据的方法

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
日志服务 SLS,月写入数据量 50GB 1个月
简介:

 

 
  1. 基本上大家装mysql,都会开启binlog功能,开启这个功能的好处是,日后方便恢复数据,而坏处是日志文件增长速度快,很快占会占满磁盘空间,所以我们要定期或手工来删除过大的日志文件。 
  2.  
  3. 删除日志文件的方法大概有如下几中: 
  4.  
  5. 一、设置日志保留时长expire_logs_days自动删除 
  6.  
  7. #查看当前日志保存天数: 
  8.  
  9. show variables like ‘%expire_logs_days%’;    
  10.  
  11. #这个默认是0,也就是logs不过期,可通过设置全局的参数,使他临时生效: 
  12.  
  13. set global expire_logs_days=7;    
  14.  
  15. #设置了只保留7天BINLOG, 下次重启mysql这个参数默认会失败,所以需在my.cnf中设置   
  16.  
  17. expire_logs_days = 7   
  18.  
  19. 二、手动删除BINLOG (purge binary logs) 
  20.  
  21. #用于删除列于在指定的日志或日期之前的日志索引中的所有二进制日志。这些日志也会从记录在日志索引文件  
  22.  
  23. PURGE {MASTER | BINARY} LOGS TO ‘log_name’   
  24. PURGE {MASTER | BINARY} LOGS BEFORE ‘date’ 
  25.  
  26. #例如: 
  27.  
  28. PURGE MASTER LOGS TO ‘mysql-bin.010′;   
  29. PURGE MASTER LOGS BEFORE ‘2008-06-22 13:00:00′;   
  30. PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 3 DAY);  
  31.  
  32. 其它: 
  33.  
  34. 查看当前日志文件列表:show binary logs或是show master logs;  
  35. 使用binlog日志的目的是为了方便恢复数据,所以我们不光要会删除,还要会用日志来恢复数据。 
  36.  
  37. 使用binlog恢复数据: 
  38.  
  39. 使用mysqlbinlog命令恢复日志 
  40.  
  41. mysqlbinlog -d test /root/mysql/mysql-bin.000001|mysql -uroot -ppassword   
  42.  
  43.    
  44. #1、关于mysqlbinlog在mysql 5.0上的使用方法,可以参考:官方资料 
  45.  
  46. #2、如果不知道log-bin存放的文件位置,可以使用下面的命令查看: 
  47.  
  48. mysql -uroot -ppassword -e 'SHOW BINLOG EVENTS \G'     
  49.  
  50. #3、当只是需要恢复部分记录的时候,你可以使用时间点或位置点来定位,例如:   
  51.  
  52. 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]     
  53.  
  54. #意思是恢复4月20日早上9点到10点这一段时间的数据。  
  55.  
  56. mysqlbinlog --start-position="368301" --stop-position="368312"/var/log/mysql/bin.123456| mysql -uroot -pmypwd     
  57.  
  58. #意思是重做368301到368312位置点之间的操作。(位置点可以就是用mysqlbinlog看到的at xxx节点)     
  59.  
  60. 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     
  61.  
  62. #同样的,如果我们只是想查看某段时间的操作,直接把它导到一个文件即可。   

 


本文转自 lover00751CTO博客,原文链接:http://blog.51cto.com/wangwei007/1101757,如需转载请自行联系原作者


相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
348
分享
相关文章
ELK实现nginx、mysql、http的日志可视化实验
通过本文的步骤,你可以成功配置ELK(Elasticsearch, Logstash, Kibana)来实现nginx、mysql和http日志的可视化。通过Kibana,你可以直观地查看和分析日志数据,从而更好地监控和管理系统。希望这些步骤能帮助你在实际项目中有效地利用ELK来处理日志数据。
207 90
mysql的undo log、redo log、bin log、buffer pool
MySQL的undo log、redo log、bin log和buffer pool是确保数据库高效、安全和可靠运行的关键组件。理解这些组件的工作原理和作用,对于优化数据库性能和保障数据安全具有重要意义。通过适当的配置和优化,可以显著提升MySQL的运行效率和数据可靠性。
37 16
mysql的undo log、redo log、bin log、buffer pool
MySQL的undo log、redo log、bin log和buffer pool是确保数据库高效、安全和可靠运行的关键组件。理解这些组件的工作原理和作用,对于优化数据库性能和保障数据安全具有重要意义。通过适当的配置和优化,可以显著提升MySQL的运行效率和数据可靠性。
28 4
MySQL日志
本文介绍了MySQL中三个重要的日志:binlog、redolog和undolog。binlog记录数据库更改操作,支持数据恢复、复制和审计;redolog保证事务的原子性和持久性,实现crash-safe;undolog用于事务回滚及MVCC的实现。每个日志都有其独特的作用和应用场景,确保数据库的稳定性和数据一致性。
图解MySQL【日志】——磁盘 I/O 次数过高时优化的办法
当 MySQL 磁盘 I/O 次数过高时,可通过调整参数优化。控制刷盘时机以降低频率:组提交参数 `binlog_group_commit_sync_delay` 和 `binlog_group_commit_sync_no_delay_count` 调整等待时间和事务数量;`sync_binlog=N` 设置 write 和 fsync 频率,`innodb_flush_log_at_trx_commit=2` 使提交时只写入 Redo Log 文件,由 OS 择机持久化,但两者在 OS 崩溃时有丢失数据风险。
58 3
简单聊聊MySQL的三大日志(Redo Log、Binlog和Undo Log)各有什么区别
在MySQL数据库管理中,理解Redo Log(重做日志)、Binlog(二进制日志)和Undo Log(回滚日志)至关重要。Redo Log确保数据持久性和崩溃恢复;Binlog用于主从复制和数据恢复,记录逻辑操作;Undo Log支持事务的原子性和隔离性,实现回滚与MVCC。三者协同工作,保障事务ACID特性。文章还详细解析了日志写入流程及可能的异常情况,帮助深入理解数据库日志机制。
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
docker拉取MySQL后数据库连接失败解决方案
通过以上方法,可以解决Docker中拉取MySQL镜像后数据库连接失败的常见问题。关键步骤包括确保容器正确启动、配置正确的环境变量、合理设置网络和权限,以及检查主机防火墙设置等。通过逐步排查,可以快速定位并解决连接问题,确保MySQL服务的正常使用。
152 82
缓存与数据库的一致性方案,Redis与Mysql一致性方案,大厂P8的终极方案(图解+秒懂+史上最全)
缓存与数据库的一致性方案,Redis与Mysql一致性方案,大厂P8的终极方案(图解+秒懂+史上最全)

热门文章

最新文章