我想在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;
但两张桌子的时间都是一样的.我该如何测量延迟时间
我有一个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)