[database] Postgresql-데이터베이스 백업 및 다른 소유자로 복원?

다른 서버의 데이터베이스에서 백업을 수행했으며이 명령을 사용하여 필요한 역할과 다른 역할을합니다.

pg_dump -Fc db_name -f db_name.dump

그런 다음 데이터베이스를 복원해야하는 다른 서버에 백업을 복사했지만 해당 데이터베이스에 사용 된 소유자가 없습니다. 데이터베이스에 owner owner1가 있지만 다른 서버에서는 내가 가지고 owner2있는 데이터베이스 만 복원하고 소유자를 변경해야 한다고 가정 해 보겠습니다 .

복원 할 때 다른 서버에서 수행 한 작업 :

createdb -p 5433 -T template0 db_name
pg_restore -p 5433 --role=owner2 -d db_name db_name.dump

그러나 복원이 실행되면 다음 오류가 발생합니다.

pg_restore: [archiver (db)] could not execute query: ERROR:  role "owner1" does not exist

소유자를 변경하려면 어떻게 지정할 수 있습니까? 아니면 불가능합니까?



답변

--no-owner옵션을 사용해야합니다 . 이렇게 pg_restore하면 개체의 소유권을 원래 소유자로 설정하려는 시도가 중지됩니다 . 대신 객체는 다음에서 지정한 사용자가 소유합니다.--role

createdb -p 5433 -T template0 db_name
pg_restore -p 5433 --no-owner --role=owner2 -d db_name db_name.dump

pg_restore 문서


답변