我必须对postgres数据库执行每月维护。
我进入系统,导航到数据库,然后在40个不同的表上运行3个命令:
CLUSTER [table1] USING [primarykey];
ANALYZE [table1];
REINDEX TABLE [table1];
我必须等待每个命令完成执行才能运行下一个命令(即CLUSTER,等待几分钟 - ,ANALYZE -wait-,REINDEX -wait-,)
这很简单,但是我需要大约30-45分钟来复制和粘贴120行,一次一行...有没有办法自动化这个过程?
我没有使用脚本的经验,我对postgreSQL知之甚少。
我的问题有点独特,因为我无法在postgreSQL数据库中安装任何东西。我希望将此脚本本地化在我的计算机上,然后能够在维护时运行它。
答案 0 :(得分:0)
在核心部分,您所要做的就是编写一系列要从命令行执行的命令,并将它们推送到文本文件中。最简单的方法是在本地计算机上安装psql
,如果它还没有。
psql -c 'cluster foobar' -h thehost.example.com
psql -c 'analyze foobar' -h thehost.example.com
您可能需要进行一些配置才能使此连接与您所使用的任何身份验证方法一起工作,但不知道哪种身份验证方法无法进一步评论。
如果群集由于某种原因失败,则没有理由继续尝试分析它。 (但这样做也没有什么害处)。如果你想微调这种情况,可以采用多种方法来实现,具体取决于你编写脚本的shell以及你想要它做什么。