我运行了
pg_restore
命令来恢复 postgres 数据库。二进制数据转储约1.3GB,已恢复3小时。有没有办法确保它实际上仍在运行?也许可以检查一下进度?
我可以看到 WindowServer 有稳定的 CPU 活动。
如果命令尚未完成,则根据定义它仍在运行。要查看它是否正在处理,请检查它是否使 CPU 核心处于忙碌状态并查看
pg_stat_activity
:如果相应的服务器进程没有 wait_event
,则它正在运行。
pv
- 一种通过管道监控数据进度的工具。您可以通过包管理器安装它。例如:sudo apt-get install pv # Debian/Ubuntu
# or
brew install pv # macOS
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
仍然需要处理数据并将其缓冲区中的数据写入数据库。