2
print 'restore db1'
run_command('pg_restore -i -h localhost -p 5432 -U postgres -d db1 -v "/var/lib/project/backup/db1.backup" -c')
print '--- wait 3 seconds'
time.sleep(3)

print 'restore db2'
run_command('pg_restore -i -h localhost -p 5432 -U postgres -d db2 -v "/var/lib/project/backup/db2.backup" -c')
print '--- wait 3 seconds'
time.sleep(3)

print 'restoring mongodb'
run_command('/var/lib/project/bbds/mongodb-linux/bin/mongorestore /var/lib/project/backup/dump --drop')
print '--- wait 3 seconds'
time.sleep(3)

run_command的基本上是取自这个

在我的控制台上:

python ignition.py --load-fixtures
For safety, this process will run for about one minute.
setup LDAP
restore db1
['pg_restore', '-i', '-h', 'localhost', '-p', '5432', '-U', 'postgres', '-d', 'db1', '-v', '/var/lib/project/backup/db1.backup', '-c']
Password: 

输入密码后就卡住了。之后什么也没有发生。我不确定它是否资源繁忙。pg_restore仍在运行,ps au|grep pg_restoremongorestore不是。所以它必须坚持第一次恢复。我也不认为它的内存已满,因为我的虚拟机只有 512mb,而且它总是满的,并且总是使用交换内存。

我们怎么知道它在做什么?有时它会停留在恢复 mongo 上。所以所有这些操作都可能导致问题。我应该如何解决这个问题?

谢谢。


当我终止进程时,我得到了这个回溯:http ://pastebin.com/Cnv9P6HW 重新启动将“解决”问题。它将允许我毫无问题地运行脚本。但这并不稳定。我们有时会陷入困境。

4

1 回答 1

2

您对pg_restoreand的使用mongorestore似乎是独立的。我会尝试:

  • 直接从命令行运行每个命令(即不通过 Python do_command()
  • 将它们放入单独的脚本中,以便您可以确定哪个命令挂起

您提到只有 512MB RAM 并且始终使用交换,这表明此 VM 上没有足够的可用内存。“卡住”究竟是什么意思?如果虚拟机实际上被卡住并需要重新启动,那么它很可能已经耗尽了 RAM 和交换空间。如果您仍然可以登录,但恢复脚本的运行时间似乎比预期的要长,我会尝试使用性能监控工具(如iostat和)来了解资源使用情况vmstat

于 2012-06-26T03:45:47.393 回答