我有两个用于记录内容的数据库,我想检查它们是否同步。
批准的解决方案是定期(比如说每小时)向两者发送一个选择,生成结果集的哈希值并比较它们。如果它们匹配则很好,否则会生成一些警报。
目前我正在使用(bash 脚本):
log_table="SELECT column1, column2, column3 FROM log_table where to_char(timestamp, '$ts_format') = '$tx_moment'";
PSQL="psql -t -q -h $_gp_host -U $_gp_user -d log_schema -c ";
echo "`${PSQL} $tx_fix${log_table} | sort | cksum`";
我想在 postgres 端做 cksum/hash。因为目前它会下载整个结果集(甚至可能有 25MB 或更多)并在服务器端生成校验和。
Google 没有帮助。
有什么建议吗?
谢谢。
最佳答案
你可以使用 md5:
log_table="
SELECT
md5(column1 || column2 || column3) AS hash,
column1, column2, column3
FROM log_table where to_char(timestamp, '$ts_format') = '$tx_moment'";
关于postgresql - 如何在 Postgres 中生成结果集的哈希值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3533314/