mysql新建表96k_innodb表 手工导入导出

上一篇文章介绍了“innobackupex 热备指定库表操作”,分析其整个过程,就是将表的字典和数据文件导出在导入的原理,那么针对单表的备份与恢复(新实例或者新库中恢复),我们可以直接采用物理导出innodb表的办法。

具体操作如下:

1.将备份表加锁,导出cfg。

mysql> select * from t1;

+------+

| id |

+------+

| 1 |

| 2 |

| 3 |

| 4 |

| 2 |

| 3 |

| 4 |

+------+

7 rows in set (0.00 sec)

mysql> flush table t1 with read lock;

Query OK, 0 rows affected (0.01 sec)

发现t1生成了cfg文件。

[root@222 test]# ls

db.opt t1.cfg t1.frm t1.ibd t2.frm t2.ibd

执行unlock tables ,cfg文件回收。

mysql> unlock tables;

Query OK, 0 rows affected (0.00 sec)

[root@222 test]# ls ../test/

db.opt t1.frm t1.ibd t2.frm t2.ibd

2.在unlock tables前,将t1的cfg和ibd文件备份。

[root@222 test]# cp t1.ibd t1.cfg /home/backup/

3.创建一个新库,并创建相同结构的t1表。

mysql> create database test1;

Query OK, 1 row affected (0.00 sec)

mysql>

mysql> use test1;

Database changed

mysql>

mysql> create table t1 like test.t1;

Query OK, 0 rows affected (0.03 sec)

4.删除新建的t1表空间。

mysql> alter table t1 discard tablespace;

Query OK, 0 rows affected (0.02 sec)

发现新建的t1表空间的ibd文件被清除。

[root@222 test]# ls ../test1/

db.opt t1.frm

5.将备份的t1表的cfg和ibd文件拷贝到新建的库下。

[root@222 test]# cd /home/backup/

[root@222 test1]# ll -trh

总用量 116K

-rw-rw----. 1 mysql mysql 61 12月 16 09:49 db.opt

-rw-rw----. 1 mysql mysql 8.4K 12月 16 09:49 t1.frm

-rw-r-----. 1 root root 96K 12月 16 09:51 t1.ibd

-rw-r-----. 1 root root 354 12月 16 09:51 t1.cfg

[root@222 test1]# chown -R mysql.mysql *

[root@222 test1]#

[root@222 test1]#

[root@222 test1]# ll -trh

总用量 116K

-rw-rw----. 1 mysql mysql 61 12月 16 09:49 db.opt

-rw-rw----. 1 mysql mysql 8.4K 12月 16 09:49 t1.frm

-rw-r-----. 1 mysql mysql 96K 12月 16 09:51 t1.ibd

-rw-r-----. 1 mysql mysql 354 12月 16 09:51 t1.cfg

6.执行新建t1表导入表空间操作。

mysql> alter table t1 import tablespace;

Query OK, 0 rows affected (0.08 sec)

7.查询结果和第1步备份的表一致,操作完成

mysql> select * from test1.t1;

+------+

| id |

+------+

| 1 |

| 2 |

| 3 |

| 4 |

| 2 |

| 3 |

| 4 |

+------+

7 rows in set (0.00 sec)

btw.

a.由于新表存在cfg文件,在删除库操作的时候会报错,

ERROR 1010 (HY000): Error dropping database (can't rmdir './test1/', errno: 17)

如果使用innobackupex备份,并导入的exp文件,则会发现删除库后,exp文件无法删除,那么手工将exp文件删除,在删除库即可。

如果使用如上方法手工命令方式导入cfg文件,在删除库时报错,但是查看库文件时发现无文件,则在执行一遍即可;对于新导入的cfg文件,可以在次执行如下命令,则cfg文件消失。

mysql> flush table t1 for export;

Query OK, 0 rows affected (0.00 sec)

[root@222 test1]# ll -trh

总用量 116K

-rw-rw----. 1 mysql mysql 61 12月 16 09:49 db.opt

-rw-rw----. 1 mysql mysql 8.4K 12月 16 09:56 t1.frm

-rw-r-----. 1 mysql mysql 96K 12月 16 09:56 t1.ibd

-rw-r-----. 1 mysql mysql 355 12月 16 09:57 t1.cfg

mysql>

mysql>

mysql> unlock tables;

Query OK, 0 rows affected (0.00 sec)

[root@222 test1]# ll -trh

总用量 112K

-rw-rw----. 1 mysql mysql 61 12月 16 09:49 db.opt

-rw-rw----. 1 mysql mysql 8.4K 12月 16 09:56 t1.frm

-rw-r-----. 1 mysql mysql 96K 12月 16 09:56 t1.ibd

b.发现手工命令行方式备份恢复更加便捷,但是会有一个锁表的过程,那么则根据不同情况选择不同方式进行备份,对于线上有写入的表采用innobackupex方式,不会导致复制延迟;对于无写入的表,直接采用加锁导入cfg文件方式,操作更加便捷。

OK,done。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值