文档章节

mysql增量备份

五大三粗
 五大三粗
发布于 2015/05/18 12:45
字数 1082
阅读 36
收藏 0

一、启用 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

© 著作权归作者所有

共有 人打赏支持
五大三粗
粉丝 159
博文 2258
码字总数 4697248
作品 0
广州
程序员
Xtrabackup备份MySQL

一、安装Xtrabackup # wget --no-check-certificate http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm rpm -ivh percona-release-0.1-4.no......

结束的伤感
2017/04/14
0
0
Percona Xtrabackup备份mysql全库及指定数据库(完整备份与增量备份)

Xtrabackup简介 Percona XtraBackup是开源免费的MySQL数据库热备份软件,它能对InnoDB和XtraDB存储引擎的数据库非阻塞地备份(对于MyISAM的备份同样需要加表锁)。XtraBackup支持所有的Perco...

拎壶冲冲冲
08/15
0
0
Using MySQL Enterprise Backup Tools

本文主要介绍MySQL Enterprise Backup的安装以及使用。 1、安装 从官方网站下载MySQL Enterprise Backup安装包,推荐下载rpm软件包。 2、备份 2.1 全量备份 --defaults-file:指定MySQL的配置...

candon123
06/27
0
0
MySQL增量备份-有备份不跑路

  前言   在MySQL数据库中,备份支持增量备份的。如果每次都使用全量备份,很消耗性能不说,还占用磁盘空间。      mysql-bin   增量备份是依靠mysql-bin日志生成增量数据,因此,...

linux运维菜
10/08
0
0
RDS恢复数据到本地mysql(阿里云)

一、准备mysql环境 1.1、安装mysql依赖软件 [root@shop src]# yum install -y gcc* gcc-c++* autoconf* automake* zlib* libxml* ncurses-devel* libgcrypt* libtool* cmake bison bison-dev......

yacai1990
2016/10/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Java程序员的书籍清单

我自己一路来,看过的书籍,都是经典,我自己也在不断地回溯,在这里分享给大家(排名不分先后,这里仅仅是我自己购买这些书籍的时间顺序排列): 《高效程序员的45个习惯 敏捷开发修炼之道》...

ChinaHYF
29分钟前
1
0
DeepMind 开源图神经网络的代码

用于支持论文《Relational inductive biases, deep learning, and graph networks》。 github A graph network takes a graph as input and returns a graph as output. The input graph has......

shengjuntu
50分钟前
2
0
python2编码详解、一

以前使用python3没觉的什么,跟着公司使用python2后被编码问题折磨的痛不欲生,好好研究了一下编码问题,参考了很多博文,加入自己的理解,这里只是对编码的介绍,下一篇是python2中编码问题...

hc321
59分钟前
2
0
基于OpenSSL的一些常用加密签名算法

目前包括:MD5、SHA512、DES、RSA加解密、RSA+MD5签名验证算法,在openssl基础上再进行封装,使用简单,头文件需要包含openssl库,可以使用vcpkg自动管理,省去繁琐的配置工程的过程。 该RSA...

LoSingSang
今天
1
0
spring Data JPA

什么是JPA? 全称Java Persistence API,可以通过注解或者XML描述【对象-关系表】之间的映射关系,并将实体对象持久化到数据库中。 为我们提供了: 1)ORM映射元数据:JPA支持XML和注解两种元...

狼王黄师傅
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部