MySQL运维实战之备份和恢复(8.8)恢复单表

云的事随心讲 2024-03-15 23:57:02
作者:俊达xtrabackup支持单表恢复。如果一个表使用了独立表空间(innodb_file_per_table=1),就可以单独恢复这个表。 1、Prepareprepare时带上参数--export,xtrabackup会生成import tablespace需要的文件。 # xtrabackup --prepare --export --target-dir=. > export.log 2>&1查看日志,确认prepare成功。 查看目标数据库下的文件,这里我们希望恢复demo.last_gtid表 # ls -l demo/last_gtid.*-rw-r--r-- 1 root root 715 6月 27 11:03 demo/last_gtid.cfg-rw-r----- 1 root root 9437184 6月 26 16:08 demo/last_gtid.ibd2、目标数据库上创建希望恢复的表表结构要和备份时的表结构一致。 mysql> show create table last_gtid\G*************************** 1. row *************************** Table: last_gtidCreate Table: CREATE TABLE `last_gtid` ( `id` int NOT NULL AUTO_INCREMENT, `gtid` varchar(1000) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=26733 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci1 row in set (0.00 sec)我们先将表drop掉,模拟数据丢失的场景。 mysql> drop table last_gtid;Query OK, 0 rows affected (0.03 sec)创建结构,并执行discard tablespace命令。 mysql> CREATE TABLE `last_gtid` ( -> `id` int NOT NULL AUTO_INCREMENT, -> `gtid` varchar(1000) DEFAULT NULL, -> PRIMARY KEY (`id`) -> ) ENGINE=InnoDB;Query OK, 0 rows affected (0.06 sec)mysql> alter table last_gtid discard tablespace;Query OK, 0 rows affected (0.01 sec)3、将备份的文件copy到目标实例数据库目录下将表对应的文件copy到目标实例数据库对应目录下,并修改文件owner。如果文件owner没有正确设置,下一步import表空间时可能会出错。 # cp last_gtid.* /data/full_restore/data/demo/# ls -l /data/full_restore/data/demo/-rw-r--r-- 1 root root 715 6月 27 11:06 last_gtid.cfg-rw-r----- 1 root root 9437184 6月 27 11:06 last_gtid.ibd# chown -R mysql:mysql /data/full_restore/data/demo/4、import表空间执行import tablespace命令,确认数据恢复。 mysql> alter table demo.last_gtid import tablespace;Query OK, 0 rows affected (0.29 sec)mysql> select count(*) from demo.last_gtid;+----------+| count(*) |+----------+| 10813 |+----------+1 row in set (0.00 sec)如果不知道表的表结构,可以使用ibd2sdi工具,从ibd文件中提取表结构信息: # ibd2sdi last_gtid.ibd | more["ibd2sdi",{ "type": 1, "id": 371, "object": { "mysqld_version_id": 80032, "dd_version": 80023, "sdi_version": 80019, "dd_object_type": "Table", "dd_object": { "name": "last_gtid", "mysql_version_id": 80032, "created": 20230621022444, "last_altered": 20230621022444, "hidden": 1, "options": "avg_row_length=0;encrypt_type=N;key_block_size=0;keys_disabled=0;pack_record=1;stats_auto_recalc=0;stats_sample_pages=0;", "columns": [ { "name": "id", "type": 4, "is_nullable": false, "is_zerofill": false, "is_unsigned": false, "is_auto_increment": true, "is_virtual": false, ...... "column_key": 2, "column_type_utf8": "int", "elements": [], "collation_id": 255, "is_explicit_collation": false }, { "name": "gtid", "type": 16, "is_nullable": true, "is_zerofill": false, "is_unsigned": false, "is_auto_increment": false, "is_virtual": false, "hidden": 1, "ordinal_position": 2, "char_length": 4000, ..... "column_key": 1, "column_type_utf8": "varchar(1000)", "elements": [], "collation_id": 255, "is_explicit_collation": false },更多技术信息请查看云掣官网云掣YunChe - 可观测运维专家 | 大数据运维托管 | 云MSP服务
0 阅读:0

云的事随心讲

简介:感谢大家的关注