vacuum free能有效将事务年龄过大的问题解决,但是这个非常耗时间,这个时候最方便的就是开启screen进行vacuum freeze
开启screen窗口
$ screen -dmS your_session_name #your_session_name 自定义 可以直接使用 —S
-d <作业名称> 将指定的screen作业离线。
-m 即使目前已在作业中的screen作业,仍强制建立新的screen作业。
-S <作业名称> 指定screen作业的名称。
查看窗口
$ screen -ls
进入窗口
网上查的根本开始没写这一步,所以导致我们不知道是否就使用了screen这个功能,所以这个特别重要,我们要进去执行命令
$ screen -r pid.your_session_name
执行命令
退出screen
按住Ctrl+A不松手再按 D
查看执行状态
进来看看咋样了
$ screen -r pid.your_session_name
删除screen
kill -9 pid
举个例子
screen -dmS vfree标签:session,help,screen,freeze,75468,PG,vacuum,vfree From: https://blog.51cto.com/u_13874232/5786161
screen -ls
There are screens on:
75468.vfree (Detached)
438093.vacuum (Detached)
2 Sockets in /var/run/screen/S-telepg.
screen -r 75468.vfree
psql -p**** -Uroot -dpostgres -h ***.***.***.****(这里屏蔽端口和IP)
Password for user root:
psql (12.7)
Type "help" for help.
postgres=# \c db1
You are now connected to database "db1" as user "root".
db1=# vacuum freeze;
[detached from 75468.vfree]
screen -ls
There are screens on:
75468.vfree (Detached)
438093.vacuum (Detached)
2 Sockets in /var/run/screen/S-telepg.
screen -r 75468.vfree
psql -p**** -Uroot -dpostgres -h ***.***.***.****(这里屏蔽端口和IP)
Password for user root:
psql (12.7)
Type "help" for help.
postgres=# \c db1
You are now connected to database "db1" as user "root".
db1=# vacuum freeze;
[detached from 75468.vfree]