add postgres table diff
Signed-off-by: Nico Schottelius <nico@denkbrett.schottelius.org>
This commit is contained in:
parent
d7f0e266ba
commit
a2382461e0
1 changed files with 51 additions and 0 deletions
51
postgres-pgpool-diff.sh
Normal file
51
postgres-pgpool-diff.sh
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
#!/bin/sh
|
||||||
|
# Nico Schottelius, 20080514
|
||||||
|
|
||||||
|
hosts="62.65.130.180 62.65.130.181"
|
||||||
|
opts="-p 6543 -U postgres"
|
||||||
|
tmpdir="$(mktemp -d /tmp/iuaeiueve.XXXXXXXXXXXXXXXX)"
|
||||||
|
|
||||||
|
|
||||||
|
lasthost=""
|
||||||
|
for host in $hosts; do
|
||||||
|
psql $opts -h "$host" -l | \
|
||||||
|
awk 'BEGIN { getline; getline } $2 ~ /\|/ { print $1 }' \
|
||||||
|
> "$tmpdir/db.$host"
|
||||||
|
|
||||||
|
if [ "$lasthost" ]; then
|
||||||
|
echo "Comparing DBs from $lasthost and $host"
|
||||||
|
diff -u "$tmpdir/db.$lasthost" "$tmpdir/db.$host"
|
||||||
|
fi
|
||||||
|
lasthost="$host"
|
||||||
|
done
|
||||||
|
|
||||||
|
for db in $(cat "$tmpdir/db.$lasthost"); do
|
||||||
|
echo "Comparing Database $db ..."
|
||||||
|
|
||||||
|
echo '\d' | psql $opts -h "$lasthost" "$db" | \
|
||||||
|
awk '$5 ~ /table/ { print $3 }' > "$tmpdir/tables.$lasthost"
|
||||||
|
|
||||||
|
while read table; do
|
||||||
|
echo -n "Comparing Table $table ($db) ..."
|
||||||
|
lastcount=""
|
||||||
|
lasthost=""
|
||||||
|
allcount=""
|
||||||
|
for host in $hosts; do
|
||||||
|
count="$(echo "select count(*) from $table" | \
|
||||||
|
psql $opts -h "$host" "$db" | \
|
||||||
|
awk 'BEGIN { getline; getline } { print $0; exit 0 }')"
|
||||||
|
allcount="$allcount $count"
|
||||||
|
if [ "$lastcount" ]; then
|
||||||
|
if [ "$lastcount" -ne "$count" ]; then
|
||||||
|
echo "mismatch: $lasthost \($lastcount\) != $host \($count\)"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
lasthost="$host"
|
||||||
|
done
|
||||||
|
echo "$allcount"
|
||||||
|
done < "$tmpdir/tables.$lasthost"
|
||||||
|
|
||||||
|
|
||||||
|
done
|
||||||
|
|
||||||
|
rm -rf "$tmpdir"
|
Loading…
Add table
Reference in a new issue