From: | stuart(at)stuartbishop(dot)net |
---|---|
To: | pgsql-bugs(at)postgresql(dot)org |
Subject: | BUG #7546: Backups on hot standby cancelled despite hot_standby=on |
Date: | 2012-09-17 10:28:49 |
Message-ID: | E1TDYZN-0005Id-Na@wrigleys.postgresql.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs |
The following bug has been logged on the website:
Bug reference: 7546
Logged by: Stuart Bishop
Email address: stuart(at)stuartbishop(dot)net
PostgreSQL version: 9.1.5
Operating system: Ubuntu 12.10
Description:
I have a primary and a hot standby using streaming replication. The hot
standby specifies 'hot_standby_feedback=on' with other replication settings
set to default.
If a vacuum occurs on the primary while pg_dump is dumping a large table,
the pg_dump is cancelled, usually with the following error:
ERROR: canceling statement due to conflict with recovery
DETAIL: User was holding shared buffer pin for too long.
I can excercise this problem with the following script:
#!/bin/sh
dbname="repl_test"
master_port=5432
slave_port=5434
rows=2000000
slow="pv --rate-limit 20k"
createdb -p $master_port $dbname
psql -p $master_port -d $dbname -f - <<EOM
CREATE TABLE IF NOT EXISTS BigStuff (
a serial primary key, b integer, c text, d text)
WITH (autovacuum_enabled = FALSE);
INSERT INTO BigStuff (b, c, d)
SELECT i,md5(i::text),reverse(md5(i::text))
FROM generate_series(1,${rows}) AS i;
DELETE FROM BigStuff WHERE random() < 0.15;
EOM
synced=0
while [ $synced -ne 1 ]
do sleep 5
synced=`psql -qtA -p $master_port -d $dbname -c "SELECT
(pg_current_xlog_location() = min(replay_location))::integer FROM
pg_stat_replication;"`
echo synced $synced synced
done
(pg_dump -p $slave_port --format=c $dbname | $slow > /dev/null) &
sleep 5;
psql -p $master_port -d $dbname -c "vacuum verbose BigStuff;"
From | Date | Subject | |
---|---|---|---|
Next Message | max | 2012-09-17 16:53:20 | BUG #7548: pg_upgrade still requires pg_config |
Previous Message | tanakalen | 2012-09-17 09:00:05 | BUG #7545: Unresponsive server with error log reporting: "poll() failed: Invalid argument" |