文章详情

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

请输入下面的图形验证码

提交验证

短信预约提醒成功

MySQL使用物理方式快速恢复单表

2022-12-14 10:30

关注

使用方法

1、首先创建一个测试表test1,并插入几条数据:

mysql> create table test1 (id int auto_increment primary key,name varchar(20));
Query OK, 0 rows affected (0.05 sec)

mysql> insert into test1 (name) values ('张三'),('李四'),('王二');
Query OK, 3 rows affected (0.01 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> select * from test1;
+----+--------+
| id | name   |
+----+--------+
|  1 | 张三   |
|  2 | 李四   |
|  3 | 王二   |
+----+--------+
3 rows in set (0.00 sec)

2、创建目标表test2:

mysql> create table test2 like test1;
Query OK, 0 rows affected (0.10 sec)
查看数据目录里面的ibd文件(test2.ibd、test1.ibd):
-rw-r-----. 1 * * 114688 Nov  2 16:20 test1.ibd
-rw-r-----. 1 * * 114688 Nov  2 16:23 test2.ibd

3、通过alter table discard的方法丢弃表test2的idb文件(为下一步复制test1的数据过来做准备):

mysql> alter table test2 discard tablespace;   
Query OK, 0 rows affected (0.02 sec)

查看ibd文件情况,发现test2的ibd文件已经被删除

-rw-r----- 1 * * 114688 Nov  2 16:20 test1.ibd

4、执行下面的命令,生成一个test1的cfg文件,如下:

mysql> flush table test1 for export; 
Query OK, 0 rows affected (0.00 sec)

生成了一个test1.cfg的cfg文件

-rw-r----- 1 * *    655 Nov  2 16:25 test1.cfg
-rw-r----- 1 * * 114688 Nov  2 16:20 test1.ibd

5、拷贝源表test1的cfg文件和ibd文件到目标表test2,并修改文件权限:

cp test1.cfg test2.cfg
cp test1.ibd test2.ibd
chown -R mysql.mysql test2.*

6、复制完成之后,执行select命令发现出现以下报错:

mysql> select * from test2;
ERROR 1100 (HY000): Table 'test2' was not locked with LOCK TABLES

7、执行unlock tables,释放源表的test1.cfg文件,然后导入ibd文件:

mysql> unlock tables;
Query OK, 0 rows affected (0.00 sec)

并用alter table的方法为目标表test2导入这个ibd文件:

mysql> alter table test2 import tablespace; 
Query OK, 0 rows affected (0.03 sec)
1 row in set (0.00 sec)

8、再次执行select,发现数据已经导入:

mysql> select * from test2;
+----+--------+
| id | name   |
+----+--------+
|  1 | 张三   |
|  2 | 李四   |
|  3 | 王二   |
+----+--------+
3 rows in set (0.00 sec)

物理复制方法介绍

上述单表物理复制的方法,核心在于cp命令,因为是通过物理拷贝,所以如果复制的表非常大,那么通过物理拷贝,就会比逻辑上的SQL写入快很多,比如insert into select语句。

简单总结一下上述物理复制过程:

alter table for export语法介绍:

注意:

因为alter table for export锁表,所以这种方法更适合在从库上停掉复制关系,然后执行这个表复制的操作。如果有业务操作当前的源表,需要谨慎考虑。

Enjoy GreatSQL

关于 GreatSQL

GreatSQL是由万里数据库维护的MySQL分支,专注于提升MGR可靠性及性能,支持InnoDB并行查询特性,是适用于金融级应用的MySQL分支版本。

相关链接: GreatSQL社区GiteegithubBilibili

GreatSQL社区:

捉虫活动详情:https://greatsql.cn/thread-97-1-1.html

社区博客有奖征稿详情:https://greatsql.cn/thread-100-1-1.html

到此这篇关于MySQL使用物理方式快速恢复单表的文章就介绍到这了,更多相关mysql恢复单表内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

阅读原文内容投诉

免责声明:

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

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

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯