And*_*y K 18 postgresql restore postgresql-9.3 pg-dump pg-restore
我正在尝试在没有接收数据库上的适当角色的情况下恢复转储。
如前所述这里也是在这里,你需要有--no-owner作为一个选项,无论是在pg_dump或pg_restore或两者兼而有之。
我使用以下命令行来创建我的转储:
"C:\Program Files\PostgreSQL\9.3\bin\pg_dump.exe" --no-owner -Ft --dbname=postgresql://avo******:AV0******?@127.0.0.1:5432/BI_DB > K:\BI\backup\sort\bck_%timestamp%.tar
Run Code Online (Sandbox Code Playgroud)
恢复线如下:
"C:\Program Files\PostgreSQL\9.3\bin\pg_restore.exe" --host localhost --port 5432 --username "postgres" --dbname "BI_TEST2" --no-password --no-owner --role=postgres --exit-on-error --verbose "D:\D\avo\backup\bck_04042017_1410.tar"
Run Code Online (Sandbox Code Playgroud)
如您所见,两者都有--no-owner选择,但最终出现以下错误:
最让我烦恼的是下面的日志:
pg_restore: [programme d'archivage (db)] Erreur pendant le traitement de la TOC (« PROCESSING TOC ») :
pg_restore: [programme d'archivage (db)] Erreur à partir de l'entrée TOC 2633 ; 0 0 ACL adm avo******
pg_restore: [programme d'archivage (db)] could not execute query: ERREUR: role « avo****** » does not exist
Run Code Online (Sandbox Code Playgroud)
为什么即使--no-owner指定了它也需要一个角色?
我错过了什么?
我在 Postgres 9.3 上运行
小智 16
pg_restore设置 ACL时发生错误:您可以使用--no-acl来阻止GRANT命令。
使用 中的-Ft选项pg_dump,您只能跳过 中的角色和 ACL pg_restore。--list如果您需要更多详细信息,您还可以编辑目录。
小智 7
使用 PostgreSQL 12.4:
$ pg_dump --help
...
-O, --no-owner skip restoration of object ownership in
plain-text format
...
-x, --no-privileges do not dump privileges (grant/revoke)
Run Code Online (Sandbox Code Playgroud)
下面是一个例子:
$ pg_dump -O -x mydb_development | gzip > mydb-2020-09-22.bak.gz
Run Code Online (Sandbox Code Playgroud)
小智 5
以下命令导出数据,而不将其与角色或权限数据混合,以便您可以将其导入到您指定的任何角色。另外,您可以让 pg_dump 将数据压缩到 tar 文件中。
pg_dump --format=t --blobs --verbose --no-privileges --no-owner \
--password --username mydbuser --database mydbname \
--file "mydbname_dump_$(date +%Y%m%d).tar"
Run Code Online (Sandbox Code Playgroud)
或者一个更短的来做同样的事情
pg_dump -F t -bvxOW -U myuser -d mydbname -f "mydbname_dump_$(date +%Y%m%d).tar"
Run Code Online (Sandbox Code Playgroud)
要恢复,您将使用几乎相同的标志,并提及您希望所有权属于哪个角色。
pg_restore -vxOW --role=myuser2 -U myadminuser -d mydbname "mydbname_dump_$(date +%Y%m%d).tar"
Run Code Online (Sandbox Code Playgroud)
以下是所有这些标志的含义以及其他选项的含义,例如压缩级别或输出格式。您可以通过执行pg_dump --help以下操作找到更多信息pg_restore --help:
General options:
-f, --file=FILENAME output file or directory name
-F, --format=c|d|t|p output file format (custom, directory, tar,
plain text (default))
-v, --verbose verbose mode
-Z, --compress=0-9 compression level for compressed formats
Options controlling the output content:
-b, --blobs include large objects in dump
-O, --no-owner skip restoration of object ownership in
plain-text format
-x, --no-privileges do not dump privileges (grant/revoke)
Connection options:
-d, --dbname=DBNAME database to dump
-h, --host=HOSTNAME database server host or socket directory
-p, --port=PORT database server port number
-U, --username=NAME connect as specified database user
-w, --no-password never prompt for password
-W, --password force password prompt (should happen automatically)
--role=ROLENAME do SET ROLE before dump
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24094 次 |
| 最近记录: |