use*_*691 3 postgresql postgresql-9.3 postgresql-10
我正在努力将备份从本地 postgresql 恢复到 AWS 中托管的另一个 postgresql 数据库(rds-aurora postgresql,无服务器)。数据大小为170GB的压缩数据。
我之前想过使用 pg_restore 因为我可以传递该-j
选项,但提取文件需要花费大量的时间和空间。
我的文件格式为= tar.gz (20200204_data_tar.gz)
我尝试使用管道提取并将其传递给 pg_restore 以节省时间,但出现以下错误。注意:备份是使用 pg_start_backup 生成的。
tar -xzOf 20200204_data_tar.gz | pg_restore
--host=my-test.us-east-1.rds.amazonaws.com --port=5432 --username=postgresql--dbname=mytest -j 16 --password --verbose --exit-on-error --data-only
pg_restore: [archiver] input file does not appear to be a valid archive
Run Code Online (Sandbox Code Playgroud)
本地版本 9.3.4 新集群版本使用 10.7
有人可以建议我如何恢复这个大型数据库吗?
当然,最好的选择是记住您到底是如何进行备份的......
如果要恢复托管数据库上的备份,最好是使用pg_dump
. 因此,请确保它不是物理备份:
tar -tzvf 20200204_data_tar.gz
并确保它不包含类似postgresql.auto.conf
或 之类的文件PG_VERSION
。确定后,将存档解压到新目录并检查您获得的内容:
mkdir x && cd x
tar -xzvf ../20200204_data_tar.gz
Run Code Online (Sandbox Code Playgroud)
然后检查文件是什么转储格式并相应地恢复它:
“普通”格式:
该存档包含一个带有 SQL 语句的文本文件,有人很奇怪地将单个文件打包到 tar 存档中。
这样的转储是通过以下方式恢复的
psql -f <SQL-file> -h <hostname> -p <port> -U <user> -d <target-database>
Run Code Online (Sandbox Code Playgroud)“自定义”格式:
该存档包含一个二进制文件,而有人很奇怪地将单个文件打包到 tar 存档中。
这样的转储是通过以下方式恢复的
pg_restore -h <hostname> -p <port> -U <user> -d <target-database> <dump-file>
Run Code Online (Sandbox Code Playgroud)“目录”格式:
存档包含一个文件toc.dat
和许多格式为 的文件number.dat.gz
。
这样的转储是通过以下方式恢复的
pg_restore -h <hostname> -p <port> -U <user> -d <target-database> <directory-containing-toc.dat>
Run Code Online (Sandbox Code Playgroud)“tar”格式:
存档包含文件toc.dat
和restore.sql
许多格式为 的文件number.dat
。
这样的转储可以像上面的目录格式一样恢复。
归档时间: |
|
查看次数: |
26993 次 |
最近记录: |