mysql备份工具命令xtra_mysql备份实战-Xtrabackup工具备份

7、使用Xtrabackup对数据库进行部分备份

Xtrabackup也可以实现部分备份,即只备份某个或某些指定的数据库或某数据库中的某个或某些表。但要使用此功能,必须启用innodb_file_per_table选项,即每张表保存为一个独立的文件。同时,其也不支持–stream选项,即不支持将数据通过管道传输给其它程序进行处理。

此外,还原部分备份跟还原全部数据的备份也有所不同,即你不能通过简单地将prepared的部分备份使用–copy-back选项直接复制回数据目录,而是要通过导入表的方向来实现还原。当然,有些情况下,部分备份也可以直接通过–copy-back进行还原,但这种方式还原而来的数据多数会产生数据不一致的问题,因此,无论如何不推荐使用这种方式。

(1)创建部分备份

创建部分备份的方式有三种:正则表达式(–include), 枚举表文件(–tables-file)和列出要备份的数据库(–databases)。

(a)使用–include使用–include时,要求为其指定要备份的表的完整名称,即形如databasename.tablename,如:

# innobackupex --include='^feiyu[.]tb1'  /path/to/backup

(b)使用–tables-file此选项的参数需要是一个文件名,此文件中每行包含一个要备份的表的完整名称;如:

# echo -e 'feiyu.tb1\nmageedu.tb2' > /tmp/tables.txt

# innobackupex --tables-file=/tmp/tables.txt  /path/to/backup

(c)使用–databases此选项接受的参数为数据名,如果要指定多个数据库,彼此间需要以空格隔开;同时,在指定某数据库时,也可以只指定其中的某张表。此外,此选项也可以接受一个文件为参数,文件中每一行为一个要备份的对象。如:

# innobackupex --databases="feiyu testdb"  /path/to/backup

(2)整理(preparing)部分备份prepare部分备份的过程类似于导出表的过程,要使用–export选项进行:

# innobackupex --apply-log --export  /pat/to/partial/backup

此命令执行过程中,innobackupex会调用xtrabackup命令从数据字典中移除缺失的表,因此,会显示出许多关于“表不存在”类的警告信息。同时,也会显示出为备份文件中存在的表创建.exp文件的相关信息。

(3)还原部分备份还原部分备份的过程跟导入表的过程相同。当然,也可以通过直接复制prepared状态的备份直接至数据目录中实现还原,不要此时要求数据目录处于一致状态。

下面实际演示其完整的备份流程:

←#14#root@localhost /tmp/full-backup  →innobackupex --user=root /tmp/full-backup/  #完全备份

InnoDB Backup Utility v1.5.1-xtrabackup; Copyright 2003, 2009 Innobase Oy

and Percona LLC and/or its affiliates 2009-2013.  All Rights Reserved.

。。。。。。。。。。

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

xtrabackup: Stopping log copying thread.

.>> log scanned up to (2987626)

xtrabackup: Creating suspend file '/tmp/full-backup/2015-06-25_05-58-26/xtrabackup_log_copied' with pid '7858'

xtrabackup: Transaction log of lsn (2987626) to (2987626) was copied.

150625 05:58:30  innobackupex: All tables unlocked

innobackupex: Backup created in directory '/tmp/full-backup/2015-06-25_05-58-26'

innobackupex: MySQL binlog position: filename 'mysql-bin.000001', position 2383

150625 05:58:30  innobackupex: Connection to database server closed

150625 05:58:30  innobackupex: completed OK!mysql> insert into  tutors(tname) values('stu00011');#在数据库中插入数据

Query OK, 1 row affected (0.03 sec)

mysql> insert into  tutors(tname) values('stu00012');

Query OK, 1 row affected (0.00 sec)←#246#root@localhost /tmp  →innobackupex --incremental /tmp/full-backup/ --incremental-basedir=/tmp/full-backup/2015-06-25_05-58-26/ #做增量备份

InnoDB Backup Utility v1.5.1-xtrabackup; Copyright 2003, 2009 Innobase Oy

and Percona LLC and/or its affiliates 2009-2013.  All Rights Reserved.

。。。。。。。。。。。

xtrabackup: Creating suspend file '/tmp/full-backup/2015-06-25_06-00-48/xtrabackup_log_copied' with pid '8663'

xtrabackup: Transaction log of lsn (2988209) to (2988209) was copied.

150625 06:00:53  innobackupex: All tables unlocked

innobackupex: Backup created in directory '/tmp/full-backup/2015-06-25_06-00-48'

innobackupex: MySQL binlog position: filename 'mysql-bin.000001', position 2924

150625 06:00:53  innobackupex: Connection to database server closed

150625 06:00:53  innobackupex: completed OK!mysql> insert into  tutors(tname) values('stu00014');  #再次插入数据

Query OK, 1 row affected (0.02 sec)

mysql> insert into  tutors(tname) values('stu00015');

Query OK, 1 row affected (0.00 sec)←#247#root@localhost /tmp  →innobackupex --incremental /tmp/full-backup/ --incremental-basedir=/tmp/full-backup/2015-06-25_06-00-48  #再次做增量备份

InnoDB Backup Utility v1.5.1-xtrabackup; Copyright 2003, 2009 Innobase Oy

and Percona LLC and/or its affiliates 2009-2013.  All Rights Reserved

。。。。。。。。。

xtrabackup: Creating suspend file '/tmp/full-backup/2015-06-25_06-02-41/xtrabackup_log_copied' with pid '9259'

xtrabackup: Transaction log of lsn (2988781) to (2988781) was copied.

150625 06:02:45  innobackupex: All tables unlocked

innobackupex: Backup created in directory '/tmp/full-backup/2015-06-25_06-02-41'

innobackupex: MySQL binlog position: filename 'mysql-bin.000001', position 3465

150625 06:02:46  innobackupex: Connection to database server closed

150625 06:02:46  innobackupex: completed OK!←#266#root@localhost /tmp/full-backup/2015-06-25_05-58-26  →cat  xtrabackup_checkpoints  #查看日志序列号是否一致

backup_type = log-applied

from_lsn = 0

to_lsn = 2987626

last_lsn = 2987626

compact = 0

←#267#root@localhost /tmp/full-backup/2015-06-25_05-58-26  →cd ../2015-06-25_06-00-48/

←#268#root@localhost /tmp/full-backup/2015-06-25_06-00-48  →cat  xtrabackup_checkpoints

backup_type = incremental

from_lsn = 2987626

to_lsn = 2988209

last_lsn = 2988209

compact = 0

←#269#root@localhost /tmp/full-backup/2015-06-25_06-00-48  →cd ../2015-06-25_06-02-41/

←#270#root@localhost /tmp/full-backup/2015-06-25_06-02-41  →cat  xtrabackup_checkpoints

backup_type = incremental

from_lsn = 2988209

to_lsn = 2988781

last_lsn = 2988781

compact = 0←#248#root@localhost /tmp  →innobackupex --apply-log --redo-only /tmp/full-backu2015-06-25_05-58-26/  #做准备

InnoDB Backup Utility v1.5.1-xtrabackup; Copyright 2003, 2009 Innobase Oy

and Percona LLC and/or its affiliates 2009-2013.  All Rights Reserved.

[notice (again)]

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

the binary log position seems to be:

InnoDB: Last MySQL binlog file position 0 2241, file name ./mysql-bin.000001

xtrabackup: starting shutdown with innodb_fast_shutdown = 1

InnoDB: Starting shutdown...

InnoDB: Shutdown completed; log sequence number 2987626

150625 06:04:03  innobackupex: completed OK!

←#249#root@localhost /tmp  →innobackupex --apply-log --redo-only /tmp/full-backu2015-06-25_05-58-26/ --incremental-dir=/tmp/full-backup/2015-06-25_06-00-48/ #合并第一次增量备份文件

。。。。。。。。。。

innobackupex: Copying '/tmp/full-backup/2015-06-25_06-00-48/management/admin.frm' to '/tmp/full-backup/2015-06-25_05-58-26/management/admin.frm'

150625 06:05:28  innobackupex: completed OK!

←#251#root@localhost /tmp  →innobackupex --apply-log --redo-only /tmp/full-backu2015-06-25_05-58-26/ --incremental-dir=/tmp/full-backup/2015-06-25_06-02-41/  #合并第二次增量备份文件

。。。。。。。。。。。。。。。。

innobackupex: Copying '/tmp/full-backup/2015-06-25_06-02-41/management/classinfo.frm' to '/tmp/full-backup/2015-06-25_05-58-26/management/classinfo.frm'

innobackupex: Copying '/tmp/full-backup/2015-06-25_06-02-41/management/admin.frm' to '/tmp/full-backup/2015-06-25_05-58-26/management/admin.frm'

150625 06:07:10  innobackupex: completed OK!

←#258#root@localhost ~  →rm -rf  /mydata/data1/*  #删除数据文件目录

←#259#root@localhost ~  →innobackupex --copy-back  /tmp/full-backup/2015-06-25_05-58-26/  #恢复

。。。。。。。。。。。。。。。。

innobackupex: Starting to copy InnoDB log files

innobackupex: in '/tmp/full-backup/2015-06-25_05-58-26'

innobackupex: back to original InnoDB log directory '/mydata/data1'

innobackupex: Finished copying back files.

150625 06:12:29  innobackupex: completed OK!

←#276#root@localhost /mydata/data1  →chown -R mysql.mysql ./*  #修改属主和属组

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值