如果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

[email='repl'@'%.mydomain.com']'repl'@'%.mydomain.com'[/email]

IDENTIFIED BY 'slavepass';

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

mysql> GRANT FILE ON *.*

-> TO

[email='repl'@'%.mydomain.com']'repl'@'%.mydomain.com'[/email]

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 项目的值,以后要用的。

mysql 日志文件 自动_自动恢复MySQL数据库的日志文件思路分享及解决方案相关推荐

  1. mysql 中文名不能同步_关于恢复MySQL主主数据的同步问题

    2.数据文件大小同步 mysql01和mysql02两个数据刚装配完成时,从实施后盾可知.互为主从,数据同步畸形,运行过程中某些原由招致mysql02去同步mysql01毛病,而对外供给办事的vip一 ...

  2. dll文件丢失了怎么恢复最为快捷?dll文件丢失为啥什么软件都打不开了?

    现在的电脑已经具备了非常全面的功能,让大家工作或者生活中都已经离不开这种工具了,虽说平时大家使用电脑也比较频繁,但是对于电脑的了解可以说都是处于表面,只知道电脑可以做很多事情却不知道具体的原理,其实电 ...

  3. mysql 二进制日志在哪_如何通过Mysql的二进制日志恢复数据库数据

    经常有网站管理员因为各种原因和操作,导致网站数据误删,而且又没有做网站备份,结果不知所措,甚至给网站运营和盈利带来负面影响.所以本文我们将和大家一起分享学习下如何通过Mysql的二机制日志(binlo ...

  4. mysql删除七天_自动备份mysql并删除7天前备份

    1.远程连接服务器 2.下载备份脚本文件 3.编辑脚本文件 windows: 用记事本打开bkupmysql.bat set dbuser=root                        #设 ...

  5. mysql事件计划自动_逐步讲解MySQL中定时事件计划的创建

    一.使用过程1.查看当前是否已开启事件计划(调度器)有3种方法: SHOW VARIABLES LIKE 'event_scheduler'; SELECT @@event_scheduler; SH ...

  6. MYSQL启用日志,查看日志,利用mysqlbinlog工具恢复MySQL数据库

    http://www.cnblogs.com/xionghui/archive/2012/03/11/2389792.html MYSQL启用日志 [root@jianshe99]# whereis ...

  7. mysql error log清理_手动删除mysql日志/var/log/mysql/error.log导致的mysql无法启动

    问题环境 ubuntu-mate for raspberry mysql默认配置 问题起源 最近在搞fail2ban这东西,顺便翻了翻各种日志,然后看见mysql的日志有点多就想清理一下,于是直接su ...

  8. mysql+web日志分析工具_用Python+MySQL实现2017年web日志分析报告

    日志分析在web系统中故障排查.性能分析方面有着非常重要的作用.目前,开源的ELK系统是成熟且功能强大的选择.但是部署及学习成本亦然不低,这里我实现了一个方法上相对简单(但准确度和效率是有保证的)的实 ...

  9. 修改mysql文件位置_如何修改mysql数据文件存储位置

    如果想更换mysql的数据文件的存储位置,则: Centos下: 查看MYSQL数据文件存储路径 mysql>show variables like '%datadir%'; # /usr/lo ...

最新文章

  1. 记录一次基于LV块做存储介质的KVM扩容过程
  2. ModelSim几种不同的版本的区别
  3. 【组合数学】生成函数 ( 使用生成函数求解不定方程解个数 )
  4. ZedGraph怎样在生成曲线时随机生成不一样的颜色
  5. 给指定的某个commit号加tag并推送
  6. Java中JFrame怎样控制闪烁_在JFrame Java中闪烁
  7. HTTPS请求实现框架
  8. win10更改mac地址
  9. Android 应用开发---App 移动应用中九种导航设计总结及其优缺点分
  10. 学术词汇 | Ablation Test or Ablation Experiment
  11. LeetCode(303)——区域和检索 - 数组不可变(JavaScript)
  12. ENVI Landsat8 裁剪 辐射校正 大气校正 CSU
  13. 网页背景音乐播放器html代码
  14. 目前流行的9大前端框架
  15. 百旺开票清单导入模板_半年来最爱的高效率工具滴答清单不为人知的使用技巧...
  16. OSChina 周五乱弹 —— 毁人不倦的大师们
  17. CEILING_2_POWER
  18. 数据分析统计学基础笔记
  19. RE|Nginx-安装与配置(1)
  20. mysql数据库DBA题型问题解答

热门文章

  1. 前端学习(1512):vue-router文档
  2. 前端学习(1301):gulp建立任务csso和less
  3. 第六十期:玩了分布式这么久,你不会连Kafka都不清楚吧
  4. STM32程序占用的内存容量计算
  5. 如何阻止表单的默认提交事件
  6. network怎么断点调试_Windows 网络编程:调试 API
  7. android menu菜单 实现点击后不消失_教你修改Windows万年不变的黄色文件夹,让文件也不枯燥...
  8. python2和python3解释器的区别
  9. idea首次创建新模块的详细操作
  10. 被引用的外部JS存在window.onload时,判断当前页面是否已存在window.onload,并进行相应处理...