vb:逻辑备份恢复失败常见原因分析及案例2025

2025-07-11  本文已影响0人  这货不是王马勺

1.非标准操作类

1.1 vb_dump -h 远程备份: 查询失败:ERROR: unrecognized configuration parameter "enable_duplicate_indexnames"

1.2 vb_dump源库100G+,备份文件3G+,恢复后数据不完全

以cm_mbox表为例进行排查,违反了非空约束。
在源端查看表结构、数据及兼容模式,源端为B兼容模式

查看目标端兼容模式,发现是A兼容模式。
在目标端重建库指定兼容模式为B,重新导入没有报错,查询两边数据一致。

查看表统计信息,发现源端表数据update频繁,存在膨胀,create table as select*from 原表,实际只有30MB。

1.3 包名加引号时无法被vb_dump导出

1.4 备库vb_dump导出数据报错ERROR:canceling statement due to conflict with recovery

2.参数配置类

2.1 MySQL兼容模式lower_case_table_names=1时,vb_dump导出大写的表报错 no

matching tables were found for pattern "S1.Tea'

2.2 vb_restore -p 5432 -f /data/backup/tcxc_test.dmp -d test_db报错:必须为gs_restore指定转储文件名/路径

2.3 备库开启极致rto后,vb_dump报错:ERROR SETTRANSACTION ISOLATION LEVEL must be called before any query

3.已修复缺陷

3.1 SQL Server兼容模式下,vb_dump导出包含关键字top的表报错,查询失败: ERROR:syntax error at or near "top"

3.2 vb dump备份带auto_increment序列的数据,当使用-a导出时,报错:不允许修改由

auto increment拥有的序列

3.3 vb_dump导出带有out参数的存储过程,导入时报错

导出正常:

导入报错:

3.4 vb_restore导入大量临时表时,导入速度慢

vb_restore导入速度越来越慢,接近10000条每导入100条数据接近1分钟。由于太慢,没有完成导入。
导入数据中存在大量临时表。换成G1002215.5数据库导入,速度正常。

测试用例:

3.5 B兼容模式,lower_case_column_names=0,vb_dump返回的列名大小写不敏感

3.6 恢复备份后索引名后面自动增加了“数字”

3.7 创建有发布或订阅的库,vb_dump导出报错Segmentation fault或invalid dumpId 32665或 invalid dumpId 0.(数字不固定)

3.8 去掉vastbase_sql_mode 中的ansi_quotes值,vb_dump报错

4.规划中

4.1 性能:vb_dump导出效率较低,和mysqldump导出相比相差时间较大

测试结果:在2.2 Build 15.7、2215.8(包括重新初始化实例)、V3.0.8测试
2215.7和8均比较慢,V308效率高。

查看2215日志发现存在很多个pg_catalog.gs_is_recycle_obj函数调用。
而V3.0.8仅调用了3次该函数。

通过打开server的 log_statement,记录dump期间所有的SOL,发现几个大量被执行的SOL:
1.gs_is_recycle_obj,被执行7000+次
2.SELECT * FROM pg_proc a LEFT JOIN pg_namespace b on a.pronamespace=b.oid WHERE a.proname='gs_is_recycle_obj' and b.nspname='pg_catalog'; 查询gs_is_recycle_obj 函数是否存在,被执行 7000+次
3.select count(*) from pg_depend xxx;查询pg_depend确认package,被执行700+ 次。
4.working_version_num()函数,被执行3000+次

4.2 性能:308导出10w空表,postgres导出1分半导入1分钟,vb导出2h+导入83分钟

上一篇 下一篇

猜你喜欢

热点阅读