2017-05-11 11 views
1

전문가 하나의 PostgreSQL 데이터베이스를 백업하고 복원해야합니다. 내 운영 체제 버전은 우분투 14.04 64 비트이며, PostgreSQL는 다음과 같습니다하나의 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 데이터베이스를 백업하고 복원 할 수 있습니까?

고마워요.

------------------------ 업데이트 1 -------------------- 그것은 습관 - 당신은 언어를 주석에 오류를 무시할 수

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 
+1

이 오류는 무시해도됩니다. plpgsql에 대한 주석의 부족은 코드에 영향을 미치지 않습니다. 수퍼 유저로 pg_restore를 실행하면 이러한 경고가 표시되지 않습니다. –

답변

0

: ----

심지어 나는 pg_dump의 및 pg_restore에와 "--no-소유자"옵션, 난 여전히 같은 오류 메시지를 받았습니다 추가 코드에 영향을 미칩니다. 경고를 피하기 위해 소유자를 사용하지 않는 것도 고려하십시오. 그러나 소유자는 pg_restore에 접속 한 사용자가 아니라 원래 사용자가 될 것임을 명심하십시오. 문서를 읽어보십시오. https://www.postgresql.org/docs/current/static/app-pgrestore.html :

-O

--no-owner Do not output commands to set ownership of objects to match the original database. By default, pg_restore issues ALTER OWNER or SET SESSION AUTHORIZATION statements to set ownership of created schema elements. These statements will fail unless the initial connection to the database is made by a superuser (or the same user that owns all of the objects in the script). With -O, any user name can be used for the initial connection, and this user will own all the created objects.

+1

안녕하세요, 정보를 제공해 주셔서 감사합니다. 내가 pg_dump의 및 pg_restore에와 "--no-소유자"당신의 옵션을 테스트 는, 그러나 나는 여전히 같은 오류를 가지고 : GID : ~/작동 $ pg_restore에 -U db_name_user -O -ft -d DB_NAME db_name.tar pg_restore에 : [archiver (db)] PROCESSING TOC 동안 오류가 발생했습니다 : pg_restore : [archiver (db)] TOC 항목에서 오류가 발생했습니다. 3621; 0 0 COMMENT EXTENSION plpgsql pg_restore : [archiver (db)]가 쿼리를 실행할 수 없습니다. ERROR : 확장 plpgsql의 소유자 여야합니다. 명령 : 확장시 COMMENT plpgsql IS 'PL/pgSQL procedural language'; – zhengfish

+0

확실한 것 - 당신은 환영합니다. –

관련 문제