`
grzrt
  • 浏览: 188701 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【转】对mysql日志进行操作的总结包括 启用,过期自动删除 等

 
阅读更多

1. 以前我错误的认为mysql的日志可以恢复到任何时间的状态,其实并不是这样,这个恢复是有前提的,就是你至少得有一个从日志记录开始后的数据库备份,通 过日志恢复数据库实际上只是一个对以前操作的回放过程而已,不用想得太复杂,既然是回放你就得注意了,如果你执行了两次恢复那么就相当于是回放了两次,后 果如何你自己应该清楚了吧。
 
2. 要想通过日志恢复数据库,在你的my.cnf文件里应该有如下的定义,log-bin=mysql-bin,这个是必须的.binlog-do- db=db_test,这个是指定哪些数据库需要日志,如果有多个数据库就每行一个,如果不指定的话默认就是所有数据库.
[mysqld]
log-bin=mysql-bin
binlog-do-db=db_test
binlog-do-db=db_test2
 
3.删除二进制日志:
a.mysql> system ls -ltr /var/lib/mysql/bintest*;
  mysql>reset master(清空所有的二进制日志文件)
b.purge master logs to 'bintest.000006';(删除bintest.000006之前的二进制日志文件)
c.purge master logs before '2007-08-10 04:07:00'(删除该日期之前的日志)
d.在my.cnf 配置文件中[mysqld]中添加:
  expire_logs_day=3设置日志的过期天数,过了指定的天数,会自动删除
 
 
4.下面就是恢复操作了
特别提示,mysql每次启动都会重新生成一个类似mysql-bin.000003的文件,如果你的mysql每天都要重新启动一次的话,这时候你就要特别注意不要选错日志文件了。
 
(注意:下面有一些技巧,这些东西才是最宝贵的哟,普通的东东手册上都有,这可是我摸索出来的哟,别人我都不告诉他。
 
技巧1 :
在 下面你将看到 mysqlbinlog --stop-date="2005-04-20 9:59:59" /var/log/mysql/mysql-bin.000001  | mysql -u root -pmypwd 类似的语句,但是它一次只能操作一个日志文件,如果你变通一下变成这样 mysqlbinlog --stop-date="2005-04-20 9:59:59" /var/log/mysql/mysql-bin.0*  | mysql -u root -pmypwd 那么它基本上就会表示出的所有的日志文件了,这样可解决你忘记在哪一个日志文件中的问题,当然你也可以用这种写法更完美,mysqlbinlog --stop-date="2005-04-20 9:59:59" /var/log/mysql/mysql-bin.[0-9]* | mysql -u root -pmypwd  ,看到[0-9]*这个东东了吧,它表示以数字开头的任何字符,方便吧!
 
技巧2:
你可以通过--one-database 参数选择性的恢复单个数据库,example在下面,爽吧。
mysqlbinlog --stop-date="2005-04-20 9:59:59" /var/log/mysql/mysql-bin.000001  | mysql -u root -pmypwd --one-database db_test
 
技巧3:
如 果你老人家已经使用过 /usr/local/mysql5/bin/mysqlbinlog --start-date="2005-04-20 9:55:00" /var/data/mysql5/mysql-bin.0* > /home/db/tt.sql 类似的语句将日志导成了ASCII文本文件,那么你就可以直接在phpmyadmin或者其它什么乱七糟八的的客户端里执行这个文件文件就行了,因为它本 身就是一个标准的sql文件,比如想让文件里面的某些语句不执行,OK,it's easy,找到它们删除即可,然后再放进去执行就OK滴啦!这个可是灰常灰常的爽哟。。。。。。
 
技巧4:
我来给大家讲一下,下面这条语句都做了什么
mysqlbinlog --stop-date="2005-04-20 9:59:59" /var/log/mysql/mysql-bin.000001  | mysql -u root -pmypwd --one-database db_test
这是把mysql-bin.000001这个二进制文件里的内容转换成ASCII文件(也就是sql语句),直接通过管道操作符"|"传输给 mysql这个程序,然后过滤掉其它数据库的语句,只在db_test里执行。
 
技巧5:
着了,多打了一个技巧,现在暂时没内容,等以后再加吧!!!
)
 
 
 
下面部份摘录自网上。
 
 
如 果MySQL服务器启用了二进制日志,你可以使用mysqlbinlog工具来恢复从指定的时间点开始 (例如,从你最后一次备份)直到现在或另一个指定的时间点的数据。关于启用二进制日志的信息,参见5.11.3节,“二进制日志”。对于 mysqlbinlog的详细信息,参见mysql手册8.6节,“mysqlbinlog:用于处理二进制日志文件的实用工具”。
 
要 想从二进制日志恢复数据,你需要知道当前二进制日志文件的路径和文件名。一般可以从选项文件(即my.cnf or my.ini,取决于你的系统)中找到路径。如果未包含在选项文件中,当服务器启动时,可以在命令行中以选项的形式给出。启用二进制日志的选项为-- log-bin。要想确定当前的二进制日志文件的文件名,输入下面的MySQL语句:
 
 
SHOW BINLOG EVENTS G
 
 
你还可以从命令行输入下面的内容:
 
 
mysql --user=root -pmy_pwd -e 'SHOW BINLOG EVENTS G'
 
 
将密码my_pwd替换为服务器的root密码。
 
1. 指定恢复时间
 
对 于MySQL 4.1.4,可以在mysqlbinlog语句中通过--start-date和--stop-date选项指定DATETIME格式的起止时间。举例说 明,假设在今天上午10:00(今天是2005年4月20日),执行SQL语句来删除一个大表。要想恢复表和数据,你可以恢复前晚上的备份,并输入:
 
 
mysqlbinlog --stop-date="2005-04-20 9:59:59" /var/log/mysql/mysql-bin.000001  | mysql -u root -pmypwd
 
 
该命令将恢复截止到在--stop-date选项中以DATETIME格式给出的日期和时间的所有数据。如果你没有检测到几个小时后输入的错误的SQL语句,可能你想要恢复后面发生的活动。根据这些,你可以用起使日期和时间再次运行mysqlbinlog:
 
 
mysqlbinlog --start-date="2005-04-20 10:01:00" /var/log/mysql/mysql-bin.000001  | mysql -u root -pmypwd
 
 
在该行中,从上午10:01登录的SQL语句将运行。组合执行前夜的转储文件和mysqlbinlog的两行可以将所有数据恢复到上午10:00前一秒钟。你应检查日志以确保时间确切。下一节介绍如何实现。
 
2. 指定恢复位置
 
也 可以不指定日期和时间,而使用mysqlbinlog的选项--start-position和--stop-position来指定日志位置。它们的作 用与起止日选项相同,不同的是给出了从日志起的位置号。使用日志位置是更准确的恢复方法,特别是当由于破坏性SQL语句同时发生许多事务的时候。要想确定 位置号,可以运行mysqlbinlog寻找执行了不期望的事务的时间范围,但应将结果重新指向文本文件以便进行检查。操作方法为:
 
 
mysqlbinlog --start-date="2005-04-20 9:55:00" --stop-date="2005-04-20 10:05:00"
  /var/log/mysql/mysql-bin.000001 > /tmp/mysql_restore.sql
 
 
该 命令将在/tmp目录创建小的文本文件,将显示执行了错误的SQL语句时的SQL语句。你可以用文本编辑器打开该文件,寻找你不要想重复的语句。如果二进 制日志中的位置号用于停止和继续恢复操作,应进行注释。用log_pos加一个数字来标记位置。使用位置号恢复了以前的备份文件后,你应从命令行输入下面 内容:
 
 
mysqlbinlog --stop-position="368312" /var/log/mysql/mysql-bin.000001 | mysql -u root -pmypwd
mysqlbinlog --start-position="368315" /var/log/mysql/mysql-bin.000001 | mysql -u root -pmypwd
 
 
上面的第1行将恢复到停止位置为止的所有事务。下一行将恢复从给定的起始位置直到二进制日志结束的所有事务。因为mysqlbinlog的输出包括每个SQL语句记录之前的SET TIMESTAMP语句,恢复的数据和相关MySQL日志将反应事务执行的原时间。

分享到:
评论

相关推荐

    MySQL日志分析(包括工具)

    ### MySQL日志分析详解 #### 一、引言 MySQL作为一种广泛使用的开源关系型数据库管理系统,在维护数据库稳定性与性能方面发挥着至关重要的作用。为了更好地监控数据库的状态并及时解决潜在问题,MySQL提供了多种...

    MySQL分区表自动创建及删除存储过程

    "使用说明.txt"文件应该是关于如何部署和使用这些存储过程和事件的详细指南,包括如何启用事件调度器,如何调用存储过程来创建和删除分区,以及如何监控和调整这些自动化操作的建议。 总的来说,这个压缩包提供了...

    mysql日志清理手册

    在MySQL数据库管理中,日志文件起着至关重要的作用,它们记录了数据库的各种操作,包括但不限于错误信息、查询历史以及数据变更等。这些日志对于故障排查、数据恢复和主从复制至关重要。然而,随着时间的推移,日志...

    简单整理MySQL的日志操作命令

    MySQL日志操作命令是数据库管理中的重要组成部分,特别是对于维护数据一致性、故障恢复和主从复制等关键任务。本文将详细讲解如何在MySQL中进行日志操作,特别是日志的查看和删除。 1. **确认日志启用状态** 使用`...

    MySQL高级第四天.md

    设置日志过期时间为 `expire_log_days=3` 表示三天前的日志会被自动删除。 - **2.4 查询日志**: 查询日志记录了所有发送到服务器的 SQL 命令,可通过配置开启或关闭。开启后,可通过 `show variables like 'general_...

    MySQL 5.7(GA)版本新特性

    在SQLMode方面,MySQL 5.7 GA版本默认启用了STRICT_TRANS_TABLES模式,这意味着对数据类型转换和数据范围不符合的严格处理,提高了数据的一致性和准确性。 MySQL 5.7在初始化安装方面也有所不同。从5.7.6版本开始,...

    CentOS5.5_MySql_5.1.49的安装、优化及安全设置

    本文将详细介绍这一过程,包括从源码安装 MySQL 5.1.49、配置参数详解、常见问题解决办法以及安全设置等内容。 #### 二、下载与安装 ##### 1. 下载 MySQL 5.1.49 - **官方下载页面**: ...

    MySQL笔记 知识点全

    1. 查询优化:合理使用索引、避免全表扫描、减少JOIN操作等。 2. 表设计优化:合理选择数据类型、避免NULL值、适当分区等。 3. 参数调整:根据服务器配置和业务需求调整MySQL的系统参数,如innodb_buffer_pool_...

    mysql数据库性能调优

    为了确保其高效稳定地运行,对MySQL进行性能调优至关重要。本文将深入探讨如何通过对服务器硬件、MySQL进程以及查询的优化,提升MySQL服务器的整体性能。 #### 替换有问题的硬件 首先,硬件性能是决定数据库性能的...

    Mysql+binlog浅析

    MySQL二进制日志(binlog)是数据库系统中用于记录所有改变数据库状态的事务操作的重要组件,它在数据恢复、主从复制等方面扮演着关键角色。本文档将对MySQL的binlog进行深入浅出的分析,帮助读者理解其工作原理和...

    onesql集群搭建-mysql

    - 使用以下命令对主数据库进行备份,同时记录下主库当前的二进制日志文件名及位置信息: ``` mysqldump --socket=/tmp/mysql.sock -u root --single-transaction --flush-logs --master-data=2 --all-databases --...

    mysql5.7数据库

    3. 查询优化器改进:查询优化器进行了重大改进,包括CBO(Cost-Based Optimizer)的默认启用,这使得MySQL能够根据实际成本选择最优执行计划,从而提高查询效率。 4. 分区增强:支持更多的分区策略,如线性哈希分区...

    mysql-boost-5.7.14.tar.gz

    这个“mysql-boost-5.7.14.tar.gz”文件是一个针对Linux操作系统的源码压缩包,它包含了编译和安装MySQL 5.7.14所需的所有文件。"boost"可能指的是Boost C++库,这是一个广泛使用的C++工具集,用于提升开发效率和...

    MySQL新特性

    5. **用户锁定与解锁:**MySQL 5.7允许管理员对普通用户账户进行锁定和解锁操作,进一步增强了安全性和灵活性。 #### 二、InnoDB引擎的增强 InnoDB引擎在MySQL 5.7中的改进主要集中在以下几个方面: 1. **DDL操作...

    小记一次mysql主从配置解决方案

    通过设置主从结构,前端应用可以连接到主库(Master)进行写操作,而报表类的读取操作则在从库(Slave)上进行,避免了读写冲突,保证了前端服务的速度。 在实施MySQL主从配置时,通常涉及以下几个步骤: 1. **...

    springmvc+spring+mysql+maven定时任务

    这个系统通常用于执行周期性的后台操作,如数据同步、报表生成或清理过期数据等。下面将详细讲解如何利用这些技术实现定时任务。 首先,`Spring MVC`是Spring框架的一部分,用于构建Web应用的模型-视图-控制器(MVC...

    mysql 高级 .txt

    根据提供的文件信息,“mysql 高级 .txt”,我们可以推测该文档包含了MySQL数据库管理系统的高级用法和技术要点。虽然无法直接访问所提供的链接以获取具体细节,但基于“mysql 高级”这一主题,我们可以构建一系列...

    2023最新MySql面试题

    MySQL Enterprise Audit提供更高级的审计功能,包括实时监控、审计日志分析和报告生成。 学习这些面试题不仅有助于准备面试,还能提升对MySQL核心概念的理解,提高在实际项目中的数据库管理能力。建议通过实践操作...

    MySQL数据库:触发器与事件调度器技术教程

    这有助于自动化常规的数据库管理任务,如定期备份数据库、清理过期数据等。 **2.2 事件调度器的类型** - **单次事件**:只执行一次的事件。 - **重复事件**:根据设定的时间间隔重复执行的事件。 **2.3 创建事件...

Global site tag (gtag.js) - Google Analytics