[英]How to backup and restore one PostgreSQL database?
大师我需要备份和恢复一个PostgreSQL数据库。 我的os版本是Ubuntu-14.04 64bit,PostgreSQL是:
gid: ~/works $ pg_config --version
PostgreSQL 9.3.15
我使用pg_dump来备份数据库:
gid: ~/works $ pg_dump -U db_name_user -F t db_name > db_name.tar
我尝试使用pg_restore来恢复数据库并失败:
gid: ~/works $ pg_restore -U db_name_user -F t -d db_name db_name.tar
pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 3621; 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
我不知道这意味着什么? 我如何备份和恢复PostgreSQL数据库?
非常感谢。
------------------------ update 1 ------------------------
即使我在pg_dump和pg_restore中添加了“--no-owner”选项,我仍然会收到相同的错误消息:
gid:~/works $ pg_restore -U db_name_user -O -Ft -d db_name db_name.tar
pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 3621; 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
您可以忽略评论语言时的错误 - 它不会影响您的代码。 还要考虑不使用所有者来避免此类警告。 但请记住,所有者将是您在pg_restore上连接的用户,而不是原始用户。 请阅读文档: https : //www.postgresql.org/docs/current/static/app-pgrestore.html :
-O
--no-owner不输出命令来设置对象的所有权以匹配原始数据库。 默认情况下,pg_restore发出ALTER OWNER或SET SESSION AUTHORIZATION语句以设置创建的模式元素的所有权。 除非与超级用户(或拥有脚本中所有对象的同一用户)建立与数据库的初始连接,否则这些语句将失败。 使用-O,任何用户名都可以用于初始连接,并且该用户将拥有所有创建的对象。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.