相关疑难解决方法(0)

如何检查PostgreSQL中的复制延迟?

我想在PostgreSQL 9.3中使用流复制来测量插入数据到master-table和slave-table之间的时间.为此,我创建了表test_time,其中包含2个字段id(serial),t(text).之后添加了一个触发器:

cur_time:=to_char(current_timestamp, 'HH12:MI:SS:MS:US'); update test_time set t=cur_time where id=new.id;

但两张桌子的时间都是一样的.我该如何测量延迟时间

postgresql replication

22
推荐指数
6
解决办法
3万
查看次数

即使计划的作业多次失败,也会发送一封通知电子邮件

我有一个systemd服务运行一个 SQL 脚本来刷新一堆物化视图。该服务每 5 分钟一班。该服务由 ansible 部署。如果 SQL 脚本失败,我想发送一封电子邮件,通知我们失败。当前代码(请参阅下面的 yml 块)将每 5 分钟左右发送一次通知电子邮件,直到我们中的一个人修复问题或停止服务。这种情况太频繁了:一封电子邮件就足够了,而且正是我所需要的。

即使脚本多次失败,我如何才能发送一封且仅一封电子邮件?

我正在考虑使用一个包装脚本,例如这个伪代码,但它看起来很丑:

# Runs every 5 min:
psql -f refresh_matviews.sql || touch refresh_matviews.failed.log
if { exists refresh_matviews.failed.log }
   and { not grep "seen" refresh_matviews.failed.log } then
     echo "failed!" | mail admin@foo.com
     echo "seen" > refresh_matviews.failed.log
Run Code Online (Sandbox Code Playgroud)

如果使用这样的包装脚本,那么解决问题的人也需要手动清除(现已过时的)故障文件(rm refresh_matviews.failed.log),以便任何新的故障都会触发新的电子邮件。

yml 文件的相关块ansible

  - name: Add systemd service that refreshes matviews
    copy:
      content: |
          # This service unit refreshes matviews
          #
          [Unit]
          Description=Refreshes matviews …
Run Code Online (Sandbox Code Playgroud)

email bash systemd ansible

5
推荐指数
1
解决办法
449
查看次数

标签 统计

ansible ×1

bash ×1

email ×1

postgresql ×1

replication ×1

systemd ×1