- 浏览: 183077 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
grzrt:
zkf55915 写道哥们怎么用啊
好久不用了,就是看帮助资 ...
淘宝MetaQ开源消息队列安装 -
zkf55915:
哥们怎么用啊
淘宝MetaQ开源消息队列安装 -
grzrt:
jinnianshilongnian 写道整这个了?
没有 看 ...
linux内核中链表的实现 -
jinnianshilongnian:
整这个了?
linux内核中链表的实现
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中关于查询条件中的字符串空格问题
2013-02-20 19:17 7614假设当前mysql数据库中有个表:sysuser 有个字段 ... -
动态添加MYSQL从库,导出主库
2013-01-15 17:57 979http://dev.mysql.com/doc/refman ... -
MySQL主从失败 错误Got fatal error 1236解决方法
2013-01-09 16:45 1025由于主服务器异外重启, ... -
mysql 语句的调度优先级及改变
2012-12-07 16:47 1225MySQL的默认的调度策略可用总结如下: · 写入操作优 ... -
MySQL水平分区表初体验总结
2012-09-21 15:22 1141本文总结个这段时间研究MySQL水平分区表总结,列举分区 ... -
小议同步IO :fsync与fdatasync
2012-09-13 20:23 686对于提供事务支持的 ... -
Linux修改MySql默认存储引擎为InnoDB
2012-09-13 18:25 1538一、关闭相关应用 二、停止mysql bin/m ... -
MySQL数据库的初始化mysql_install_db
2012-09-13 14:13 4650一、mysql_install_db说明 当MySQL的 ... -
[mysql]不要再执着于thread_concurrency
2012-08-20 10:51 3329结论: thread_concurrency 在GNU ... -
mysql 主从复制1201错误
2012-08-19 15:59 902工作日志之-MySQL slave Replication E ... -
binlog-format
2012-07-03 20:16 840面的这些是在网上找的 ... -
MYSQL5.1复制参数binlogformat(转)
2012-07-03 11:42 802http://apps.hi.baidu.com/share/ ... -
Mysql启动多个实例
2012-06-25 19:32 840系统环境:CentOS5操作步骤: cd /var/lib c ... -
mysql 5.5.* 下的主从模式
2012-05-29 10:30 726试验环境:服务器安装是按照张宴的环境配置的 http://bl ... -
MySQL创建用户与授权
2012-05-29 10:26 590一, 创建用户: 命令:CREATE USER ' ... -
MySQL配置文件my.cnf 例子最详细翻译
2012-05-29 10:21 910转的 MySQL配置文件my.cnf 例子最详细翻译,可以保存 ... -
MySQL源码分析(1):主要模块及数据流
2012-05-26 11:07 1095经过多年的发展,mysql的主要模块已经稳定,基本不会有大的修 ... -
mysql主从搭建实现
2012-05-25 21:43 783MySQL是应用广泛的关系型数据库,当数据规模逐渐扩大,并且重 ... -
mysql配置文件
2012-05-25 21:30 780[mysqld] port = 3306 serverid ... -
Handlersocket的安装
2012-05-25 21:13 822一、下载mysql,我选择的是mysql-5.5.15源码安装 ...
相关推荐
启用日志,和查看日志 有以下几种日志: 错误日志: -log-err 查询日志: -log 慢查询日志: -log-slow-queries 更新日志: -log-update 二进制日志: -log-bin
查看和启用二进制日志 1.查看是否启用了日志 mysql>show variables like 'log_bin'; Empty set (0.00 sec) 查看当前的日志
windows下mysql自动备份数据库并删除历史备份和生成日志文件脚本。windows下mysql自动备份数据库并删除历史备份和生成日志文件脚本。
现本着学习的目的,将c#访问操作MySQL数据库进行添加、删除、修改、显示等操作进行梳理。以Visual Studio 2012平台下的示例形式写下来,供以后查看。 一、新建一个Windows 窗体应用程序Test。 如下图所示: 二、...
此批处理,是为一位朋友写的在Windows下自动备份Mysql数据库,今天共享出来,加强了一些功能。和改进了获取数据库列表的方式。 此批处理脚本的功能: 在配置正确的情况下,如果直接运行脚本,将备份指定MySQL数据库...
用存储过程实现了MySQL数据库分区表的自动创建和自动删除功能。亲测有效。希望有用。
MySQL培训日志MySQL培训日志MySQL培训日志MySQL培训日志MySQL培训日志
介绍MySQL数据库的一套日志纪录文件,可分为4种日志——错误日志、二进制日志、查询日志和慢查询日志。 以及4种日志的作用
mysql根据日志恢复数据详细步骤
汇总MySql数据库中各种日志的作用,打开关闭方式,以及通过日志还原数据库的方法
五种MySql日志分析工具比拼,可以帮助你对mysql进行优化,分析
实现mysql按时间分区方式自动创建与删除分区,包括创建/删除日志记录,通过存储过程与事件联合实现,自动创建数量与删除数量可动态配置
mysql-binlog是MySQL数据库的二进制日志,用于记录用户对数据库操作的SQL语句((除了数据查询语句)信息。可以使用mysqlbin命令查看二进制日志的内容。 binlog 的作用 用于数据库的主从复制及数据的增量恢复。 ...
4、想看spring aop 注解实现记录系统日志并入库等 二、能学到什么 1、收获可用源码 2、能够清楚的知道如何用spring aop实现自定义注解以及注解的逻辑实现 (需要知道原理的请看spring aop源码,此处不做赘述) 3、...
mysql log 学习
本实例主要是以JSP连接MySql并且通过JSP直接创建MySql数据库以及数据库表,对于初学者非常适合,可以用于制作软件或者网站自动安装的开发!
MySQL日志和数据恢复,错误日志,二进制日志,查询日志,数据恢复。
Dbmover for Mysql to Oracle 是高效的将Mysql导入到Oracle数据库的工具。 使用DBMover可以灵活定义Mysql和Oracle之间表和字段的对照关系,也可以在DBMover创建一个查询,把查询结果当作源表转入到Oracle中。 ...
二进制日志(binnary log)以事件形式记录了对MySQL数据库执行更改的所有操作。 binlog是记录所有数据库表结构变更(例如CREATE、ALTER TABLE…)以及表数据修改(INSERT、UPDATE、DELETE…)的二进制日志。不会...
linux运维学习笔记:Mysql日志