`
zhengdl126
  • 浏览: 2538888 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

mysql的增量备份

阅读更多

一、启用 Binary Log

修改 MySQL Server 的系统设置文件(eg. /etc/my.cnf),在 [mysqld] 区块中加上 log-bin=mysql-bin 选项,然后重新启动 MySQL Server,例如:
[mysqld]
log-bin

启用后你应该可以在 MySQL 的 Data Dir 里面发现如下的文件:mysql-bin.index
mysql-bin.000001
mysql-bin.000002
...............
mysql-bin.00000X

MySQL 在以下几种情况会进行 lograrote:

* 执行 Flush Logs 命令
* MySQL Server 重新启动
* 设置文件中有进行额外的设置

注:
请注意,当你使用 mysqldump 进行数据库备份时请记得加上 --flush-logs 选项,例如:
mysqldump --flush-logs -u root -p 数据库名称 > example.sql

这么做的目的是在备份时让 MySQL Server 进行 logrotate,这样子日后要辨别 "最后一次备份时间点" 之后的 Binary Log 会比较方便,因为若你没有主动(或通过设置)去删除 Binary Log,则只要你的硬盘空间够大,MySQL 会无限期的保存 Binary Log,也就是说你的 Binary Log 里面所记载的数据有可能包含 "最后一次备份时间点" 之前的数据。

定期执行mysqladmin flush-log来实现记录日志文件

二:还原增量备份

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/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日志将反应事务执行的原时间。

三, 实际执行转换后的 Binary Log
很简单,只要一行简单的命令:
mysql < example.sql

总结:

(1)指定点恢复:

mysqlbinlog --stop-position=2448 --start-position=918 mysqld-bin.000007 |mysql -D test

其中--stop-position和--start-position的值为文件中的end_log_pos

(2)指定时间点恢复

mysqlbinlog --start-date="2009-06-24 13:11:01" --stop-date="2009-06-24 14:27:31" mysqld-bin.000007 |mysql -D test

 

分享到:
评论

相关推荐

    mysql增量备份LIUNX脚本

    ### MySQL增量备份Linux脚本详解 #### 一、概述 MySQL数据库是许多应用程序的重要组成部分,为了确保数据的安全性与完整性,定期进行数据备份至关重要。在众多备份策略中,增量备份因其高效性和灵活性而受到广泛...

    linux-实现mysql增量备份和还原

    实现MySQL增量备份的步骤如下: 1. **安装Xtrabackup**: 在Linux系统中,首先需要确保MySQL服务器已经安装并运行,然后通过包管理器(如`apt-get`或`yum`)安装Xtrabackup。例如,在Ubuntu上: ``` sudo apt-...

    windows mysql 增量备份

    最近项目需要要对mysql数据库进行备份。此脚本实现了MYSQL的增量备份。 修改文件后缀以及参数信息就可用。

    mysql 增量备份/全量备份脚本

    本文将详细讲解MySQL的增量备份与全量备份,并提供在Windows和Linux环境下执行备份的脚本。 全量备份是数据库备份的基础,它会备份数据库中的所有数据,包括表结构、数据以及日志等。在MySQL中,可以使用mysqldump...

    mysql增量备份的相关脚本

    mysql当中,增量备份的部分的代码学习,仅供参考!

    window下mysql增量备份

    Window 下 MySQL 增量备份 MySQL 是一个流行的开源关系数据库管理系统,对于数据的安全性和可靠性至关重要。在实际应用中,数据误删或数据库遭受攻击的风险始终存在,因此进行增量备份是非常必要的。本文将 ...

    mysql增量备份还原

    MySQL增量备份和恢复是数据库管理中的重要操作,主要用于高效地保护数据,减少备份和恢复过程中的资源消耗。在MySQL中,增量备份主要依赖于二进制日志(binlog)功能。 首先,我们来理解什么是增量备份。增量备份是...

    Mysql增量备份

    MySQL增量备份是数据库管理系统中一种高效的数据保护策略,尤其适用于数据量庞大的系统。它与全备份相结合,可以在保证数据安全的同时,减少备份所需时间和存储空间。全备份通常耗时较长,而对于频繁更新的数据库,...

    MySQL完整备份和增量备份脚本

    mysql完整备份和增量备份脚本,本文档采用mysqldump 对数据库进行备份,mysqldump 是采用SQL级别的备份机制,它将数据表导成 SQL脚本文件,在不同的 MySQL 版本之间升级时相对比较合适,这也是最常用的备份方法,...

    mysql增量备份及恢复

    MySQL 增量备份与恢复是一项关键的数据库管理任务,旨在高效地保护数据并降低恢复时间。在MySQL中,有多种方法实现备份,包括全量备份和增量备份。本篇文章将详细探讨使用mysqldump工具进行增量备份的原理、过程以及...

    Mysql增量备份脚本

    根据公司生产nysql服务器要求,在网上学习写的Mysql增量备份脚本,已实践!!!

    Mysql增量备份和整体备份

    MySQL在Linux环境下的备份策略通常结合整体备份和增量备份,以降低存储需求和备份时间。通过crontab进行定时备份可以确保数据的定期保存。同时,主从同步提供了额外的数据保护,增强了系统的高可用性。在实际应用中...

    mysql全备份及增量备份及还原脚本

    本文将详细讲解MySQL的全备份、增量备份以及还原脚本的实现方法,旨在帮助你构建一个有效的数据库管理策略。 全备份是备份数据库的全部内容,包括所有表、触发器、存储过程等。在MySQL中,最常用的全备份工具是`...

    mysql增量备份及断点恢复脚本实例

    MySQL增量备份和断点恢复是数据库管理中至关重要的技术,特别是在生产环境中,因为数据库误操作是难以避免的。增量备份允许我们仅备份自上次备份以来发生更改的数据,从而显著减少备份所需的时间和存储空间。而断点...

    Windows下MySql数据库增量全量备份

    总结起来,Windows下MySQL数据库的备份策略通常结合`mysqldump`进行全量备份和`mysqlbinlog`进行增量备份,以实现高效且节省空间的备份方案。同时,通过编写批处理脚本,可以自动化这些过程,确保数据安全并降低管理...

    Windows下Mysql自动备份数据脚本

    1.备份MySQL到指定的目录。 2.支持压缩备份。无需安装压缩软件支持CAB压缩备份。或者安装RAR软件,支持RAR压缩备份。 3.支持备份日志。可以了解哪些数据库没有备份成功。 4.支持保留多少次备份。也就是删除多少次...

    mysql的备份和恢复基础知识(全量备份和增量备份)-详细笔记文档总结

    "mysql备份和恢复基础知识(全量备份和增量备份)" MySQL 的备份和恢复是数据库管理员的必备技能,本文将详细介绍 MySQL 的备份和恢复基础知识,包括全量备份和增量备份的方法和注意事项。 mysqldump 工作原理 ...

    docker环境下的mysql数据库自动备份脚本

    docker环境下的mysql数据库自动备份脚本,配置到系统定时任务中,能够每天自动全库或者指定实例备份数据库,删除七天前的旧备份。

    mysql(完整、增量)备份与还原

    MySQL数据库在日常运维中扮演着至关重要的角色,因此掌握如何进行完整备份、增量备份与还原是每个IT专业人员必备的技能。在这个主题中,我们将深入探讨如何使用Java来实现这些功能。 首先,让我们理解什么是数据库...

    mysql数据库增量备份

    MySQL数据库增量备份是一种高效的数据保护策略,它只备份自上次备份以来发生更改的数据,从而显著减少备份所需的存储空间和时间。在本项目中,通过编写预处理程序并设置服务器定时任务,成功实现了MySQL的增量备份...

Global site tag (gtag.js) - Google Analytics