innobackupex部分表备份和恢复方法是什么

68次阅读
没有评论

共计 3712 个字符,预计需要花费 10 分钟才能阅读完成。

本篇内容主要讲解“innobackupex 部分表备份和恢复方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让丸趣 TV 小编来带大家学习“innobackupex 部分表备份和恢复方法是什么”吧!

Percona XtraBackup 的功能之一“部分备份(partial backups)”,即让用户可以备份指定的表或
。要注意的是:你希望备份的表必须是在独立的表空间中,即该表在创建以前,你的
MySQL
开启了 innodb_file_per_table 设置。

还一点要注意的是:不要将 prepared backup 备份的东西拷贝回去。部分备份使用的是导入表(importing the tables),而不是全库备份的 –copy-back 参数。

关于 innobackupex 可以实现部分表或者库的(增量)备份和恢复

部分备份共有三种方式,分别是:

1. 用正则表达式表示要备份的库名及表名(参数为 –include);

2. 将要备份的表名或库名都写在一个文本文件中(参数为 –tables-file)

3. 将要备份表名或库名完整的写在命令行或者文件中中(参数为:–databases)

方式一:使用 –include 参数

这种方式通过正则表达式来匹配数据库名和表名,你需要写完整的数据库名及表名,如果数据库有用户名密码请使用 –user 和 –password 指定相关信息。,格式如下:databasename.tablename。下面是一个例子:

[root@tool202 2018-12-01_20-39-31]# innobackupex –include= liuwenhe.liuwenhe   /data/

上面的方式会和其他使用 innobackupex 命令的备份方式一样,创建一个时间戳命名的文件夹,不同的是,最终只包括那些正则表达式匹配的表(liuwenhe.liuwenhe)。

要注意的是,这个命令最后会传给 xtrabackup –tables 命令执行;

方式二:使用 –tables-file 参数

这种方式是将所有要备份的完整表名都写在一个文本文件中,每行一个完整表名,然后程序读取这个文本文件进行备份。完整表名即:databasename.tablename, 如果需要备份某个库的全部表则可以写成 databasename.*. 需要注意的是文件中每行开头和结尾不能有空格!下面是一个例子:

[root@rongduan-renhang32 ~]# cat  name.txt

liuwenhe.liu

liuwenhe.he

liuhe.*

可以有需要的话使用下面命令去掉每行结尾的空格

[root@rongduan-renhang32 ~]#sed  -e s/[]*$//g   name.txt  name1.txt

2. 然后执行备份:

[root@rongduan-renhang32 ~]#  innobackupex  –user=root –password= V56788@1qaz –port=3306 –tables-file=/root/name.txt  /data/

上面的方式会和其他使用 innobackupex 命令的备份方式一样,创建一个时间戳命名的文件夹,不同的是,最终只包括那些文件中指定的表名。

这个命令最后会传给 xtrabackup –tables-file 命令执行,而不是 –tables,这个命令只会创建那些需要备份的数据库文件夹。

方式三:使用 –databases 参数

使用这种方式,用户既可以将所有要备份的数据库名和完整表名都写在一起,以空格分隔,也可以将数据库名、完整表名写在一个文件中,每行一个,需要注意的是如果需要备份整个 mysql 库,那么区别于 –tables-file 参数,直接写上库名字就可以了,. 下面是一个例子:

[root@tool202 liuwenhe]#  innobackupex  –user=root –password= V56788@1qaz –port=3306 –databases= liuwenhe.liuwenhe  mysql /data

或者

[root@rongduan-renhang32 ~]# cat  name.txt

liuwenhe.liuwenhe

mysql 
  ### 不用写成 mysql.* 区别于 –tables-file 参数!

可以有需要的话使用下面命令去掉每行结尾的空格

[root@rongduan-renhang32 ~]#sed  -e s/[]*$//g   name.txt  name1.txt

2. 然后执行备份:

[root@rongduan-renhang32 ~]#  innobackupex  –user=root –password= V56788@1qaz –port=3306 –databases=/root/name.txt  /data/

上面的方式会和其他使用 innobackupex 命令的备份方式一样,创建一个时间戳命名的文件夹,最终结果将包括 liuwenhe 数据库中的 liuwenhe 表,以及整个完整的 mysql 数据库。

准备部分备份(Preparing Partial Backups)

执行 preparing partial backups,使用 –apply-log 和 –export 参数,并包含上一步生成的时间戳文件夹,如下:

[root@tool202 2018-12-01_21-10-20]# innobackupex  –port=3306 –apply-log  –export  /data/liuwenhe/2018-12-01_21-11-07/

执行命令的时候,对于那些不需要备份的表,会出现表不存在的提示。不用担心,这是正常现象。

最终,记得观察下面的输出,已确定准备备份工作结束。

181201 21:15:50 completed OK!

恢复的操作:

1. 先创建上需要恢复的表,注意表的存储行的格式要和源端一样,可以通过如下查看表的

root@localhost : liuwenhe 21:33:36 show  table  status like  liuwenhe

*************************** 1. row ***************************

  Name: liuwenhe

  Engine: InnoDB

  Version: 10

 
  Row_format: Compact

  Rows: 4

Avg_row_length: 4096

  Data_length: 16384

Max_data_length: 0

  Index_length: 0

  Data_free: 0

Auto_increment: NULL

  Create_time: 2018-12-01 19:43:48

  Update_time: NULL

  Check_time: NULL

  Collation: utf8_general_ci

  Checksum: NULL

Create_options: row_format=COMPACT

  Comment:

1 row in set (0.00 sec)

如果不一样可以通过如下方式修改:

root@localhost : liuwenhe 21:37:36 alter table  liuwenhe.liuwenhe Row_format=Compact;

Query OK, 0 rows affected (0.34 sec)

Records: 0  Duplicates: 0  Warnings: 0

注意:mysql5.6 创建的表默认为 Row_format=Compact,而 mysql5.7.18 中默认是 dynamic 格式

通过参数 innodb_default_row_format 控制!!!

3. 注意区别于 oracle 的 offline 表空间,mysql 中执行 discard 之后,对应的表的.ibd 文件就没有了

alter table liuwenhe.liuwenhe discard tablespace ;

4. 然后 copy 备份的目录中的该表的.ibd 文件到相应的目录下:

5. 然后加载到表空间:

alter table liuwenhe.liuwenhe import tablespace ;

至此恢复工作完成!!!

总结:我们可以通过 innobackupex 来实现部分表的备份和增量备份和恢复,innodb 的表是不可以直接 copy 表文件的方式来恢复的;也可以通过使用 mysqlfrm 工具来读取 innobackupex 备份中的某个表的表结构,用于先创建上表结构,然后再 discad tablespace,copy 表的.ibd 文件,最后 import 来实现从全实例备份中来恢复个别的表!注意恢复个别表的前提是:开启了参数 innodb_file_per_table,

mysqlfrm 工具可以读取表结构,可以使用 yum 安装:yum install mysql-utilities -y

到此,相信大家对“innobackupex 部分表备份和恢复方法是什么”有了更深的了解,不妨来实际操作一番吧!这里是丸趣 TV 网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-24发表,共计3712字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)