2016-04-29 60 views
0

我必须对postgres数据库执行每月维护。
我油灰到系统中,导航到数据库,然后运行对40页不同的表3个命令:我可以编写我每月的postgres维护吗?

CLUSTER [table1] USING [primarykey]; 
ANALYZE [table1]; 
REINDEX TABLE [table1]; 

我不得不等待每个命令执行完毕之前,我可以运行下一个(即CLUSTER,等待几分钟 - ANALYZE等待 - ,REINDEX等待 - )


这样做很简单,但需要大约30-45分钟的时间才能复制和粘贴120行,一行时间...有什么办法可以自动化这个过程吗?
我对脚本没有经验,对于postgreSQL我知之甚少。

我的问题有点独特,因为我无法在postgreSQL数据库中安装任何东西。我希望将此脚本本地化到我的计算机上,然后在维护时能够运行它。

+0

[PostgreSQL中的事件调度器?]可能的重复?(http://stackoverflow.com/questions/6839469/event-scheduler-in-postgresql) –

+1

任何不使用cron的理由? –

+0

@PeterEisentraut我不知道那是什么,但我即将谷歌!从你的陈述中,我认为我可以用cron – z0nia

回答

0
  1. 集群会自动重新建立索引表的索引。在对其进行群集后,没有理由立即对表进行重新索引。
  2. 你真的需要做这个东西吗?你有证据表明你的表需要集群吗?或者你只是假设他们的确是因为你从互联网上读到的东西,指的是由一个不知道他们首先讨论的内容的人编写的十年前的PostgreSQL版本?你可能真的会从中受益。更不可能的是,这只是浪费时间。
  3. 如果您对脚本一无所知,那么您需要了解一些关于脚本的知识。您应该将您的帖子标记为脚本,无论您使用哪种shell /语言。

在核心部分,您所要做的就是编写一系列要从命令行执行的命令,并将它们推送到文本文件中。最简单的方法可能是在本地计算机上安装psql,如果它尚未存在。

psql -c 'cluster foobar' -h thehost.example.com 
psql -c 'analyze foobar' -h thehost.example.com 

您可能需要做一些配置,使与任何身份验证方法必须到位这方面的工作,但不知道是我不能进一步置评其身份验证方法。

如果集群出于某种原因失败,没有理由继续尝试分析它。 (但这样做也没有什么坏处)。如果你想微调这种情况,有很多种方法可以做到这一点,这取决于你正在编写脚本的shell以及你想要做什么。

+0

做到这一点,谢谢你的第一个提示,我不再重新索引。关于你的第二点,我不知道这是否是100%必要的,但它是由系统的支持团队推荐的。这种自动化是否可以通过puTTy来实现? – z0nia

相关问题