开发者社区 > 数据库 > 数据仓库 > 正文

云原生数据仓库AnalyticDB 怎么从ADB-PG怎么方便dump出一个数据库?

云原生数据仓库AnalyticDB PostgreSQL版怎么从ADB-PG怎么方便dump出一个数据库,然后恢复到自建PostgreSQL 中?

我使用pg_dump出来后,发现都带有 public shema标识符,导致pg_restore出错

貌似所有的命令都带上了public,比如COPY, ALTER TABLE

pg_restore: creating INDEX "public.idx_goods_biz_id"
pg_restore: from TOC entry 2779; 1259 32993 INDEX idx_goods_biz_id kiwidba
pg_restore: error: could not execute query: ERROR: relation "public.goods" does not exist
Command was: CREATE INDEX idx_goods_biz_id ON public.goods USING btree (biz_id);

展开
收起
cuicuicuic 2023-10-27 10:21:58 83 0
4 条回答
写回答
取消 提交回答
  • 在使用pg_dump和pg_restore进行数据库备份和恢复时,确实可能会遇到一些问题,特别是当源数据库和目标数据库的架构不一致时。在这种情况下,你可以尝试以下几种方法:

    1. 使用-a选项:在运行pg_dump时使用-a选项,可以禁止创建新的对象,只复制现有的对象。这样,当你恢复数据库时,就不会出现找不到新对象的错误了。

      pg_dump -a <other options> <database name> > dump.sql
      
    2. 修改dump文件:在恢复数据库之前,你可以手动修改dump文件,删除所有与public有关的语句。这需要你对PostgreSQL的SQL语法非常熟悉,并且要小心不要误删其他的语句。

    3. 使用自定义脚本:你也可以编写一个自定义的脚本,用于备份和恢复数据库。这个脚本可以根据你的需求,精确地控制数据的复制过程。

    4. 使用第三方工具:还有一些第三方的工具,如DBeaver、Navicat等,也可以用于备份和恢复数据库。这些工具通常提供了更友好的用户界面,可以让你更方便地管理和操作数据库。

    总的来说,选择哪种方法取决于你的具体需求和环境。我建议你先尝试第一种方法,如果不行,再尝试其他的方法。

    2023-10-30 17:09:25
    赞同 展开评论 打赏
  • 可以从以下几个方面来考虑解决你提出来的问题:

    1. pg_dump使用公共schema:如果你的db包含私有的schemata,你可能需要在pg_dump命令中指定所有的schemata,这样pg_dump就会生成正确的DML语句。例如,pg_dump --schema=public,schema1,schema2 database_name > dump.sql
    2. pg_restore时去除公共schema:在pg_restore命令中加入--no-public选项,这样就不会再为public schema创建index,从而避免你的错误。例如,pg_restore --no-public -d new_database_name dump.sql
    3. 如果你不想使用pg_dump命令,也可以直接把你的数据导出到CSV文件,然后使用psql命令来插入数据。例如,psql -f data.csv db_name
    2023-10-27 11:09:40
    赞同 1 展开评论 打赏
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    云原生数据仓库 AnalyticDB PostgreSQL 版本的备份和恢复过程与普通的 PostgresSQL 数据库有所不同。如果您想从 AnalyticDB PostgreSQL 数据库中备份数据并将其恢复到自建的 PostgreSQL 数据库中,建议您使用 Amazon RDS for PostgreSQL 或其他第三方工具来执行此操作。
    以下是使用 Amazon RDS for PostgreSQL 执行此操作的一般步骤:

    1. 使用 pg_dump 工具将 AnalyticDB PostgreSQL 数据库中的所有数据导出到文件中。
    2. 将导出的数据文件上传到 Amazon S3 存储桶中。
    3. 在 Amazon RDS for PostgreSQL 上创建新的实例,并配置为从 Amazon S3 存储桶中加载数据。
    4. 在 Amazon RDS for PostgreSQL 上运行 psql 命令,以恢复从 AnalyticDB PostgreSQL 导出的数据。

    如果您使用 pg_restore 工具从 Amazon S3 存储桶中恢复数据,请确保在备份和恢复过程中删除公共 schema 标识符。您可以使用通配符来指定数据文件的路径和名,以避免从 Amazon S3 存储桶中加载不需要的数据。例如:

    pg_restore --dbname=your-database -d /path/to/datafile.*
    

    这将从 datafile.* 文件夹中恢复所有数据文件,并将它们加载到名为 your-database 的数据库中。您还可以使用其他选项来自定义 pg_restore 的行为,例如指定表的恢复顺序、替换现有的对象等。
    注意,这只是备份和恢复数据的一种常见方法。您可能需要根据自己的需求和环境来选择最合适的工具和技术。

    2023-10-27 10:55:23
    赞同 1 展开评论 打赏
  • 可能是这个uuid插件安装在public了,此回答整理自钉群“云原生数据仓库AnalyticDB PostgreSQL版”

    2023-10-27 10:32:06
    赞同 展开评论 打赏

相关产品

  • 云原生数据仓库AnalyticDB MySQL版
  • 云原生数据仓库 AnalyticDB PostgreSQL版
  • 热门讨论

    热门文章

    相关电子书

    更多
    新氧云原生全栈数仓最佳实践 立即下载
    离线实时一体化数仓与湖仓一体—云原生大数据平台的持续演进 立即下载
    企业大数据平台下数仓架构 立即下载