看腻了就来听听视频演示吧:https://www.bilibili.com/video/BV1Bp4y1F7kd/
- MyISAM引擎可单独将 *.MYD和 *.MYI 拷贝到远程服务器上
- InnoDB引擎受限于版本(MySQL5.5)无法直接拷贝.ibd文件,因为在ibdata1文件保存有表的字典信息,在ibd文件保存有事务ID和日志序列号,只能用dump方式。
操作步骤:
- 获取备份表DDL,统计数据集(用于恢复后校样)
- 锁表,导出表对应的数据字典文件
- 备份表对应的数据文件和数据字典文件
- 解锁,恢复表的相关业务操作
- 在恢复环境上创建该表DDL(测试演练在同一环境故先删表再重建该表)
- 关闭该表的数据空间,即会删除该表的ibd数据文件
- 将备份数据文件和数据字典文件copy到对应数据目录下
- 应用表空间恢复数据并进行恢复后检查
- 验证恢复的数据集
直接上案例模拟演示:
# MySQL 6+ 可以直接拷贝的前提条件是独立表空间,即innodb_file_per_table=1 mysql> show variables like 'innodb_file_per_table'; +-----------------------+-------+ | Variable_name | Value | +-----------------------+-------+ | innodb_file_per_table | ON | +-----------------------+-------+ # 查看测试表DDL mysql> show create table t12\G *************************** 1. row *************************** Table: t12 Create Table: CREATE TABLE `t12` ( `pid` bigint(20) unsigned NOT NULL DEFAULT '0', `pname` varchar(20) DEFAULT NULL, `project` varchar(20) DEFAULT NULL, `tvalue` decimal(5,2) DEFAULT NULL, `unit` varchar(8) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 1 row in set (0.00 sec) # 查看测试表数据 mysql> select * from t12; +-----+--------+---------+--------+------+ | pid | pname | project | tvalue | unit | +-----+--------+---------+--------+------+ | 1 | 王五 | 身高 | 172.34 | cm | | 2 | 王五 | 体重 | 69.52 | kg | | 3 | 王五 | 年龄 | 22.00 | 岁 | | 4 | 赵六 | 身高 | 170.52 | cm | | 5 | 赵六 | 体重 | 80.52 | kg | | 6 | 赵六 | 年龄 | 26.00 | 岁 | +-----+--------+---------+--------+------+ 6 rows in set (0.00 sec) # 表加全局读锁,即把.cfg数据字典文件导出到磁盘上 mysql> flush tables t12 for export; Query OK, 0 rows affected (0.00 sec) # 拷贝数据目录对应库名下的 t12.ibd 和 t12.cfg文件,然后修改属性 [root@db01 mdb]# mkdir /tmp/mysql_back [root@db01 mdb]# ll t12.* -rw-r----- 1 mysql mysql 585 Sep 2 16:16 t12.cfg -rw-r----- 1 mysql mysql 8690 Sep 2 16:11 t12.frm -rw-r----- 1 mysql mysql 98304 Sep 2 16:11 t12.ibd [root@db01 mdb]# cp t12.ibd /tmp/mysql_back [root@db01 mdb]# cp t12.cfg /tmp/mysql_back [root@db01 mdb]# chown -R mysql.mysql /tmp/mysql_back/t12.* [root@db01 mdb]# ll /tmp/mysql_back/t12.* -rw-r----- 1 mysql mysql 585 Sep 2 16:18 /tmp/mysql_back/t12.cfg -rw-r----- 1 mysql mysql 98304 Sep 2 16:18 /tmp/mysql_back/t12.ibd # 解锁,模拟删表 mysql> unlock tables; Query OK, 0 rows affected (0.00 sec) mysql> drop table t12; Query OK, 0 rows affected (0.00 sec) # 创建原表结构 mysql> CREATE TABLE `t12` ( -> `pid` bigint(20) unsigned NOT NULL DEFAULT '0', -> `pname` varchar(20) DEFAULT NULL, -> `project` varchar(20) DEFAULT NULL, -> `tvalue` decimal(5,2) DEFAULT NULL, -> `unit` varchar(8) DEFAULT NULL -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8; Query OK, 0 rows affected (0.01 sec) # 关闭表的数据空间并会删除其数据文件t12.ibd mysql> alter table t12 discard tablespace; Query OK, 0 rows affected (0.01 sec) # 再把备份的t12.ibd 和 t12.cfg文件拷贝过来 [root@db01 mdb]# mv /tmp/mysql_back/t12.cfg . [root@db01 mdb]# mv /tmp/mysql_back/t12.ibd . [root@db01 mdb]# ll t12.* -rw-r----- 1 mysql mysql 585 Sep 2 16:18 t12.cfg -rw-r----- 1 mysql mysql 8690 Sep 2 16:26 t12.frm -rw-r----- 1 mysql mysql 98304 Sep 2 16:18 t12.ibd # 应用表空间恢复数据并进行恢复后检查 mysql> alter table t12 import tablespace; Query OK, 0 rows affected (0.01 sec) mysql> check table t12; +---------+-------+----------+----------+ | Table | Op | Msg_type | Msg_text | +---------+-------+----------+----------+ | mdb.t12 | check | status | OK | +---------+-------+----------+----------+ 1 row in set (0.00 sec) # 验证数据是否恢复回来 mysql> select * from t12; +-----+--------+---------+--------+------+ | pid | pname | project | tvalue | unit | +-----+--------+---------+--------+------+ | 1 | 王五 | 身高 | 172.34 | cm | | 2 | 王五 | 体重 | 69.52 | kg | | 3 | 王五 | 年龄 | 22.00 | 岁 | | 4 | 赵六 | 身高 | 170.52 | cm | | 5 | 赵六 | 体重 | 80.52 | kg | | 6 | 赵六 | 年龄 | 26.00 | 岁 | +-----+--------+---------+--------+------+ 6 rows in set (0.00 sec)
复制
MySQL的binlog系列和奇技操作:
1) 先来聊聊MySQL的binlog文件解析
2) 接着说说mysqlbinlog解析工具如何做数据恢复
3) 再来谈谈如何从binlog文件恢复误update的数据,模拟Oracle的闪回功能
4) 接着聊聊如何从binlog文件恢复误delete的数据,模拟Oracle的闪回功能
5) 借用binlog2sql工具轻松解析MySQL的binlog文件,再现Oracle的闪回功能
6) 再来介绍另一个binlog文件解析的第三方工具my2sql
7) 顺带来聊聊MySQL误删ibdata数据文件的恢复
8) MySQL大表直接复制文件的copy方式
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
文章被以下合辑收录
评论
很少有事是做不成的,与其说是条件不够,不如说是由于决心不够。
9月前

评论
TA的专栏