我的编程空间,编程开发者的网络收藏夹
学习永远不晚

XtraBackup部分备份

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

XtraBackup部分备份

可以使用Xtrabackup工具仅仅对某几张表进行数据恢复。

实验场景:

    端口3306的实例上有一张表t3,而端口3308的实例上没有。实验目的将端口3306的t3表恢复到端口3308的实例上。

步骤:

1、确保端口3306的实例的配置文件my.cnf中有设置如下参数:

     InnoDB_FAST_SHUTDOWN = 0     --此参数MySQL在关闭的时候,需要完成所有的full purge和merge insert buffer操作.
     InnoDB_File_Per_Table = ON   --此参数修改InnoDB为独立表空间模式,每个数据库的每个表都会生成一个数据空间.


2、备份

a)  innobackupex --defaults-file=/usr/local/mysql/my.cnf --user=root --password=root --socket=/usr/local/mysql/mysql.sock --include='lxm.t3'  --export /tmp/backup/

命令执行结束后,查看备份文件

[root@single1 lxm]# pwd
/tmp/backup/2016-08-30_16-34-50/lxm
[root@single1 lxm]# ls -l
total 108
-rw-r-----. 1 root root 10684 Aug 30 16:34 t3.frm
-rw-r-----. 1 root root 98304 Aug 30 16:34 t3.ibd

b) 备份完成之后应用日志使备份保持一致性

innobackupex --defaults-file=/usr/local/mysql/my.cnf --user=root --password=root --socket=/usr/local/mysql/mysql.sock --apply-log --export /tmp/backup/2016-08-30_16-34-50/

命令执行结束后,查看备份文件

[root@single1 lxm]# pwd
/tmp/backup/2016-08-30_16-34-50/lxm
[root@single1 lxm]# ls -l
total 128
-rw-r--r--. 1 root root  3378 Aug 30 16:36 t3.cfg
-rw-r-----. 1 root root 16384 Aug 30 16:36 t3.exp
-rw-r-----. 1 root root 10684 Aug 30 16:34 t3.frm
-rw-r-----. 1 root root 98304 Aug 30 16:34 t3.ibd

可以看出多了两个文件:t3.cfg和t3.exp。exp文件适用于percona server,cfg适用于mariadb和mysql。mariadb 10.0可以直接通过ibd和frm文件import。mysql 5.6之后可以不使用cfg来进行import,cfg如果存在会被用来做表结构的验证。


3、在目标实例上创建一个和源实例中的t3表一模一样的表

源实例查看t3表的表结构创建语句:
mysql -S /usr/local/mysql/mysql.sock -P 3306 -uroot -p
mysql> show create table t3\G;        
*************************** 1. row ***************************
       Table: t3
Create Table: CREATE TABLE `t3` (
  `Host` char(60) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
  `User` char(16) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
  `Password` char(41) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
  。。。。。。。。。省略。。。。。。。。。。。。。
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.14 sec)

目标实例创建表t3:
mysql -S /usr/local/mysql3308/mysql.sock -P 3308 -uroot -p
mysql> use lxm;
Database changed
mysql> show tables;
Empty set (0.00 sec)

mysql> CREATE TABLE `t3` (
    ->   `Host` char(60) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
    ->   `User` char(16) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
    ->   `Password` char(41) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
    ->   。。。。。。。。。。省略。。。。。。。。。。。。。
    -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.05 sec)


4、目标实例 discard 表空间

在 discard 表空间之前,mysql3308的 t3 表数据文件如下:

[root@single1 lxm]# ls -l
total 112
-rw-rw----. 1 mysql mysql    61 Aug 30 17:09 db.opt
-rw-rw----. 1 mysql mysql 10684 Aug 30 17:09 t3.frm
-rw-rw----. 1 mysql mysql 98304 Aug 30 17:09 t3.ibd


discard表空间:

mysql -S /usr/local/mysql3308/mysql.sock -P 3308 -uroot -p

mysql> ALTER TABLE t3 DISCARD TABLESPACE;
Query OK, 0 rows affected (0.01 sec)
mysql> show tables;
+---------------+
| Tables_in_lxm |
+---------------+
| t3            |
+---------------+
1 row in set (0.00 sec)


在 discard 表空间之后,mysql3308的 t3 表数据文件如下:
[root@single1 lxm]# ls -l
total 16
-rw-rw----. 1 mysql mysql    61 Aug 30 17:09 db.opt
-rw-rw----. 1 mysql mysql 10684 Aug 30 17:09 t3.frm


5、将备份文件中的 t3.idb 和 t3.cfg 文件拷贝到目标实例的数据文件路径中:

        cp -r /tmp/backup/2016-08-30_16-34-50/lxm/t3.cfg  /usr/local/mysql3308/data/lxm/
        cp -r /tmp/backup/2016-08-30_16-34-50/lxm/t3.ibd  /usr/local/mysql3308/data/lxm/

    修改 t3.idb 和 t3.cfg 文件的属组为mysql:

        chown mysql:mysql t3.cfg 

        chown mysql:mysql t3.ibd 


6、import表

mysql -S /usr/local/mysql3308/mysql.sock -P 3308 -uroot -p

mysql> ALTER TABLE t3 IMPORT TABLESPACE;
Query OK, 0 rows affected (0.01 sec)

mysql> show tables;
+---------------+
| Tables_in_lxm |
+---------------+
| t3            |
+---------------+
1 row in set (0.00 sec)

mysql> select count(1) from t3;
+----------+
| count(1) |
+----------+
|       14 |
+----------+
1 row in set (0.00 sec)


备注:有三种方式可以指定要备份的表。

1、--include:设置正则表达式的格式,匹配的就备份。该选项传递给xtrabackup --tables,对每个库中的每个表逐一匹配。

2、--table-file:在文件中指定要备份的表,然后通过这个选项传入文件。该选项传递给xtrabackup --tables-file,与--table选项不同,只有要备份的表的库才会被创建。

3、--database:指定数据库列表。:--databasees选项只会对非innodb引擎表和frm文件产生影响,对于innodb数据文件总是备份的。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

XtraBackup部分备份

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL如何使用Xtrabackup备份

这篇文章给大家分享的是有关MySQL如何使用Xtrabackup备份的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。01 背景 Xtrabackup是Percona公司开发的一款开源的MySQL热备份工具,之
2023-06-14

编程热搜

目录