ITPub博客

首页 > Linux操作系统 > Linux操作系统 > mysql备份工具

mysql备份工具

原创 Linux操作系统 作者:myownstars 时间:2013-04-08 16:27:45 0 删除 编辑

备份种类

物理备份/逻辑备份

在线备份/离线备份

本地备份/远程备份:mysqldump支持远程备份,select … into outfile也可以从远程发起,但生存的文件却需在本地服务器;

全库备份/增量备份:默认增量只备份二进制日志,而xtrabackup通过比对LSN实现真正意义上的增量备份

快照备份:采用写时复制原理,Veritas/LVM/ZFS

LVM采用写时复制,创建快照时只复制元数据;当原始卷上有写操作时,将被改动的数据块的前镜像复制到快照空间;

读取快照时,如果数据块在创建快照后没有修改过,直接重定向到原始卷,否则直接读取快照中的原始数据;

更偏向于防范误操作,可运用于slave服务器上

 

也可在slave运行备份,减缓master的负载

 

对于MyISAM/InnoDB表,数据量较小时均可使用mysqldump,其中mysqldump –single-transaction不阻塞InnoDB大部分操作(DDL除外);

另一个通用的方法是关机冷备,innoDB最好设置innodb_fast_shutdown=0,以保证脏页和merge insert buffer全部执行完毕;

 

需要指出的是,由于MyISAM只支持表锁,不可能在不阻塞写操作的情况下进行有效备份;

 

 

Mysqlhotcopy

是一个perl脚本,使用flush tables/lock tables和cp(scp)备份数据库,只用于MyISAM和archive;

比mysqldump更快,属于物理复制;

 

Xtrabackup

由percona公司提供,免费;

Xtrabackup有两个工具:xtrabackup和innobackupex,前者只能备份innodb和xtradb;后者是一个perl脚本封装了xtrabackup,可备份MyISAM表(施加读锁);

逐页复制表文件,每次读取64个页,即16K * 64 =1M;复制redo log时则每次读取512K的数据;

Xtrabackup很好的实现了增量备份,原理如下:

进行完全备份,记录检查点LSN;进行增量备份,比较每个页LSN和上次备份时的LSN,如果大于后者,则备份并记录当前检查点LSN;

--backup:备份数据库

--incremental-lsn:只复制比指定LSN高的ibd page,同—backup协同使用

 

完全备份 /backup/base

./xtrabackup –backup –target-dir=/backup/base

增量备份 /backup/delta

./xtrabackup –backup –target-dir=/backup/delta –incremental-basedir=/backup/base

准备阶段

./xtrabackup –prepare –target-dir=/backup/base

应用增量备份

./xtrabackup –prepare –target-dir=/backup/base –incremental-dir=/backup/delta

 

Innodbackupex有时会出现超时现象http://www.taobaodba.com/html/1552_innobackupex%E8%B6%85%E6%97%B6%E9%80%80%E5%87%BA.html   

 

Ibbackup

备份innodb,收费

备份过程

记录开始备份时redo log的检查点LSN;复制.ibd/.myi以及共享表空间文件;记录复制完成后redo的检查点LSN;复制备份时产生的redo log;

恢复过程

恢复表空间文件;应用redo log;

 

 

binlog增量备份和恢复

Mysql自带的功能只支持备份binlog实现增量备份,恢复的时候需要mysqlbinlog应用binlog

 

Mysqlbinlog  host-bin.007  > tmp.sql 或Mysqlbinlog  binglog.log  | mysql

注:每个应用的binlog都会在$TMPDIR生成一个同等大小的临时文件,最好临时指定$TMPDIR变量

TMPDIR=/my/big/disk/tmp; export TMPDIR

mysqlbinlog binlog.* > binlogdump.sql

 

应当一次处理所有的binlog,

Mysqlbinlog binlog.001 binlog.002 … | mysql –u root –p

假定001创建了临时表而002需要用到,若分两次处理,则临时表会在处理完001后删除,导致002无法使用

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/15480802/viewspace-757958/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: systemtap基础入门
请登录后发表评论 登录
全部评论

注册时间:2010-03-18

  • 博文量
    375
  • 访问量
    3321133