文档章节

mysql增量备份

五大三粗
 五大三粗
发布于 2015/05/18 12:45
字数 1082
阅读 34
收藏 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

© 著作权归作者所有

共有 人打赏支持
五大三粗
粉丝 158
博文 2217
码字总数 4582440
作品 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...

拎壶冲冲冲
今天
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
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
xtrabackup的mysql备份脚本(一)

一、安装xtrabackup工具 安装方法见:xtrabackup安装 # wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.1/binary/tarball/percona-xtrabackup-2.4.1-Linux-x86......

zouqingyun
2016/08/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

java并发备忘

不安全的“先检查后执行”,代码形式如下: if(条件满足){ //这里容易出现线程安全问题//doSomething}else{//doOther} 读取-修改-写入 原子操作:使用CAS技术,即首先从V中读取...

Funcy1122
今天
0
0
SpringBoot2.0 停机

最近新建了个SpringBoot2.0的项目,因为原来一直使用的是传统的Tomcat部署war包的形式,所以这次SpringBoot内置Tomcat部署jar包的时候遇到了很多问题。其中一个就是因为没有外置的Tomcat容器...

Canaan_
昨天
0
1
Confluence 6 外部参考

一个外部参考的意思是任何站点链接到你 Confluence 的实例。任何时候当 Confluence 的用户单击这个外部链接的时候,Confluence 可以记录这次单击为参考。 在默认的情况下,外部链接的参考链接...

honeymose
昨天
0
0
Android中的设计模式之抽象工厂模式

参考 《设计模式解析》 第十一章 Abstract Factory模式 《设计模式:可复用面向对象软件的基础 》3.1 Abstract Factory 抽象工厂 对象创建型模式 《Android源码设计模式解析与实战》第6章 创...

newtrek
昨天
0
0
Redis | 地理空间(GEO)的一个坑

Redis的地理空间(Geo)是个好东西,轻轻松松的就可以把地图描点的问题处理了, 最近却遇到一个坑...Redis采用的Msater-Slave模式, 运用GEORADIUS在salve读取对应的数据,新增了从节点但是从不返...

云迹
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部