如何确保pg_restore正在运行?

问题描述 投票:0回答:2

我运行了

pg_restore
命令来恢复 postgres 数据库。二进制数据转储约1.3GB,已恢复3小时。有没有办法确保它实际上仍在运行?也许可以检查一下进度?

我可以看到 WindowServer 有稳定的 CPU 活动。

postgresql
2个回答
1
投票

如果命令尚未完成,则根据定义它仍在运行。要查看它是否正在处理,请检查它是否使 CPU 核心处于忙碌状态并查看

pg_stat_activity
:如果相应的服务器进程没有
wait_event
,则它正在运行。


0
投票
  1. 安装
    pv
    - 一种通过管道监控数据进度的工具。您可以通过包管理器安装它。例如:
sudo apt-get install pv  # Debian/Ubuntu
# or
brew install pv          # macOS
  1. 在恢复 PostgreSQL 转储时使用
    pv
    pg_restore
    运行命令以显示进度
pv [your_pg_dump.file] | pg_restore --clean --if-exists --dbname=[your_database_name] --no-acl --no-owner
  • [your_pg_dump.file]
    替换为转储文件的路径。
  • [your_database_name]
    替换为目标数据库名称。

选项说明:

  • --clean
    :在重新创建对象之前删除它们。
  • --if-exists
    :使用 --clean 时,如果对象不存在,可以避免错误。
  • --dbname
    :指定要恢复到的数据库。
  • --no-acl
    :跳过恢复访问权限。
  • --no-owner
    :防止恢复对象所有权,对于非超级用户角色很有用。

PS:

pv
将显示一个进度条,显示有多少转储文件已传递到
pg_restore
。一旦
pv
达到 100%,您可能会注意到有一点延迟。这是因为
pg_restore
仍然需要处理数据并将其缓冲区中的数据写入数据库。

© www.soinside.com 2019 - 2024. All rights reserved.