在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

如何通过物理方式使MySQL恢复单表

216次阅读
没有评论

共计 2482 个字符,预计需要花费 7 分钟才能阅读完成。

本篇内容主要讲解“如何通过物理方式使 MySQL 恢复单表”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让丸趣 TV 小编来带大家学习“如何通过物理方式使 MySQL 恢复单表”吧!

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 语句。

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

1、create table like 语法创建一个相同表结构的空的目标表

2、目标表执行 alter table discard,丢弃 ibd 文件

3、源表执行 alter table for export 语法,生成.cfg 文件,并锁表

4、使用 cp 命令复制源表 cfg 文件和 ibd 文件为目标表

5、unlock tables 释放源表的 cfg 文件和锁

6、alter table import 命令导入目标表的 ibd 数据文件。

alter table for export 语法介绍:

1、这个命令是为了将内存中关于这个表的数据刷新到磁盘上,确保数据都能被 binlog 所记录;

2、这个操作需要 flush table 或者 reload 权限;

3、这个操作会持有当前表的共享 MDL 锁,阻止其他会话修改表结构,在 FOR EXPORT 操作完成时不会释放先前获取的 MDL 锁,需要手工释放

4、InnoDB 会在与该表相同的数据库目录中生成一个名为 table_name.cfg 的文件

5、处理完表复制后,需要使用 UNLOCK tables 释放源表的 MDL 锁或者断开连接。

注意:

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

到此,相信大家对“如何通过物理方式使 MySQL 恢复单表”有了更深的了解,不妨来实际操作一番吧!这里是丸趣 TV 网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-13发表,共计2482字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 少妇被粗大的猛烈进出69影院一 | 看国产一级毛片 | 国产精品国产三级国产av主播 | 99精品国产高清自在线看超 | 亚洲欧美日本a∨在线观看 亚洲欧美日本国产 | 国产区一二三四区2021 | 无码中文字幕日韩专区视频 | 熟女视频一区二区在线观看 | 色综合色综合色综合色综合 | 九九精品99 | 久久亚洲av午夜福利精品一区 | 免费观看一区二区 | 中文字幕在线视频一区 | 日韩成人无码影院 | 日韩精品无码区免费专区 | 破了亲妺妺的处免费视频国产 | 五月狠狠亚洲小说专区 | 制服丝袜自拍偷拍 | 免费一本色道久久一区 | 国产精品va在线观看无码不卡 | 成人亚洲 | 色综合久久久久综合99 | 精品无人区乱码麻豆1区2区 | 久久久久国产精品美女毛片 | 国产小受呻吟gv视频在线观看 | 日日夜夜影院 | 国产成人久久精品麻豆二区 | 国产私拍福利精品视频推出 | 久久精品国产精品亚洲毛片 | 日韩精品无码一区二区三区久久久 | 欧美精品久久久久久久小说 | 国产成人精品电影在线观看18 | 亚洲免费视频一区二区三区 | 中文字幕视频在线免费观看 | 午夜激爽毛片在线看 | 日本a级毛片免费观看 | 亚洲第一免费视频 | 国产一级强片在线观看 | 国产成人精品午夜2022 | 国产精品天天狠天天看 | a级国产乱理论片在线观看 a级国产片 |