我正在测试我的备份/恢复过程,当我恢复数据库时,所有表以及数据和表所有权都是正确的。但是,我担心一些警告/错误。
我的备份是使用 postgres crontab 在 cronjob 中运行的。然而,postgres cronjob 中的 pg_dump 命令是使用“myuser”用户运行的:
00 01 * * * pg_dump -U myuser -Fc --exclude-table-data=example_table example_db > ~/backups/example_db_backup.gz
如您所见,我在备份期间排除了其中一个表中的数据。所有其他表等都正常备份。
然后我用 postgres 用户创建一个新的测试数据库,因为我不想将它恢复到实时数据库。我授予“myuser”用户对新数据库的完全访问权限,然后恢复数据库:
su postgres
psql -U postgres
create database test;
GRANT ALL PRIVILEGES ON DATABASE test TO myuser;
\q
然后我按如下方式恢复数据库:
pg_restore -d test -U myuser ~/backups/example_db_backup.gz
如前所述,还原工作正常并且数据库中的所有内容似乎都是正确的,但是在还原过程中我收到以下消息:
pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 2655; 0 0 COMMENT EXTENSION plpgsql
pg_restore: [archiver (db)] could not execute query: ERROR: must be owner of extension plpgsql
Command was: COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language';
pg_restore: WARNING: no privileges could be revoked for "public"
pg_restore: WARNING: no privileges could be revoked for "public"
pg_restore: WARNING: no privileges were granted for "public"
pg_restore: WARNING: no privileges were granted for "public"
WARNING: errors ignored on restore: 1
这些错误值得关注吗?尽管恢复似乎工作正常,但我不想忽视我不了解的潜在问题。
最佳答案
我在加载 sql 转储文件时遇到了同样的错误,
postgres=# alter role <user-name> superuser;
为您的postgres
用户提供 super 用户
角色,
关于postgresql - pg_restore 工作正常但有一些错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43142532/