【问题标题】:Could I script my monthly postgres maintenance?我可以编写每月 postgres 维护的脚本吗?
【发布时间】:2016-04-29 19:42:36
【问题描述】:

我必须每月对 postgres 数据库进行维护。
我将 puTTy 放入系统,导航到数据库,然后在 40 个不同的表上运行 3 个命令:

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

我必须等待每个命令完成执行,然后才能运行下一个命令(即 CLUSTER、-等待几分钟-、ANALYZE -wait-、REINDEX -wait-、)

这很简单,但我只需复制和粘贴 120 行,一次一行,大约需要 30-45 分钟......有没有办法自动化这个过程?
我的脚本编写经验为零,对 postgreSQL 知之甚少。

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

【问题讨论】:

  • 有什么理由不使用 cron?
  • @PeterEisentraut 我不知道那是什么,但我要在谷歌上搜索它!从你的陈述来看,我认为我可以用 cron 来做到这一点

标签: postgresql


【解决方案1】:
  1. 集群会自动重新索引表。没有理由在对表进行聚类后立即对其进行重新索引。
  2. 您真的需要做这些事情吗?您是否有证据表明您的表需要集群?或者你只是假设他们这样做是因为你从互联网上读到了一个十年前的 PostgreSQL 版本,该版本是由一个一开始不知道他们在说什么的人写的?您可能真的会从中受益。你更可能不会这样做,这只是浪费时间。
  3. 如果您对脚本一无所知,那么您需要学习一些有关脚本的知识。您可能应该将您的帖子标记为关于脚本,使用您想使用的任何 shell/语言。

在核心上,您所要做的就是编写一系列要从命令行执行的命令,然后将它们推入一个文本文件中。最简单的方法可能是在您的本地计算机上安装psql,如果它还没有的话。

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

您可能需要进行一些配置以使此连接与您现有的任何身份验证方法一起工作,但不知道是哪种身份验证方法,我无法进一步评论。

如果集群由于某种原因失败,则几乎没有理由继续尝试对其进行分析。 (但这样做也没什么坏处)。如果您想微调这种情况,有多种方法可以做到这一点,具体取决于您为哪个 shell 编写脚本,以及您希望它做什么。

【讨论】:

  • 感谢第一个提示,我不再重新索引。关于您的第二点,我不知道这是否 100% 必要,但系统支持团队建议这样做。使用腻子可以实现这种自动化吗?
猜你喜欢
  • 2018-12-21
  • 2013-03-21
  • 2010-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多