如果MySQL服务器启用了二进制日志,你可以使用mysqlbinlog工具来恢复从指定的时间点开始 (例如,从你最后一次备份)直到现在或另一个指定的时间点的数据。“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(今天是2006年4月20日),执行SQL语句来删除一个大表。要想恢复表和数据,你可以恢复前晚上的备份,并输入:

mysqlbinlog --stop-date="2005-04-20 9:59:59" /var/log/mysql/bin.123456 \

| mysql -u root -pmypwd

该命令将恢复截止到在--stop-date选项中以DATETIME格式给出的日期和时间的所有数据。如果你没有检测到几个小时后输入的错误的SQL语句,可能你想要恢复后面发生的活动。根据这些,你可以用起使日期和时间再次运行mysqlbinlog:

mysqlbinlog --start-date="2005-04-20 10:01:00" /var/log/mysql/bin.123456 \

| 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/bin.123456 > /tmp/mysql_restore.sql

该命令将在/tmp目录创建小的文本文件,将显示执行了错误的SQL语句时的SQL语句。你可以用文本编辑器打开该文件,寻找你不要想重复的语句。如果二进制日志中的位置号用于停止和继续恢复操作,应进行注释。用log_pos加一个数字来标记位置。使用位置号恢复了以前的备份文件后,你应从命令行输入下面内容:

mysqlbinlog --stop-position="368312" /var/log/mysql/bin.123456 \

| mysql -u root -pmypwd

mysqlbinlog --start-position="368315" /var/log/mysql/bin.123456 \

| mysql -u root -pmypwd \

上面的第1行将恢复到停止位置为止的所有事务。下一行将恢复从给定的起始位置直到二进制日志结束的所有事务。因为mysqlbinlog的输出包括每个SQL语句记录之前的SET TIMESTAMP语句,恢复的数据和相关MySQL日志将反应事务执行的原时间。

1、mysql 数据库没有增量备份的机制,当数据量太大的时候备份是一个很大的问题。还好 mysql 数据库提供了一种主从备份的机制,其实就是把主数据库的所有的数据同时写到备份数据库中。实现 mysql 数据库的热备份。

2、要想实现双机的热备首先要了解主从数据库服务器的版本的需求。要实现热备 mysql 的版本都要高于3.2,还有一个基本的原则就是作为从数据库的数据库版本可以高于主服务器数据库的版本,但是不可以低于主服务器的数据库版本。

3、设置主数据库服务器:

a. 首先查看主服务器的版本是否是支持热备的版本。然后查看 my.cnf(类 unix)或者 my.ini(windows)中 mysqld 配置块的配置有没有 log-bin (记录数据库更改日志),因为 mysql 的复制机制是基于日志的复制机制,所以主服务器一定要支持更改日志才行。然后设置要写入日志的数据库或者不要写入日志的数据库。这样只有您感兴趣的数据库的更改才写入到数据库的日志中。

server-id=1 //数据库的 id 这个应该默认是1就不用改动

log-bin=log_name //日志文件的名称,这里可以制定日志到别的目录 如果没有设置则默认主机名的一个日志名称

binlog-do-db=db_name //记录日志的数据库

binlog-ignore-db=db_name //不记录日志的数据库

以上的如果有多个数据库用","分割开,然后设置同步数据库的用户帐号

mysql> GRANT REPLICATION SLAVE ON *.*

-> TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';

4.0.2 以前的版本, 因为不支持 REPLICATION 要使用下面的语句来实现这个功能

mysql> GRANT FILE ON *.*

-> TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';

设置好主服务器的配置文件后重新启动数据库

b.锁定现有的数据库并备份现在的数据

锁定数据库

mysql> FLUSH TABLES WITH READ LOCK;

备份数据库有两种办法一种是直接进入到 mysql 的 data 目录然后打包你需要备份数据库的文件夹,第二种是使用 mysqldump 的方式来备份数据库但是要加上"--master-data " 这个参数,建议使用第一种方法来备份数据库

c.查看主服务器的状态

mysql> show master statusG;

+---------------+----------+--------------+------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+---------------+----------+--------------+------------------+

| mysql-bin.003 | 73 | test | manual,mysql |

+---------------+----------+--------------+------------------+

记录 File 和 Position 项目的值,以后要用的。

本贴来自ZDNetChina中文社区 http://bbs.zdnet.com.cn ,本贴地址:http://bbs.zdnet.com.cn/viewthread.php?tid=55070

posted on 2007-12-08 11:15 都市淘沙者 阅读(1075) 评论(0)  编辑  收藏 所属分类: Oracle/Mysql/Postgres/

mysql 日志文件 自动_教你自动恢复MySQL数据库的日志文件相关推荐

  1. mysql如何存储图片_教你怎样在MySQL数据库中直接储存图片

    欢迎来到小编的文章进行学习阅读,想必大家又有很多问题吧,在这里会有你想要收获的答案,请大家慢慢学习吧!计算机编程语言 如果你想把二进制的数据,比如说图片文件和HTML文件,直接保存在你的MySQL数据 ...

  2. stp文件怎么变文件夹_教你使用Solidworks打开Stp或Step文件【图文】

    Solidworks是我们常用的三维软件,默认的文件格式是.sldprt或者.sldasm.上网过程中,经常遇见一些其他的格式文件.如Stp或Step,那么我们该如何打开Stp或Step文件?其实方法 ...

  3. mysql批量存图片_教你如何在MySQL数据库中直接储存图片(3)

    如果你执行了这个程序,你将会看见一个简单的Html表单,单击"浏览"选择一个文件,然后单击提交. 当文件上传至web服务器之后,程序将会告诉你刚刚上传的文件的ID,记住这个ID,待 ...

  4. mysql服务在系统盘_重装系统后恢复MySQL服务

    如果重装操作系统了,如果MySQL原先是安装在非系统盘(非c盘)里可以不用从新安装只要从新添加服务就可以使用,以前是数据还存在. 1.确保原来的数据库文件是存在的. 首先找到原来安装的MySQL目录下 ...

  5. java 写文件 权限不够_教你解决Linux系统中JAVA创建文件后权限不足的问题

    在作业中,项目使用文件上传. 这个功能很常见. 当Kai Ge今天更改其官方帐户时,他遇到了一个问题,即无法访问下载的文件,也无法通过浏览器访问该文件. 它是怎么发生的? 经过许多问题之后,事实证明这 ...

  6. linux查看mysql用户权限_教您如何查看MySQL用户权限

    教您如何查看MySQL用户权限 如果需要查看MySQL用户权限,应该如何实现呢?下面就为您介绍查看MySQL用户权限的方法,并对授予MySQL用户权限的语句进行介绍,供您参考. 查看MySQL用户权限 ...

  7. 运行python程序的两种方式交互式和文件式_教你如何编写、保存与运行 Python 程序...

    第一步 接下来我们将看见如何在 Python 中运行一个传统的"Hello World"程序.Python教程本章将会教你如何编写.保存与运行 Python 程序. 通过 Pyth ...

  8. mysql pxc 报错_登录mysqlpxc报错找不到库文件libreadline.so.7

    1.1简述: 基于上篇博文,为了部署mysqlpxc集群环境,需要开启3个vmware虚拟机实例来部署3个mysqlpxc实例. 第一篇博文中在初始化mysqlpxc实例后,登录实例时,报错提示: [ ...

  9. 电脑文件加密_教你一招解决电脑文件加密

    原标题:教你一招解决电脑文件加密 科技持续进步发展,当今社会我们也越来越注重个人隐私的保护.可能你曾经也遇到过这种问题,自己电脑上的一些私密文件,在别人借用我们自己电脑的时候,并不愿意让他知晓,不愿意 ...

最新文章

  1. thinkphp5项目--企业单车网站(七)
  2. 菜鸟学习Spring——60s利用JoinPoint获取參数的值和方法名称
  3. .gitignore过滤规则
  4. 36条网络安全术语盘点——Vecloud
  5. 差分能量分析介绍(一)
  6. 计算广告学学习2 - 广告有效性模型
  7. pandas之loc iloc ix
  8. 京解之才——2019年技术盘点微服务篇(三)| 程序员硬核评测
  9. python两个字符串数据可以复制吗_无论如何,是否要将Python pandas数据框中的单个数据中的数据复制到字符串或列表中以进行进一步处理?...
  10. sqlserver 2008阻止保存要求重新创建表的更改
  11. Android 应用开发(第四章)---手机海外市场移动应用
  12. 使用flash在IPAD2上播放FLV效率不高
  13. 隐马尔可夫模型(五)——隐马尔可夫模型的解码问题(维特比算法)
  14. discuz常用变量
  15. 【Qt教程】2.2 - Qt5 布局管理器(水平、垂直、栅格布局)、弹簧、设计一个登陆界面
  16. DataGridView常用操作
  17. YII2中ActiveDataProvider与GridView的配合使用
  18. 提升文学素养【文章解读】
  19. python自由落体_pymunk教程_自由落体小球_Pymunk滑动和铰接演示教程
  20. javascript有效的anagram挑战

热门文章

  1. 【kafka】Number of alive brokers 0 does not meet the required replication factor 3
  2. 【Flink】Flink 单个任务 多个流的消费同一个topic的时候其中一个流卡死 不消费
  3. 【JVM】JVM客户端 server模式 client 模式
  4. 95-190-444-源码-window-Trigger-EventTimeTrigger
  5. 【Antlr】WHITESPACE is not a recognized channel name
  6. 【Hbase】HBase界面简介
  7. Linux终端复用神器-tmux初探
  8. 学习云计算有哪些优势?云计算教程学习路线图
  9. 【月报】Java知音的五月汇总
  10. 实践:SpringBoot实现定时任务的动态增删启停