tidb备份还原时 视图被还原成了表

【 TiDB 使用环境】
测试环境

【问题描述】:
1.使用 mydumper 进行数据备份,备份操作正常;
2.使用 loader 进行数据还原时,发现,原来的视图竟然被还原成了表。



【TiDB 版本】 v4.0.12

1 个赞

看下导出的sql文本里面,是 create table,还是 create view ?

1 个赞

感谢大佬的支持。

我发现,每一个视图都有两个备份的sql文件


第一个文件就是一个建表的语句。。。

1 个赞

mydumper 导出貌似是有这情况,但是还原的时候执行 view.sql 这个文件,会先有 drop table 和 drop view 操作,能确保把视图还原成功。

你之前 loader 的时候没有自动执行 view.sql 文件吗?

1 个赞

我又建了一个库测试了一下,没有执行 view.sql。:fearful:
》备份前的数据:
image
》备份之后的数据:


》备份过程中的日志输出:

真的就没有执行 bbb.view_a_schema-view.sql 这个文件

完整的loader命令发一下看看

》 1.备份命令:
./mydumper -h 192.168.0.31 -P 4000 -u root -p xxxxxx -B bbb -t 1 -o /home/tidb_test_0.31/dstyypt/20211201_test02


》 2.还原命令:
./loader -h 192.168.0.41 -P 4000 -u root -p xxxxxx -t 1 -d /home/tidb_test_0.31/dstyypt/20211201_test02/

看命令没啥问题,loader也没有特殊参数能指定视图恢复。

把 view.sql 的 grep 出来手动 source 吧。。:joy::joy:

“把 view.sql 的 grep 出来手动 source 吧” 这个是什么操作?还请大佬指教。
是把 这个 view.sql 文件中的内容复制出来在数据库中手动执行吗?

什么版本? 看来是loader的问题。

正常的myloader流程:
1、导入库表结构文件
2、导入每个库表的具体数据
3、导入存储过程、函数、事件
4、导入视图
5、导入触发器

而loader是myloader的简化版本,可能有些流程没有处理好。

就是写个脚本,把view.sql的文件都找出来,然后用语句把这些脚本执行掉,类似

mysql -u root -pXXX -h 172.XX.XX.XX -P 4000 < /tmp/schema-view.sql

对的,可以试下 myloader

感谢大佬的支持,你这个关于loader版本的提示给了我一个思路,我研究一下

感谢大佬的支持,我更新一下这个工具包,使用和数据库版本一致的这个工具包试一下

我发现了,真的是loader工具的问题,我又测试了 tidb-lightning 就没有问题了,视图和表都可以正常的恢复。
感谢大佬的费心支持:+1::+1::+1:

是loader工具包的问题,我又使用了 集群对应版本的 tidb-lightning 工具进行恢复就正常了
非常感谢大佬

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。