码迷,mamicode.com
首页 > 数据库 > 详细

使用mysql恢复数据时视图变成表

时间:2018-01-10 14:49:52      阅读:794      评论:0      收藏:0      [点我收藏+]

标签:log   数据   cto   ges   ima   出错   通过   分享   成功   

问题是这样的,使用mysqldump备份线上数据库之后,然后通过mysql 命令行恢复到线下数据库,发现视图都成了表。
为什么会这样呢?这就得聊聊mysql备份恢复的机制了
其实查看mysqldump备份产生的sql语句,会发现视图首先会恢复成表,之后再删除表,新建视图。

如下图,可以看到在15572行先创建了v_t_borrow_details表,然后在21322行创建了v_t_borrow_details视图
技术分享图片

这样是为了避免依赖关系,比如有2个 VIEW: v_a, v_b
v_a 引用 v_b
如果先建 v_a ,那么它引用的 v_b 还没有创建,是建不成功的,而先把所有的 view 都弄成表先建一次,表是没有依赖的,都会创建成功,然后再逐个删除 view 和创建 view,这时候引用的东东都是以表或 view 的形式存在了,不会因为依赖的对象出问题。
而之所以视图会变成表了,那是因为在恢复过程中出错导致了恢复中断,后面的语句都skipping了。

使用mysql恢复数据时视图变成表

标签:log   数据   cto   ges   ima   出错   通过   分享   成功   

原文地址:http://blog.51cto.com/billy98/2059406

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!