使用yb-voyager迁移至YugaByte时导出Postgres schema遇pg_dump错误求助
解决yb-voyager导出schema时的pg_dump错误
1. 检查pg_dump版本兼容性
yb-voyager要求pg_dump版本与源PostgreSQL数据库主版本保持一致(比如源库是13.x,就用13系列的pg_dump)。
- 查看源库版本:
psql -h <SOURCE_DB_HOST> -U <SOURCE_DB_USER> -d <SOURCE_DB_NAME> -c "SELECT version();" - 查看当前pg_dump版本:
pg_dump --version - 版本不匹配时,安装对应版本的pg_dump,或在命令中通过
--pg-dump-path指定正确路径:yb-voyager export schema --export-dir <EXPORT_DIR> \ --source-db-type postgres \ --source-db-host <SOURCE_DB_HOST> \ --source-db-user <SOURCE_DB_USER> \ --source-db-password <SOURCE_DB_PASSWORD> \ --source-db-name <SOURCE_DB_NAME> \ --source-db-schema <SOURCE_DB_SCHEMA> \ --pg-dump-path /path/to/correct/pg_dump
2. 验证源数据库权限
确保<SOURCE_DB_USER>拥有足够执行导出的权限:
- 需要
CONNECT数据库权限,以及目标schema下所有对象的SELECT权限 - 执行以下SQL授予权限:
GRANT CONNECT ON DATABASE <SOURCE_DB_NAME> TO <SOURCE_DB_USER>; GRANT USAGE ON SCHEMA <SOURCE_DB_SCHEMA> TO <SOURCE_DB_USER>; GRANT SELECT ON ALL TABLES IN SCHEMA <SOURCE_DB_SCHEMA> TO <SOURCE_DB_USER>; GRANT SELECT ON ALL SEQUENCES IN SCHEMA <SOURCE_DB_SCHEMA> TO <SOURCE_DB_USER>;
3. 确认导出目录权限
保证<EXPORT_DIR>具备读写权限:
mkdir -p <EXPORT_DIR> chmod -R 755 <EXPORT_DIR>
4. 排查网络连通性
确认源数据库主机可正常访问,端口未被防火墙/安全组拦截:
- 测试连通性:
telnet <SOURCE_DB_HOST> 5432(默认Postgres端口为5432,若修改过则用对应端口) - 连通失败时先打通网络再重试。
5. 直接执行pg_dump定位问题
绕过yb-voyager直接执行pg_dump,缩小问题范围:
pg_dump -h <SOURCE_DB_HOST> -U <SOURCE_DB_USER> -d <SOURCE_DB_NAME> -n <SOURCE_DB_SCHEMA> --schema-only -f <EXPORT_DIR>/schema_dump.sql
- 若此命令报错,根据pg_dump的具体提示(如对象不存在、权限不足)针对性修复;
- 若命令成功,再重新执行yb-voyager导出命令。
内容的提问来源于stack exchange,提问作者Setu Kumar Basak
相关产品推荐
相关产品推荐

