如何在 Percona Xtrabackup 2.4 中恢复指定表

分类:编程技术 时间:2024-02-20 16:02 浏览:0 评论:0
0
本期小编就来告诉大家如何在Percona Xtrabackup 2.4中恢复指定表。文章内容丰富,从专业角度进行了分析和描述。希望您能通过阅读本文有所收获。

在 5.6 之前的服务版本中,即使启用了 innodb_file_per_table,也无法通过在不同的 MySQL 服务中复制表的文件来复制表。但是,使用 Percona XtraBackup,您可以从任何 InnoDB 数据库导出指定的表,并使用 XtraDB 或 MySQL 5.6 将它们导入到 Percona 服务中。这仅适用于 .ibd 文件。

创建测试表
mysql> use test;
读取表信息以完成表名和列名
您可以使用 -A 关闭此功能以获得更快的启动
数据库已更改
mysql> show rows;
+----------------+
|测试中的表 |
+----------------+
|测试|
+----------------+
1行一组(0.00秒)
mysql> 创建表export_test (
-> a int(11) DEFAULT NULL
-> ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
查询正常,0行受影响(0.31秒)
mysql>插入export_test值(100),(200);
查询正常,2行受影响(0.09秒)
记录:2重复:0警告:0
mysql>提交;
查询正常,0行受影响(0.00秒)
mysql> select * from export_test;
+------+
|一个 |
+------+
| 100 | 100
| 200 | 200
+------+
集合中的2行(0.03秒)


导出表
mysql>显示“innodb_file_per_table”等变量;
+------------ -----------+--------+
|变量名 |价值|
+---------------- -------+--------+
| innodb_file_per_table | innodb_file_per_table |开 |
+-------------------- ---+--------+
1 行一组(0.00 秒)< br/>--执行备份
[root@localhost mysql]# /install/percona-xtrabackup- 2.4.4-Linux-x86_64/bin/xtrabackup --defaults-file=/etc/my.cnf --备份 --datadir=/var/lib/mysql/ --target-dir=/backup/20160810 --user root --password 'root'
导出的表必须以 innodb_file_per_table 格式创建,并以 .bd 文件格式存在于备份目录中。
[root@localhost /]# find /backup/20160810 -name export_test.*
/backup/20160810/test/export_test.frm
/backup/20160810/test/export_test.ibd < br/>

准备备份时,在命令中添加xtrabackup --export参数。
[root@localhost mysql]# /install/percona-xtrabackup-2.4.4-Linux-x86_64/bin/xtrabackup --prepare --export --target-dir=/backup/20160810/
/install/percona-xtrabackup-2.4.4-Linux-x86_64/bin/xtrabackup 版本 2.4.4 基于 MySQL 服务器 5.7.13 Linux (x86_64)(修订版 id:df58cf2)
xtrabackup:自动启用 -- innodb-file-per-table 由于 --export 选项
xtrabackup:cd到/backup/20160810
xtrabackup:该目标似乎尚未准备好。
InnoDB:池数:1
xtrabackup:检测到xtrabackup_logfile:size = 8388608,start_lsn =(1639441)
xtrabackup:使用以下 InnoDB 配置进行恢复:
xtrabackup:innodb_data_home_dir = .
xtrabackup:innodb_data_file_path = ibdata1:12M:autoextend
xtrabackup:innodb_log_group_home_dir = 。
xtrabackup:innodb_log_files_in_group = 1
xtrabackup:innodb_log_file_size = 8388608
xtrabackup:使用以下InnoDB配置进行恢复:
xtrabackup:innodb_data_home_dir = .
xtrabackup:innodb_data_file_path = ibdata1:1 2M:自动扩展
xtrabackup:innodb_log_group_home_dir = 。
xtrabackup:innodb_log_files_in_group = 1
xtrabackup:innodb_log_file_size = 8388608
xtrabackup:启动InnoDB实例进行恢复。
xtrabackup:tes 使用 104857600 作为缓冲池(由 --use-memory 参数设置)
InnoDB:PUNCH HOLE 支持不可用
InnoDB:互斥体和 rw_locks 使用 GCC 原子内置函数
InnoDB:使用事件互斥体
InnoDB:GCC 内置 __sync_synchronize() 用于内存屏障
InnoDB:压缩表使用 zlib 1.2.3
InnoDB:池数:1
InnoDB:使用 CPU crc32 指令
InnoDB:初始化缓冲池,总大小 = 100M,实例 = 1,块size = 100M
InnoDB:缓冲池初始化完成
InnoDB:page_cleaner协调器优先级:-20
InnoDB:支持的最高文件格式是Barracuda。 ​​
InnoDB:系统表空间中的日志序列号1633851与ib_logfiles中的日志序列号1639441不匹配!
InnoDB:数据库未正常关闭!
InnoDB:开始崩溃恢复。
/>InnoDB:进行恢复:扫描到日志序列号 1639441 (0%)
InnoDB:为临时表创建共享表空间
InnoDB:将文件“./ibtmp1”大小设置为 12 MB。将文件物理写满;请稍候...
InnoDB:文件“./ibtmp1”大小现在为 12 MB。
InnoDB:找到 96 个重做回滚段。 1 个重做回滚段处于活动状态。
InnoDB:32非重做回滚段处于活动状态。
InnoDB:等待清除开始
InnoDB:5.7.13 开始;日志序列号1639441 xtrabackup:指定导出选项。
xtrabackup:导出表'mysql/innodb_index_stats'的元数据到文件`./mysql/innodb_index_stats.exp`(1个索引)
,page=3
xtrabackup:导出表'mysql的元数据/innodb_table_stats' 到文件 `./mysql/innodb_table_stats.exp` (1 个索引)
xtrabackup: name=PRIMARY, id.low=17, page=3
xtrabackup: 导出表 'mysql/ 的元数据Slave_worker_info' 到文件 `./mysql/slave_worker_info.exp` (1 个索引)
xtrabackup: name=PRIMARY, id.low=21, page =3
xtrabackup: 导出表 'mysql/slave_relay_log_info 的元数据' 到文件 `./mysql/slave_relay_log_info.exp` (1 个索引)
xtrabackup: name=PRIMARY, id.low=19, page= 3
xtrabackup: 导出表 'mysql/slave_master_info' 的元数据文件 `./mysql/slave_master_info.exp`(1 个索引)
xtrabackup: name=PRIMARY,id.low=20,page=3
xtrabackup: 将表 'test/export_test' 的元数据导出到文件 `./test/export_test.exp` (1 个索引)
xtrabackup : name=GEN_CLUUST_INDEX, id.low=23, page=3
xtrabackup: 将表 'test/test' 的元数据导出到文件 `./test/test.exp` (1 个索引)
xtrabackup: name=GEN_CLUUST_INDEX, id.low=22, page=3


xtrabackup:以 innodb_fast_shutdown = 0 启动关闭
InnoDB:FTS 优化线程退出。
InnoDB:正在开始关闭...
InnoDB:关闭已完成;日志序列号 1639460
InnoDB:池数:1
xtrabackup:使用以下 InnoDB 配置进行恢复:
xtrabackup:innodb_data_home_dir = .
xtrabackup:innodb_data_file_path = ibdata1:12M:autoextend
xtrabackup:innodb_log_group_home_dir = 。
xtrabackup:innodb_log_files_in_group = 2
xtrabackup:innodb_log_file_size = 50331648
InnoDB:PUNCH HOLE支持不可用
InnoDB:互斥体和rw_locks使用GCC原子内置
InnoDB:使用event mutexes
InnoDB:GCC 内置 __sync_synchronize() 用于内存屏障
InnoDB:压缩表使用 zlib 1.2.3
InnoDB:池数:1
InnoDB:使用 CPU crc32指令
InnoDB:初始化缓冲池,总大小= 100M,实例= 1,块大小= 100M
InnoDB:完成缓冲池初始化
InnoDB:page_cleaner协调器优先级:-20
/>InnoDB:将日志文件 ./ib_logfile101 大小设置为 48 MB
/>InnoDB:将日志文件 ./ib_logfile1 大小设置为 48 MB
InnoDB:将日志文件 ./ib_logfile101 重命名为 ./ib_logfile0
/>InnoDB:创建新日志文件,LSN=1639460
InnoDB:支持的最高文件格式是Barracuda。 ​​
InnoDB:日志扫描已超过检查点 lsn 1639948
InnoDB:执行恢复:扫描至日志序列号 1639957 (0%)
InnoDB:执行恢复:扫描至日志序列number 1639957 (0%)
InnoDB: 数据库未正常关闭!
InnoDB:开始崩溃恢复。
InnoDB:删除了临时表空间数据文件:“ibtmp1”
InnoDB:为临时表创建共享表空间
InnoDB:将文件“./ibtmp1”大小设置为 12 MB。将文件物理写满;请稍等...
InnoDB:文件“./ibtmp1”大小现在为 12 MB。
InnoDB:找到 96 个重做回滚段。 1 个重做回滚段处于活动状态。
InnoDB:32 个非重做回滚段处于活动状态。
InnoDB:等待清除开始
InnoDB:5.7.13 开始;日志序列号 1639957
xtrabackup:以 innodb_fast_shutdown = 0 开始关闭
InnoDB:FTS 优化线程退出。
InnoDB:正在开始关闭...
InnoDB:关闭已完成;日志序列号 1639976
160810 15:14:42 完成 OK!
在目标目录下可以看到.exp文件
[root@localhost ~]# cd /backup/20160810/test/
[root@localhost test]# ls -trl
总计 256
-rw-r-----。 1 root root 98304 Aug 10 15:06 export_test.ibd
-rw-r-----。 1根98根304 八月 10 日 15:06 test.ibd
-rw-r-----。 1 root root 8554 Aug 10 15:06 export_test .frm
-rw-r-----。 1 root root 8556 八月 10 日 15:06 test.frm
-rw-r-----。 1 root root 16384 Aug 10 15: 14 export_test.exp
-rw-r--r--。 1 root root 374 Aug 10 15:14 export_test.cfg
-rw-r-----。 1 root root 16384 Aug 10 15:14 test.exp
-rw-r--r--。 1 root root 369 Aug 10 15:14 test.cfg
使用.exp、.ibd、.cfg这三个文件导入数据库


导入表
删除表
mysql> drop table export_test;
查询正常,0行受影响(1.45秒)
在目标MySQL服务器上,创建一个具有相同结构的空表。
mysql> 创建表export_test (
-> a int(11) DEFAULT NULL
-> ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
查询正常,0行受影响(0.06秒)
mysql> ALTER TABLE test.export_test DISCARD TABLESPACE;
查询正常,0行受影响(0.10秒)
将导出文件复制到数据目录
[root@localhost test]# cpexport_test.ibdexport_test.expexport_test.cfg /var/lib/mysql/test
mysql> 更改表 test.export_test 导入表空间;
错误1815 (HY000):内部错误:无法重置表“test”中的LSN。 "export_test"' : 找不到表空间
将文件权限更改为 mysql
[root@localhost ~]# cd /var/lib/mysql/test/
[root@localhost test]# ls
export_test.frm test.frm test.ibd
[root@localhost test]# ls
export_test.cfg export_test.exp export_test.frm export_test.ibd test.frm test.ibd
[root@localhost test]# ls -trl
总计 236
-rw-r-----。 1 mysql mysql 8556 8 月 8 日 17:17 test.frm
-rw- r-----。 1 mysql mysql 98304 8 月 8 日 17:17 test.ibd
-rw-rw----。 1 mysql mysql 8554 8 月 10 日 15:30 export_test.frm
-rw -r-----。 1 root root 98304 Aug 10 15:34 export_test.ibd
-rw-r-----。 1 root root 16384 Aug 10 15:34 export_test.exp
-rw-r--r--。 1 root root 374 Aug 10 15:34 export_test.cfg
[root@localhost test]# chown -R mysql:mysql 。
[root@localhost test]# ls -trl
总计 236
-rw-r-----。 1 mysql mysql 8556 8 月 8 日 17:17 test.frm
-rw-r-----。 1 mysql mysql 98304 Aug 8 17:17 测试.ibd
-rw-rw----。 1 mysql mysql 8554 八月 10 日 15:30 export_test.frm
-rw-r-----。 1 mysql mysql 98304 八月 10 日 15:34 export_test.ibd
-rw-r-----。 1 mysql mysql 16384 八月 10 日 15:34 export_test.exp
-rw-r--r--。 1 mysql mysql 374 八月 10 日 15:34 export_test.cfg
mysql> 更改表 test.export_test 导入表空间;
查询正常,0行受影响(0.11秒)
验证表中的数据
mysql> select * from export_test;
+------+
|一个 |
+------+
| 100 | 100
| 200 | 200
+------+
2 rowsin set (0.00 sec)
需要注意的是,导入表后,表的永久统计信息为空,需要将再次收集
mysql> select * from innodb_index_stats where table_name='export_test';
+----------------+------------+---------------- - -+---------------------+--------------+---------- -+----------------+-------- --------------------------- -+
|数据库名称 |表名 |索引名称 |最后更新 |统计名称 |统计值 |样本大小 |统计描述 |
+---------------+------ -------+---------------- ---+--------------------+-- ------------+--------- -------+-------------+---------- ------------------ ---+
|测试|导出测试 | GEN_CLUUST_INDEX | 2016-08-10 15:36:50 | n_diff_pfx01 | n_diff_pfx01 | 2 |sp; 1 |数据库_行_ID | 1 |测试索引中的叶页数|
|测试|导出测试 | GEN_CLUUST_INDEX | 2016-08-10 15:36:50 |尺寸| 1 |空|索引中的页数 |
+---------------+-- ----------+---------------- --+------------------------ -+-------------+-------- ---+-------------+------ ------------------------ --------+
集合中有 3 行(0.00 秒)
mysql> select * from innodb_table_stats where table_name='export_test';
+---------------+---------- ---+---------------- ------+--------+---------------- -------+--------------------------+
|数据库名称 |表名 |最后更新 | n_行 |聚簇索引大小 |其他索引大小总和 |
+----------------+------------+---------------- -- ------+--------+--------------------+--------- -- ----------------+
|测试|导出测试 | 2016-08-10 15:36:50 | 2 | 1 1 | 1
+- -------------+------------------------+---------------- ----- +--------+------------------------+------------ ----- ---------+
集合中的 1 行(0.00 秒)
mysql> 分析表 test.export_test;
+---------------- ---+---------+------------+----- ---+
|表|欧普|消息类型 |消息文本 |
+------------------+---------+----------+----- - ----+
|测试.export_test |分析|状态 |好的 |
+------------------+------ ---+----------+----- ---+
集合中的1行(0.01秒)
mysql> select * from innodb_index_stats where table_name ='export_test';
+----------------+------------+------------ ----- --+--------------------+--------------+----- ----- --+------------+-------------------------- -------+
|数据库名称 |表名 |索引名称 |最后更新 |统计名称 |统计值 |样本大小 |统计描述                                                        -----+------------------------+----------------+--------- - -----+-------------+----------------------------- ---- -----+
|测试|导出测试 | GEN_CLUST_INDEX | 2016-08-10 15:48:32 | n_diff_pfx01 | n_diff_pfx01 | 2 | 1 DB_ROW_ID | 1 DB_ROW_ID br/>|测试|导出测试 | GEN_CLUUST_INDEX | 2016-08-10 15:48:32 | n_leaf_pages | 1 |空|索引中的叶页数 |
|测试 |导出测试 | GEN_CLUUST_INDEX | 2016-08-10 15:48:32 |尺寸| -+-------------+----------------+---------------- ------+--------------+------------+----------------+-- ----------------------------------+
3行一组(0.00秒)
mysql> select * from innodb_table_stats where table_name='export_test';
+---------------+------------+-- ------------- -----+--------+--------------------- -+----------------------------+
|数据库名称 |表名 |最后更新 | n_行 |聚簇索引大小 |其他索引大小总和 |
+----------------+------------+---------------- ---- --+--------+----------------------+------------ ---- -----------+
|测试 |导出测试 | 2016-08-10 15:48:32 | 2 | 1 |导出测试 0 |
+---------------+-------- ------+---------------- ------+--------+---------------- ----------+-------- -------------------+
1 行一组(0.00 秒)

以上下面小编就跟大家分享一下如何在Percona Xtrabackup 2.4中恢复指定表。如果你正好有类似的疑惑,不妨参考上面的分析来了解一下。如果您想了解更多相关知识,请关注行业资讯频道。

1. 本站所有资源来源于用户上传或网络,仅作为参考研究使用,如有侵权请邮件联系站长!
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > 如何在 Percona Xtrabackup 2.4 中恢复指定表

用户评论