xtrabackup有两个主要的工具:innobackupex和xtrabackup,xtrabackup只能备份InnoDB和XtraDB数据表,innobackupex封装了xtrabackup,可以备份MyISAM数据表。

MySQL数据库本身提供的工具并不支持真正的增量备份,二进制日志恢复是point-in-time(时间点)的恢复而不是增量备份。Xtrabackup工具支持对InnoDB存储引擎的增量备份,工作原理如下:

1.首先完成一个完全备份,并记录下此时检查点的LSN(LogSequence Number)。

2.在进程增量备份时,比较表空间中每个页的LSN是否大于上次备份时的LSN,如果是,则备份该页,同时记录当前检查点的LSN。

1.下载xtrabackup(下载二进制版本免安装)

# tar zxvfxtrabackup-1.5.tar.gz -C /usr/local/

源码安装过程具体参见源码目录下BUILD.txt文件。

2.xtrabackup选项注释如下:

--print-defaults显示默认选项。Xtrabackup默认情况会去读my.cnf文件,读取顺序是/etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf

--no-defaults忽略任何my.cnf文件选项

--defaults-file=#读取指定的my.cnf文件

--defaults-extra-file=#再读取另外一个文件

--target-dir=name目的目录,默认目录在./xtrabackup_backupfiles/,相对于datadir目录

--backup备份

--stats计算datadir目录统计信息

--prepare从backup恢复

--export在恢复时,创建文件导入到另一个数据库

--apply-log-only在恢复时,停止恢复进程不进行LSN只使用log

--print-param打印出参数

--use-memory=#buffer_pool_size值

--suspend-at-end在备份时,创建xtrabackup_suspended文件,直到备份完成后删掉

--throttle=#限制IO总数

--log-stream记录标准输出信息xtrabackup_logfile

--extra-lsndir=name仅适用于backup,保存另一份xtrabackup_checkpoints文件

--incremental-lsn=name仅适用于backup,增量备份

--incremental-basedir=name仅适用于backup,增量备份目录

--incremental-dir=name仅适用于prepare,恢复指定目录下的.delta文件和日志文件

--tables=name过滤某些表

--tables_file=name过滤database.table列表文件

--create-ib-logfile

-h,--datadir=name datadir目录

-t,--tmpdir=name tmpdir目录

--parallel=#默认为1.传输数据文件的并行线程数。没有任何流模式的影响

--innodb_*有关innodb参数

3.innobackupex-1.5.1选项注释如下:

innobackupex-1.5.1[--sleep=MS] [--compress[=LEVEL]] [--include=REGEXP] [--user=NAME]

[--password=WORD] [--port=PORT][--socket=SOCKET] [--no-timestamp]

[--ibbackup=IBBACKUP-BINARY][--slave-info] [--stream=tar]

[--scpopt=OPTIONS-FOR-SCP]

[--defaults-file=MY.CNF]

[--databases=LIST][--remote-host=HOSTNAME] [--no-lock] BACKUP-ROOT-DIR

对数据库进行热备。默认情况下以当前时间戳创建备份根目录。上述命令完整备份所有MyISAM和InnoDB引擎表以及索引。包含.frm,.MRG, .MYD, .MYI, .TRG, .TRN, .ARM, .ARZ, .opt, .par和InnoDB数据和日志文件。使用mysql客户端程序连接mysql服务器,运行ibbackup(InnoDB热备程序)作为一个子进程。

innobackupex-1.5.1--apply-log [--use-memory=MB] [--uncompress] [--defaults-file=MY.CNF]

[--export] [--redo-only][--ibbackup=IBBACKUP-BINARY] BACKUP-DIR

从备份恢复,运行ibbackup子进程,但是不能连接到数据库。按照BACKUP-DIR/backup-my.cnf定义,使用BACKUP-DIR/ibbackup_logfile恢复InnoDB数据文件和创建新的InnoDB日志文件。

innobackupex-1.5.1--copy-back [--defaults-file=MY.CNF] BACKUP-DIR

从备份目录拷贝数据,索引和日志文件到原datadir目录。

--defaults-file=[MY.CNF]该选项传递给xtrabackup子进程,从指定文件读取缺省选项

--apply-log从备份恢复。

--redo-only该选项强制跳过rollback阶段,只进行redo。这是有必要使用的,如果备份后,要使用增量改变的。

--copy-back从备份目录拷贝数据和索引文件到datadir目录

--remote-host=HOSTNAME备份到远程主机上,使用ssh

--stream=[tar|cpio(notimplemented)]指定备份标准输出格式

--tmpdir=DIRECTORY默认与tmpdir相同。使用—remote-host或—stream参数后,传输日志文件将存放在临时目录下

--use-memory=MB选项传递给xtrabackup子进程。恢复使用内存大小

--parallel=NUMBER-OF-THREADS选项传递给xtrabackup子进程,指定数据传输线程总数。默认为1

--throttle=IOS选项传递给xtrabackup子进程,限制IO线程数量

--sleep=MS选项传递给xtrabackup子进程。每拷贝1MB数据暂停多少MS时间

--compress[=LEVEL]选项传递给xtrabackup子进程。压缩级别在0-9.1快速压缩,9最佳压缩,0不压缩。默认为1.

--include=REGEXP选项传递给xtrabackup子进程。使用正则进行匹配

--databases=LIST指定备份数据库

--tables-file=FILE

--uncompress选项传递给xtrabackup子进程。对压缩过的InnoDB数据文件不进行压缩

--export仅使用于prepare选项。选项传递给xtrabackup子进程。

--user=NAME

--password=WORD

--host=HOST

--port=PORT

--slave-info备份复制从服务端,主从信息记录在ibbackup_slave_info文件中

--socket=SOCKET

--no-timestamp不在备份根目录下创建以当前时间戳为名称的新的备份目录

--ibbackup=IBBACKUP-BINARYibbackup二进制路径

--no-lock禁止表级锁。全部是InnoDB引擎表和不关系二进制日志位置下使用

--scpopt=SCP-OPTIONS指定scp参数

4.innobackupex备份

# ./innobackupex-1.5.1/www/mybak/

在/www/mybak/目录下将创建以时间戳为名称的目录

--stream=tar将使用到tar4ibd进行压缩。注意:在解压时候必须加上-i参数进行解压。

5.恢复

# ./mysqladminshutdown

# rm -rfinnodb

#./innobackupex-1.5.1 --apply-log /www/mybak/2011-04-11_15-28-02/

# ./innobackupex-1.5.1–copy-back /www/mybak/2011-04-11_15-28-02/

# chown –R mysql.mysql/www/mydata

6.xtrabackup备份

# ./xtrabackup--defaults-file=/etc/my.cnf --backup --target-dir=/mydata/mybak/

# ls

cactiibdata1nagiostestxtrabackup_checkpointsxtrabackup_logfile

7.恢复

# ./xtrabackup--defaults-file=/etc/my.cnf --prepare --target-dir=/mydata/mybak/

./xtrabackupVer 1.5 Rev undefined for 5.1.53unknown-linux-gnu (x86_64)

xtrabackup: cdto /mydata/mybak/

xtrabackup:This target seems to be not prepared yet.

xtrabackup:xtrabackup_logfile detected: size=2097152, start_lsn=(732446480)

xtrabackup:Temporary instance for recovery is set as followings.

xtrabackup:innodb_data_home_dir = ./

xtrabackup:innodb_data_file_path =ibdata1:10M:autoextend

xtrabackup:innodb_log_group_home_dir = ./

xtrabackup:innodb_log_files_in_group = 1

xtrabackup:innodb_log_file_size = 2097152

xtrabackup:Starting InnoDB instance for recovery.

xtrabackup:Using 104857600 bytes for buffer pool (set by --use-memory parameter)

InnoDB: TheInnoDB memory heap is disabled

InnoDB:Mutexes and rw_locks use GCC atomic builtins

InnoDB:Compressed tables use zlib 1.2.3

InnoDB:Warning: innodb_file_io_threads is deprecated. Please useinnodb_read_io_threads and innodb_write_io_threads instead

11041116:49:25InnoDB: highest supported fileformat is Barracuda.

InnoDB: Logscan progressed past the checkpoint lsn 732446480

11041116:49:25InnoDB: Database was not shutdown normally!

InnoDB:Starting crash recovery.

InnoDB:Reading tablespace information from the .ibd files...

InnoDB: Doingrecovery: scanned up to log sequence number 733504186 (56 %)

11041116:49:25InnoDB: Starting an apply batchof log records to the database...

InnoDB:Progress in percents: 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 3132 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 5758 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 8384 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99

InnoDB: Applybatch completed

InnoDB: LastMySQL binlog file position 0 560768957, file name ./mysql-bin.000001

11041116:49:25 Percona XtraDB (http://www.percona.com) 1.0.13-12.4 started; logsequence number 733504186

[notice(again)]

If you use binary log and don't use any hackof group commit,

the binary log position seems to be:

InnoDB: LastMySQL binlog file position 0 560768957, file name ./mysql-bin.000001

xtrabackup:starting shutdown with innodb_fast_shutdown = 1

11041116:49:32InnoDB: Starting shutdown...

11041116:49:33InnoDB: Shutdown completed; logsequence number 733553275

# ls

cactiibdata1nagiostestxtrabackup_binlog_pos_innodbxtrabackup_checkpointsxtrabackup_logfile

# ./xtrabackup--defaults-file=/etc/my.cnf --prepare --target-dir=/mydata/mybak/

./xtrabackupVer 1.5 Rev undefined for 5.1.53unknown-linux-gnu (x86_64)

xtrabackup: cdto /mydata/mybak/

xtrabackup:This target seems to be already prepared.

xtrabackup:notice: xtrabackup_logfile was already used to '--prepare'.

xtrabackup:Temporary instance for recovery is set as followings.

xtrabackup:innodb_data_home_dir = ./

xtrabackup:innodb_data_file_path =ibdata1:10M:autoextend

xtrabackup:innodb_log_group_home_dir = ./

xtrabackup:innodb_log_files_in_group = 3

xtrabackup:innodb_log_file_size = 268435456

xtrabackup:Starting InnoDB instance for recovery.

xtrabackup:Using 104857600 bytes for buffer pool (set by --use-memory parameter)

InnoDB: TheInnoDB memory heap is disabled

InnoDB:Mutexes and rw_locks use GCC atomic builtins

InnoDB:Compressed tables use zlib 1.2.3

InnoDB:Warning: innodb_file_io_threads is deprecated. Please useinnodb_read_io_threads and innodb_write_io_threads instead

11041116:49:58InnoDB: Log file ./ib_logfile0did not exist: new to be created

InnoDB:Setting log file ./ib_logfile0 size to 256 MB

InnoDB:Database physically writes the file full: wait...

InnoDB:Progress in MB: 100 200

11041116:50:03InnoDB: Log file ./ib_logfile1did not exist: new to be created

InnoDB:Setting log file ./ib_logfile1 size to 256 MB

InnoDB:Database physically writes the file full: wait...

InnoDB:Progress in MB: 100 200

11041116:50:09InnoDB: Log file ./ib_logfile2did not exist: new to be created

InnoDB:Setting log file ./ib_logfile2 size to 256 MB

InnoDB:Database physically writes the file full: wait...

InnoDB:Progress in MB: 100 200

11041116:50:14InnoDB: highest supported fileformat is Barracuda.

InnoDB: Thelog sequence number in ibdata files does not match

InnoDB: thelog sequence number in the ib_logfiles!

110411 16:50:14InnoDB: Database was not shut down normally!

InnoDB:Starting crash recovery.

InnoDB:Reading tablespace information from the .ibd files...

InnoDB: LastMySQL binlog file position 0 560768957, file name ./mysql-bin.000001

11041116:50:14 Percona XtraDB (http://www.percona.com) 1.0.13-12.4 started; logsequence number 733553676

[notice(again)]

If you use binary log and don't use any hackof group commit,

the binary log position seems to be:

InnoDB: LastMySQL binlog file position 0 560768957, file name ./mysql-bin.000001

xtrabackup:starting shutdown with innodb_fast_shutdown = 1

11041116:50:16InnoDB: Starting shutdown...

11041116:50:16InnoDB: Shutdown completed; logsequence number 733553676

# ls

cactiib_logfile0ib_logfile2testxtrabackup_checkpoints

ibdata1ib_logfile1nagiosxtrabackup_binlog_pos_innodbxtrabackup_logfile

此时InnoDB的全部数据文件已经恢复了。将这些文件拷贝到datadir目录下。

注意:xtrabackup只是备份数据文件,不会备份数据表结构。因此恢复时,必须有对应的表结构文件。

# cp -r cacti/mydata/data/

# cp -r ib*/mydata/data/

# cp -r nagios/mydata/data/

# chown –R mysql.mysql/mydata/data

#/usr/local/mysql-5.5.11/bin/mysqld --user=mysql &

8.增量备份

a.全量备份

# ./xtrabackup --backup--target-dir=/mydata/mybak/base

xtrabackup: The latest check point (forincremental): '783599510'

>> log scanned up to (783977887)

xtrabackup: Stopping log copying thread.

xtrabackup: Transaction log of lsn (783374191) to (783977887) wascopied.

# ls

cactiibdata1nagiosxtrabackup_checkpointsxtrabackup_logfile

# cat xtrabackup_checkpoints

backup_type = full-backuped

from_lsn = 0

to_lsn = 783599510

last_lsn = 783977887

b.增量备份

# ./xtrabackup --backup --target-dir=/mydata/mybak/delta--incremental-basedir=/mydata/mybak/base

incremental backup from 783599510 is enabled.

……

xtrabackup: The latest check point (for incremental): '793114541'

>> log scanned up to (795499255)

xtrabackup: Stopping log copying thread.

xtrabackup: Transaction log of lsn (793069999) to (795499255) wascopied.

# ls /mydata/mybak/delta/

cactiibdata1.deltanagiosxtrabackup_checkpointsxtrabackup_logfile

# cat /mydata/mybak/delta/xtrabackup_checkpoints

backup_type = incremental

from_lsn = 783599510

to_lsn = 793114541

last_lsn = 795499255

在增量备份目录下,数据文件都是以.delta结尾的。增量备份只备份上一次全量备份之后被修改过的page。

C.恢复过程:需要分别对全量和增量备份进行恢复操作

# ./xtrabackup --prepare --target-dir=/mydata/mybak/base

# ./xtrabackup --prepare --target-dir=/mydata/mybak/base--incremental-dir=/mydata/mybak/delta

上述过程,首先将全部文件备份到/mydata/mybak/base目录下,增量备份产生的文件备份到/mydata/mybak/delta目录下。在恢复过程中,首先指定全量备份的路径,然后将增量备份应用于该全量备份。

将/mydata/mybak/base目录下的文件拷贝到datadir目录下,即可。同时还需要数据表结构文件。

xtrabackup备份mysql_xtrabackup备份和恢复MySQL相关推荐

  1. xtrabackup备份mysql_xtrabackup备份mysql

    innobackupex是xtrabackup内封装的一个脚本,里面能针对不同版本的mysql使用不同的脚本命令,以及针对myisam引擎和innodb引擎的处理,处理myisam要自己添加读锁. m ...

  2. Xtrabackup备份、还原、恢复Mysql操作大全

    环境:CentOS 6.7  + Mysql 5.7.19 + Xtraback 2.4.8 innobackupex常用参数: --user=USER 指定备份用户,不指定的话为当前系统用户 --p ...

  3. mysql xtrabackup还原_Xtrabackup备份、还原、恢复Mysql操作大全

    #数据目录:/data/mysql $ mkdir -pv /backup/3306/20171107/{full,inc1,inc2} #本地 单实例 全量备份 $ innobackupex --d ...

  4. innobackupex和Xtrabackup备份和恢复MySQL数据

    innobackupex备份和恢复MySQL数据 当MySQL数据量很小时,我们可以使用mysqldump来备份,无论是myisam引擎还是innodb引擎都是没有问题的. 但数据量很大,比如上百GB ...

  5. xtrabackup全量、增量备份恢复mysql数据库

    一. 全量备份恢复: 查看原表内容: MariaDB [(none)]> select * from testdb.students; +----+------------+------+--- ...

  6. mysql整备_【mysql】使用xtrabackup在线增量备份及恢复数据库

    一.Percona Xtrabackup 简介 1.Xtrabackup  bin目录文件 介绍 1)innobackupex innobackupex 是xtrabackup的一个符号链接 . in ...

  7. mysql xtrabackup还原_xtrabackup备份恢复Mysql

    Mysql增量备份Xtrabackup中包含两个工具:xtrabackup - 用于热备份innodb, xtradb表的工具,不能备份其他表(MYISAM表).innobackupex - 对xtr ...

  8. mysql filde_备份一个约250G的mysql实例【xtrabackup备份方案对比】

    备份一个约250G的mysql实例 A. 使用xtrabackup备份加gzip单线程压缩 time innobackupex --user=test --password=test  --socke ...

  9. MySQL利用xtrabackup进行增量备份详细过程汇总

    1,创建mysql备份用户 mysql -uroot --password="" -e"CREATE USER 'backup'@'192.168.%' IDENTIFI ...

最新文章

  1. salt-ssh 安装salt-minion 笔记
  2. java比较两个对象重写,不重写equals进行两个对象间的深度比较
  3. 新客户上云 –虚拟机及相关服务常见问题集锦
  4. x86平台堆栈优化问题
  5. akamai 指纹 和 akamai BMP 移动端sensor 风控分析
  6. 【软考】中级软件设计师的一些知识点笔记(22.2.10)
  7. 含泪推荐5款实用又小巧的PC软件
  8. 《通信软件开发与应用》课程结业报告
  9. HBuilderX前端html功能应用
  10. 单龙芯3A3000-7A1000PMON研究学习-(15)撸起袖子干-先来一杯代码吧
  11. 小黄鸡 php,小黄鸡simsimi接口
  12. 第10章: 面向对象编程(高级部分)
  13. 2020泰迪杯C题解题流程
  14. PMP第四章:项目整合管理
  15. 稻城亚丁6日游之引子
  16. 当面试问到自己有哪些缺点应该怎么回答
  17. java计算机毕业设计网上宠物商城管理系统源码+系统+数据库+lw文档+mybatis+运行部署
  18. 联想键盘最上面一行切换功能
  19. 实时系统中的MCS模式和Sporadic Server算法
  20. oracle动态菜单,本地动态SQL(Open for等)如何获取SQL的定义属性,包括栏位名称和数据类型...

热门文章

  1. asp上传头像mysql,asp 怎么在注册页面上传头像和保存头像到数据库
  2. 乐视盒子如何无线安装APK 电脑文件共享
  3. 数据挖掘--决策树ID3算法(例题)
  4. 室内不能摆的52种致癌植物
  5. 因为WinRAR软件程序出错,而导致桌面的图标无法右键
  6. 天命과 運命과의 關係
  7. 火影忍者手游打秘境服务器响应超时,手游火影忍者打秘境为什么伤害 | 手游网游页游攻略大全...
  8. android textview图片,Android如何在TextView中显示图片
  9. Linux lsof命令详解
  10. 华为路由器查看debug信息