mirror of
https://github.com/postgrespro/pg_probackup.git
synced 2025-02-12 14:56:08 +02:00
Make regression tests more verbose
The tests now rely on --verbose to print out useful information in the logs that can be used for debugging purposes. In case of a failure in some of the tests an overall cleanup is not done, this is particularly useful for PGDATA which could still be used for extra failure analysis.
This commit is contained in:
parent
f94c5ab447
commit
04c4c7b865
@ -1,34 +1,27 @@
|
|||||||
\! bash sql/backup.sh
|
\! bash sql/backup.sh
|
||||||
###### BACKUP COMMAND TEST-0001 ######
|
###### BACKUP COMMAND TEST-0001 ######
|
||||||
###### full backup mode ######
|
###### full backup mode ######
|
||||||
NOTICE: pg_stop_backup complete, all required WAL segments have been archived
|
|
||||||
0
|
0
|
||||||
1
|
1
|
||||||
3
|
3
|
||||||
###### BACKUP COMMAND TEST-0002 ######
|
###### BACKUP COMMAND TEST-0002 ######
|
||||||
###### page-level backup mode ######
|
###### page-level backup mode ######
|
||||||
NOTICE: pg_stop_backup complete, all required WAL segments have been archived
|
|
||||||
0
|
0
|
||||||
2
|
2
|
||||||
6
|
6
|
||||||
###### BACKUP COMMAND TEST-0003 ######
|
###### BACKUP COMMAND TEST-0003 ######
|
||||||
###### full backup with smooth checkpoint ######
|
###### full backup with smooth checkpoint ######
|
||||||
NOTICE: pg_stop_backup complete, all required WAL segments have been archived
|
|
||||||
0
|
0
|
||||||
1
|
1
|
||||||
3
|
3
|
||||||
###### BACKUP COMMAND TEST-0004 ######
|
###### BACKUP COMMAND TEST-0004 ######
|
||||||
###### full backup with keep-data-generations and keep-data-days ######
|
###### full backup with keep-data-generations and keep-data-days ######
|
||||||
NOTICE: pg_stop_backup complete, all required WAL segments have been archived
|
|
||||||
0
|
0
|
||||||
NOTICE: pg_stop_backup complete, all required WAL segments have been archived
|
|
||||||
0
|
0
|
||||||
NOTICE: pg_stop_backup complete, all required WAL segments have been archived
|
|
||||||
0
|
0
|
||||||
The number of existing full backups validated is greater than 2.
|
The number of existing full backups validated is greater than 2.
|
||||||
OK. Let's try to test --keep-data-generations=1.
|
OK. Let's try to test --keep-data-generations=1.
|
||||||
9
|
9
|
||||||
NOTICE: pg_stop_backup complete, all required WAL segments have been archived
|
|
||||||
0
|
0
|
||||||
Number of remaining full backups validated: 2
|
Number of remaining full backups validated: 2
|
||||||
Number of deleted backups : 2
|
Number of deleted backups : 2
|
||||||
@ -36,8 +29,6 @@ Number of deleted backups : 2
|
|||||||
###### BACKUP COMMAND TEST-0005 ######
|
###### BACKUP COMMAND TEST-0005 ######
|
||||||
###### switch backup mode from page to full ######
|
###### switch backup mode from page to full ######
|
||||||
page-level backup without validated full backup
|
page-level backup without validated full backup
|
||||||
INFO: database backup start
|
|
||||||
ERROR: Valid full backup not found for differential backup. Either create a full backup or validate existing one.
|
|
||||||
10
|
10
|
||||||
0
|
0
|
||||||
0
|
0
|
||||||
|
@ -1,21 +1,17 @@
|
|||||||
\! bash sql/restore.sh
|
\! bash sql/restore.sh
|
||||||
###### RESTORE COMMAND TEST-0001 ######
|
###### RESTORE COMMAND TEST-0001 ######
|
||||||
###### recovery to latest from full backup ######
|
###### recovery to latest from full backup ######
|
||||||
NOTICE: pg_stop_backup complete, all required WAL segments have been archived
|
|
||||||
0
|
0
|
||||||
0
|
0
|
||||||
|
|
||||||
###### RESTORE COMMAND TEST-0002 ######
|
###### RESTORE COMMAND TEST-0002 ######
|
||||||
###### recovery to latest from full + page backups ######
|
###### recovery to latest from full + page backups ######
|
||||||
NOTICE: pg_stop_backup complete, all required WAL segments have been archived
|
|
||||||
0
|
0
|
||||||
NOTICE: pg_stop_backup complete, all required WAL segments have been archived
|
|
||||||
0
|
0
|
||||||
0
|
0
|
||||||
|
|
||||||
###### RESTORE COMMAND TEST-0003 ######
|
###### RESTORE COMMAND TEST-0003 ######
|
||||||
###### recovery to target timeline ######
|
###### recovery to target timeline ######
|
||||||
NOTICE: pg_stop_backup complete, all required WAL segments have been archived
|
|
||||||
0
|
0
|
||||||
0
|
0
|
||||||
0
|
0
|
||||||
@ -24,21 +20,17 @@ OK: recovery.conf has the given target timeline.
|
|||||||
|
|
||||||
###### RESTORE COMMAND TEST-0004 ######
|
###### RESTORE COMMAND TEST-0004 ######
|
||||||
###### recovery to target time ######
|
###### recovery to target time ######
|
||||||
NOTICE: pg_stop_backup complete, all required WAL segments have been archived
|
|
||||||
0
|
0
|
||||||
0
|
0
|
||||||
|
|
||||||
###### RESTORE COMMAND TEST-0005 ######
|
###### RESTORE COMMAND TEST-0005 ######
|
||||||
###### recovery to target XID ######
|
###### recovery to target XID ######
|
||||||
NOTICE: pg_stop_backup complete, all required WAL segments have been archived
|
|
||||||
0
|
0
|
||||||
0
|
0
|
||||||
OK: recovery-target-xid options works well.
|
OK: recovery-target-xid options works well.
|
||||||
|
|
||||||
###### RESTORE COMMAND TEST-0006 ######
|
###### RESTORE COMMAND TEST-0006 ######
|
||||||
###### recovery with target inclusive false ######
|
###### recovery with target inclusive false ######
|
||||||
NOTICE: pg_stop_backup complete, all required WAL segments have been archived
|
|
||||||
0
|
0
|
||||||
0
|
0
|
||||||
OK: recovery-target-inclusive=false works well.
|
OK: recovery-target-inclusive=false works well.
|
||||||
|
|
||||||
|
@ -11,16 +11,16 @@ init_backup
|
|||||||
|
|
||||||
echo '###### BACKUP COMMAND TEST-0001 ######'
|
echo '###### BACKUP COMMAND TEST-0001 ######'
|
||||||
echo '###### full backup mode ######'
|
echo '###### full backup mode ######'
|
||||||
pg_arman backup -B ${BACKUP_PATH} -b full -p ${TEST_PGPORT} -d postgres --quiet;echo $?
|
pg_arman backup -B ${BACKUP_PATH} -b full -p ${TEST_PGPORT} -d postgres --verbose > ${TEST_BASE}/TEST-0001-run.log 2>&1;echo $?
|
||||||
pg_arman validate -B ${BACKUP_PATH} --quiet
|
pg_arman validate -B ${BACKUP_PATH} --verbose >> ${TEST_BASE}/TEST-0001-run.log 2>&1
|
||||||
pg_arman show -B ${BACKUP_PATH} > ${TEST_BASE}/TEST-0001.log 2>&1
|
pg_arman show -B ${BACKUP_PATH} > ${TEST_BASE}/TEST-0001.log 2>&1
|
||||||
grep -c OK ${TEST_BASE}/TEST-0001.log
|
grep -c OK ${TEST_BASE}/TEST-0001.log
|
||||||
grep OK ${TEST_BASE}/TEST-0001.log | sed -e 's@[^-]@@g' | wc -c | sed 's/^ *//'
|
grep OK ${TEST_BASE}/TEST-0001.log | sed -e 's@[^-]@@g' | wc -c | sed 's/^ *//'
|
||||||
|
|
||||||
echo '###### BACKUP COMMAND TEST-0002 ######'
|
echo '###### BACKUP COMMAND TEST-0002 ######'
|
||||||
echo '###### page-level backup mode ######'
|
echo '###### page-level backup mode ######'
|
||||||
pg_arman backup -B ${BACKUP_PATH} -b page -p ${TEST_PGPORT} -d postgres --quiet;echo $?
|
pg_arman backup -B ${BACKUP_PATH} -b page -p ${TEST_PGPORT} -d postgres --verbose > ${TEST_BASE}/TEST-0002-run.log 2>&1;echo $?
|
||||||
pg_arman validate -B ${BACKUP_PATH} --quiet
|
pg_arman validate -B ${BACKUP_PATH} >> ${TEST_BASE}/TEST-0002-run.log 2>&1
|
||||||
pg_arman show -B ${BACKUP_PATH} > ${TEST_BASE}/TEST-0002.log 2>&1
|
pg_arman show -B ${BACKUP_PATH} > ${TEST_BASE}/TEST-0002.log 2>&1
|
||||||
grep -c OK ${TEST_BASE}/TEST-0002.log
|
grep -c OK ${TEST_BASE}/TEST-0002.log
|
||||||
grep OK ${TEST_BASE}/TEST-0002.log | sed -e 's@[^-]@@g' | wc -c | sed 's/^ *//'
|
grep OK ${TEST_BASE}/TEST-0002.log | sed -e 's@[^-]@@g' | wc -c | sed 's/^ *//'
|
||||||
@ -28,8 +28,8 @@ grep OK ${TEST_BASE}/TEST-0002.log | sed -e 's@[^-]@@g' | wc -c | sed 's/^ *//'
|
|||||||
echo '###### BACKUP COMMAND TEST-0003 ######'
|
echo '###### BACKUP COMMAND TEST-0003 ######'
|
||||||
echo '###### full backup with smooth checkpoint ######'
|
echo '###### full backup with smooth checkpoint ######'
|
||||||
init_catalog
|
init_catalog
|
||||||
pg_arman backup -B ${BACKUP_PATH} -b full -C -p ${TEST_PGPORT} -d postgres --quiet;echo $?
|
pg_arman backup -B ${BACKUP_PATH} -b full -C -p ${TEST_PGPORT} -d postgres --verbose > ${TEST_BASE}/TEST-0003-run.log 2>&1;echo $?
|
||||||
pg_arman validate -B ${BACKUP_PATH} --quiet
|
pg_arman validate -B ${BACKUP_PATH} >> ${TEST_BASE}/TEST-0003-run.log 2>&1
|
||||||
pg_arman show -B ${BACKUP_PATH} > ${TEST_BASE}/TEST-0003.log 2>&1
|
pg_arman show -B ${BACKUP_PATH} > ${TEST_BASE}/TEST-0003.log 2>&1
|
||||||
grep -c OK ${TEST_BASE}/TEST-0003.log
|
grep -c OK ${TEST_BASE}/TEST-0003.log
|
||||||
grep OK ${TEST_BASE}/TEST-0003.log | sed -e 's@[^-]@@g' | wc -c | sed 's/^ *//'
|
grep OK ${TEST_BASE}/TEST-0003.log | sed -e 's@[^-]@@g' | wc -c | sed 's/^ *//'
|
||||||
@ -37,10 +37,10 @@ grep OK ${TEST_BASE}/TEST-0003.log | sed -e 's@[^-]@@g' | wc -c | sed 's/^ *//'
|
|||||||
echo '###### BACKUP COMMAND TEST-0004 ######'
|
echo '###### BACKUP COMMAND TEST-0004 ######'
|
||||||
echo '###### full backup with keep-data-generations and keep-data-days ######'
|
echo '###### full backup with keep-data-generations and keep-data-days ######'
|
||||||
init_catalog
|
init_catalog
|
||||||
pg_arman backup -B ${BACKUP_PATH} -b full -p ${TEST_PGPORT} -d postgres --quiet;echo $?
|
pg_arman backup -B ${BACKUP_PATH} -b full -p ${TEST_PGPORT} -d postgres --verbose > ${TEST_BASE}/TEST-0004-run.log 2>&1;echo $?
|
||||||
pg_arman backup -B ${BACKUP_PATH} -b full -p ${TEST_PGPORT} -d postgres --quiet;echo $?
|
pg_arman backup -B ${BACKUP_PATH} -b full -p ${TEST_PGPORT} -d postgres --verbose >> ${TEST_BASE}/TEST-0004-run.log 2>&1;echo $?
|
||||||
pg_arman backup -B ${BACKUP_PATH} -b full -p ${TEST_PGPORT} -d postgres --quiet;echo $?
|
pg_arman backup -B ${BACKUP_PATH} -b full -p ${TEST_PGPORT} -d postgres --verbose >> ${TEST_BASE}/TEST-0004-run.log 2>&1;echo $?
|
||||||
pg_arman validate -B ${BACKUP_PATH} --quiet
|
pg_arman validate -B ${BACKUP_PATH} --verbose >> ${TEST_BASE}/TEST-0004-run.log 2>&1
|
||||||
pg_arman show -B ${BACKUP_PATH} > ${TEST_BASE}/TEST-0004-before.log 2>&1
|
pg_arman show -B ${BACKUP_PATH} > ${TEST_BASE}/TEST-0004-before.log 2>&1
|
||||||
NUM_OF_FULL_BACKUPS_BEFORE=`grep OK ${TEST_BASE}/TEST-0004-before.log | grep FULL | wc -l | sed 's/^ *//'`
|
NUM_OF_FULL_BACKUPS_BEFORE=`grep OK ${TEST_BASE}/TEST-0004-before.log | grep FULL | wc -l | sed 's/^ *//'`
|
||||||
if [ ${NUM_OF_FULL_BACKUPS_BEFORE} -gt 2 ] ; then
|
if [ ${NUM_OF_FULL_BACKUPS_BEFORE} -gt 2 ] ; then
|
||||||
@ -49,12 +49,14 @@ if [ ${NUM_OF_FULL_BACKUPS_BEFORE} -gt 2 ] ; then
|
|||||||
else
|
else
|
||||||
echo "The number of existing full backups validated is not greater than 2."
|
echo "The number of existing full backups validated is not greater than 2."
|
||||||
echo "NG. There was something wrong in preparation of this test."
|
echo "NG. There was something wrong in preparation of this test."
|
||||||
|
pg_ctl stop -m immediate -D ${PGDATA_PATH} > /dev/null 2>&1
|
||||||
|
exit 1
|
||||||
fi
|
fi
|
||||||
# The actual value of NUM_OF_FULL_BACKUPS_BEFORE can vary on env, so commented out as default.
|
# The actual value of NUM_OF_FULL_BACKUPS_BEFORE can vary on env, so commented out as default.
|
||||||
#echo "Number of existing full backups validated: ${NUM_OF_FULL_BACKUPS_BEFORE}"
|
#echo "Number of existing full backups validated: ${NUM_OF_FULL_BACKUPS_BEFORE}"
|
||||||
grep OK ${TEST_BASE}/TEST-0004-before.log | sed -e 's@[^-]@@g' | wc -c | sed 's/^ *//'
|
grep OK ${TEST_BASE}/TEST-0004-before.log | sed -e 's@[^-]@@g' | wc -c | sed 's/^ *//'
|
||||||
pg_arman backup -B ${BACKUP_PATH} -b full --keep-data-days=-1 --keep-data-generations=1 -p ${TEST_PGPORT} -d postgres --quiet;echo $?
|
pg_arman backup -B ${BACKUP_PATH} -b full --keep-data-days=-1 --keep-data-generations=1 -p ${TEST_PGPORT} -d postgres --verbose > ${TEST_BASE}/TEST-0005-run.log 2>&1;echo $?
|
||||||
pg_arman validate -B ${BACKUP_PATH} --quiet
|
pg_arman validate -B ${BACKUP_PATH} --verbose >> ${TEST_BASE}/TEST-0005-run.log 2>&1
|
||||||
pg_arman show --show-all -B ${BACKUP_PATH} > ${TEST_BASE}/TEST-0004-after.log 2>&1
|
pg_arman show --show-all -B ${BACKUP_PATH} > ${TEST_BASE}/TEST-0004-after.log 2>&1
|
||||||
NUM_OF_FULL_BACKUPS_AFTER=`grep OK ${TEST_BASE}/TEST-0004-after.log | grep FULL | wc -l | sed 's/^ *//'`
|
NUM_OF_FULL_BACKUPS_AFTER=`grep OK ${TEST_BASE}/TEST-0004-after.log | grep FULL | wc -l | sed 's/^ *//'`
|
||||||
echo "Number of remaining full backups validated: ${NUM_OF_FULL_BACKUPS_AFTER}"
|
echo "Number of remaining full backups validated: ${NUM_OF_FULL_BACKUPS_AFTER}"
|
||||||
@ -66,15 +68,15 @@ echo '###### BACKUP COMMAND TEST-0005 ######'
|
|||||||
echo '###### switch backup mode from page to full ######'
|
echo '###### switch backup mode from page to full ######'
|
||||||
init_catalog
|
init_catalog
|
||||||
echo 'page-level backup without validated full backup'
|
echo 'page-level backup without validated full backup'
|
||||||
pg_arman backup -B ${BACKUP_PATH} -b page -p ${TEST_PGPORT} -d postgres;echo $?
|
pg_arman backup -B ${BACKUP_PATH} -b page -p ${TEST_PGPORT} -d postgres --verbose > ${TEST_BASE}/TEST-0006-run.log 2>&1;echo $?
|
||||||
pg_arman validate -B ${BACKUP_PATH} --quiet
|
pg_arman validate -B ${BACKUP_PATH} --verbose >> ${TEST_BASE}/TEST-0006-run.log 2>&1
|
||||||
pg_arman show -B ${BACKUP_PATH} > ${TEST_BASE}/TEST-0005.log 2>&1
|
pg_arman show -B ${BACKUP_PATH} > ${TEST_BASE}/TEST-0005.log 2>&1
|
||||||
grep OK ${TEST_BASE}/TEST-0005.log | grep FULL | wc -l | sed 's/^ *//'
|
grep OK ${TEST_BASE}/TEST-0005.log | grep FULL | wc -l | sed 's/^ *//'
|
||||||
grep ERROR ${TEST_BASE}/TEST-0005.log | grep INCR | wc -l | sed 's/^ *//'
|
grep ERROR ${TEST_BASE}/TEST-0005.log | grep INCR | wc -l | sed 's/^ *//'
|
||||||
|
|
||||||
# cleanup
|
# cleanup
|
||||||
## clean up the temporal test data
|
## clean up the temporal test data
|
||||||
pg_ctl stop -m immediate > /dev/null 2>&1
|
pg_ctl stop -m immediate -D ${PGDATA_PATH} > /dev/null 2>&1
|
||||||
rm -fr ${PGDATA_PATH}
|
rm -fr ${PGDATA_PATH}
|
||||||
rm -fr ${BACKUP_PATH}
|
rm -fr ${BACKUP_PATH}
|
||||||
rm -fr ${ARCLOG_PATH}
|
rm -fr ${ARCLOG_PATH}
|
||||||
|
@ -30,10 +30,10 @@ init_backup
|
|||||||
pgbench_objs 0001
|
pgbench_objs 0001
|
||||||
pgbench -p ${TEST_PGPORT} -d pgbench > /dev/null 2>&1
|
pgbench -p ${TEST_PGPORT} -d pgbench > /dev/null 2>&1
|
||||||
psql --no-psqlrc -p ${TEST_PGPORT} -d pgbench -c "SELECT * FROM pgbench_branches;" > ${TEST_BASE}/TEST-0001-before.out
|
psql --no-psqlrc -p ${TEST_PGPORT} -d pgbench -c "SELECT * FROM pgbench_branches;" > ${TEST_BASE}/TEST-0001-before.out
|
||||||
pg_arman backup -B ${BACKUP_PATH} -b full -p ${TEST_PGPORT} -d postgres --quiet;echo $?
|
pg_arman backup -B ${BACKUP_PATH} -b full -p ${TEST_PGPORT} -d postgres --verbose > ${TEST_BASE}/TEST-0001-run.out 2>&1;echo $?
|
||||||
pg_arman validate -B ${BACKUP_PATH} --quiet
|
pg_arman validate -B ${BACKUP_PATH} --verbose >> ${TEST_BASE}/TEST-0001-run.out 2>&1
|
||||||
pg_ctl stop -m immediate > /dev/null 2>&1
|
pg_ctl stop -m immediate > /dev/null 2>&1
|
||||||
pg_arman restore -B ${BACKUP_PATH} --quiet;echo $?
|
pg_arman restore -B ${BACKUP_PATH} --verbose >> ${TEST_BASE}/TEST-0001-run.out 2>&1;echo $?
|
||||||
pg_ctl start -w -t 600 > /dev/null 2>&1
|
pg_ctl start -w -t 600 > /dev/null 2>&1
|
||||||
psql --no-psqlrc -p ${TEST_PGPORT} -d pgbench -c "SELECT * FROM pgbench_branches;" > ${TEST_BASE}/TEST-0001-after.out
|
psql --no-psqlrc -p ${TEST_PGPORT} -d pgbench -c "SELECT * FROM pgbench_branches;" > ${TEST_BASE}/TEST-0001-after.out
|
||||||
diff ${TEST_BASE}/TEST-0001-before.out ${TEST_BASE}/TEST-0001-after.out
|
diff ${TEST_BASE}/TEST-0001-before.out ${TEST_BASE}/TEST-0001-after.out
|
||||||
@ -43,14 +43,14 @@ echo '###### RESTORE COMMAND TEST-0002 ######'
|
|||||||
echo '###### recovery to latest from full + page backups ######'
|
echo '###### recovery to latest from full + page backups ######'
|
||||||
init_backup
|
init_backup
|
||||||
pgbench_objs 0002
|
pgbench_objs 0002
|
||||||
pg_arman backup -B ${BACKUP_PATH} -b full -p ${TEST_PGPORT} -d postgres --quiet;echo $?
|
pg_arman backup -B ${BACKUP_PATH} -b full -p ${TEST_PGPORT} -d postgres --verbose > ${TEST_BASE}/TEST-0002-run.out 2>&1;echo $?
|
||||||
pg_arman validate -B ${BACKUP_PATH} --quiet
|
pg_arman validate -B ${BACKUP_PATH} --verbose >> ${TEST_BASE}/TEST-0002-run.out 2>&1
|
||||||
pgbench -p ${TEST_PGPORT} -d pgbench > /dev/null 2>&1
|
pgbench -p ${TEST_PGPORT} -d pgbench > /dev/null 2>&1
|
||||||
pg_arman backup -B ${BACKUP_PATH} -b page -p ${TEST_PGPORT} -d postgres --quiet;echo $?
|
pg_arman backup -B ${BACKUP_PATH} -b page -p ${TEST_PGPORT} -d postgres --verbose >> ${TEST_BASE}/TEST-0002-run.out 2>&1;echo $?
|
||||||
pg_arman validate -B ${BACKUP_PATH} --quiet
|
pg_arman validate -B ${BACKUP_PATH} --verbose >> ${TEST_BASE}/TEST-0002-run.out 2>&1
|
||||||
psql --no-psqlrc -p ${TEST_PGPORT} -d pgbench -c "SELECT * FROM pgbench_branches;" > ${TEST_BASE}/TEST-0002-before.out
|
psql --no-psqlrc -p ${TEST_PGPORT} -d pgbench -c "SELECT * FROM pgbench_branches;" > ${TEST_BASE}/TEST-0002-before.out
|
||||||
pg_ctl stop -m immediate > /dev/null 2>&1
|
pg_ctl stop -m immediate > /dev/null 2>&1
|
||||||
pg_arman restore -B ${BACKUP_PATH} --quiet;echo $?
|
pg_arman restore -B ${BACKUP_PATH} --verbose >> ${TEST_BASE}/TEST-0002-run.out 2>&1;echo $?
|
||||||
pg_ctl start -w -t 600 > /dev/null 2>&1
|
pg_ctl start -w -t 600 > /dev/null 2>&1
|
||||||
psql --no-psqlrc -p ${TEST_PGPORT} -d pgbench -c "SELECT * FROM pgbench_branches;" > ${TEST_BASE}/TEST-0002-after.out
|
psql --no-psqlrc -p ${TEST_PGPORT} -d pgbench -c "SELECT * FROM pgbench_branches;" > ${TEST_BASE}/TEST-0002-after.out
|
||||||
diff ${TEST_BASE}/TEST-0002-before.out ${TEST_BASE}/TEST-0002-after.out
|
diff ${TEST_BASE}/TEST-0002-before.out ${TEST_BASE}/TEST-0002-after.out
|
||||||
@ -61,21 +61,23 @@ echo '###### recovery to target timeline ######'
|
|||||||
init_backup
|
init_backup
|
||||||
pgbench_objs 0003
|
pgbench_objs 0003
|
||||||
psql --no-psqlrc -p ${TEST_PGPORT} -d pgbench -c "SELECT * FROM pgbench_branches;" > ${TEST_BASE}/TEST-0003-before.out
|
psql --no-psqlrc -p ${TEST_PGPORT} -d pgbench -c "SELECT * FROM pgbench_branches;" > ${TEST_BASE}/TEST-0003-before.out
|
||||||
pg_arman backup -B ${BACKUP_PATH} -b full -p ${TEST_PGPORT} -d postgres --quiet;echo $?
|
pg_arman backup -B ${BACKUP_PATH} -b full -p ${TEST_PGPORT} -d postgres --verbose > ${TEST_BASE}/TEST-0003-run.out 2>&1;echo $?
|
||||||
pg_arman validate -B ${BACKUP_PATH} --quiet
|
pg_arman validate -B ${BACKUP_PATH} --verbose >> ${TEST_BASE}/TEST-0003-run.out 2>&1
|
||||||
TARGET_TLI=`pg_controldata | grep " TimeLineID:" | awk '{print $4}'`
|
TARGET_TLI=`pg_controldata | grep " TimeLineID:" | awk '{print $4}'`
|
||||||
pg_ctl stop -m immediate > /dev/null 2>&1
|
pg_ctl stop -m immediate > /dev/null 2>&1
|
||||||
pg_arman restore -B ${BACKUP_PATH} --quiet;echo $?
|
pg_arman restore -B ${BACKUP_PATH} --verbose >> ${TEST_BASE}/TEST-0003-run.out 2>&1;echo $?
|
||||||
pg_ctl start -w -t 600 > /dev/null 2>&1
|
pg_ctl start -w -t 600 > /dev/null 2>&1
|
||||||
pgbench -p ${TEST_PGPORT} -d pgbench > /dev/null 2>&1
|
pgbench -p ${TEST_PGPORT} -d pgbench > /dev/null 2>&1
|
||||||
pg_ctl stop -m immediate > /dev/null 2>&1
|
pg_ctl stop -m immediate > /dev/null 2>&1
|
||||||
pg_arman restore -B ${BACKUP_PATH} --recovery-target-timeline=${TARGET_TLI} --quiet;echo $?
|
pg_arman restore -B ${BACKUP_PATH} --recovery-target-timeline=${TARGET_TLI} --verbose >> ${TEST_BASE}/TEST-0003-run.out 2>&1;echo $?
|
||||||
echo "checking recovery.conf..."
|
echo "checking recovery.conf..."
|
||||||
TARGET_TLI_IN_RECOVERY_CONF=`grep "recovery_target_timeline = " ${PGDATA_PATH}/recovery.conf | awk '{print $3}' | sed -e "s/'//g"`
|
TARGET_TLI_IN_RECOVERY_CONF=`grep "recovery_target_timeline = " ${PGDATA_PATH}/recovery.conf | awk '{print $3}' | sed -e "s/'//g"`
|
||||||
if [ ${TARGET_TLI} = ${TARGET_TLI_IN_RECOVERY_CONF} ]; then
|
if [ ${TARGET_TLI} = ${TARGET_TLI_IN_RECOVERY_CONF} ]; then
|
||||||
echo 'OK: recovery.conf has the given target timeline.'
|
echo 'OK: recovery.conf has the given target timeline.'
|
||||||
else
|
else
|
||||||
echo 'NG: recovery.conf does not have the given target timeline.'
|
echo 'NG: recovery.conf does not have the given target timeline.'
|
||||||
|
pg_ctl stop -m immediate -D ${PGDATA_PATH}
|
||||||
|
exit 1
|
||||||
fi
|
fi
|
||||||
pg_ctl start -w -t 600 > /dev/null 2>&1
|
pg_ctl start -w -t 600 > /dev/null 2>&1
|
||||||
psql --no-psqlrc -p ${TEST_PGPORT} -d pgbench -c "SELECT * FROM pgbench_branches;" > ${TEST_BASE}/TEST-0003-after.out
|
psql --no-psqlrc -p ${TEST_PGPORT} -d pgbench -c "SELECT * FROM pgbench_branches;" > ${TEST_BASE}/TEST-0003-after.out
|
||||||
@ -88,12 +90,12 @@ init_backup
|
|||||||
pgbench_objs 0004
|
pgbench_objs 0004
|
||||||
pgbench -p ${TEST_PGPORT} -d pgbench > /dev/null 2>&1
|
pgbench -p ${TEST_PGPORT} -d pgbench > /dev/null 2>&1
|
||||||
psql --no-psqlrc -p ${TEST_PGPORT} -d pgbench -c "SELECT * FROM pgbench_branches;" > ${TEST_BASE}/TEST-0004-before.out
|
psql --no-psqlrc -p ${TEST_PGPORT} -d pgbench -c "SELECT * FROM pgbench_branches;" > ${TEST_BASE}/TEST-0004-before.out
|
||||||
pg_arman backup -B ${BACKUP_PATH} -b full -p ${TEST_PGPORT} -d postgres --quiet;echo $?
|
pg_arman backup -B ${BACKUP_PATH} -b full -p ${TEST_PGPORT} -d postgres --verbose > ${TEST_BASE}/TEST-0004-run.out 2>&1;echo $?
|
||||||
pg_arman validate -B ${BACKUP_PATH} --quiet
|
pg_arman validate -B ${BACKUP_PATH} --verbose >> ${TEST_BASE}/TEST-0004-run.out 2>&1
|
||||||
TARGET_TIME=`date +"%Y-%m-%d %H:%M:%S"`
|
TARGET_TIME=`date +"%Y-%m-%d %H:%M:%S"`
|
||||||
pgbench -p ${TEST_PGPORT} -d pgbench > /dev/null 2>&1
|
pgbench -p ${TEST_PGPORT} -d pgbench > /dev/null 2>&1
|
||||||
pg_ctl stop -m immediate > /dev/null 2>&1
|
pg_ctl stop -m immediate > /dev/null 2>&1
|
||||||
pg_arman restore -B ${BACKUP_PATH} --recovery-target-time="${TARGET_TIME}" --quiet;echo $?
|
pg_arman restore -B ${BACKUP_PATH} --recovery-target-time="${TARGET_TIME}" --verbose >> ${TEST_BASE}/TEST-0004-run.out 2>&1;echo $?
|
||||||
pg_ctl start -w -t 600 > /dev/null 2>&1
|
pg_ctl start -w -t 600 > /dev/null 2>&1
|
||||||
psql --no-psqlrc -p ${TEST_PGPORT} -d pgbench -c "SELECT * FROM pgbench_branches;" > ${TEST_BASE}/TEST-0004-after.out
|
psql --no-psqlrc -p ${TEST_PGPORT} -d pgbench -c "SELECT * FROM pgbench_branches;" > ${TEST_BASE}/TEST-0004-after.out
|
||||||
diff ${TEST_BASE}/TEST-0004-before.out ${TEST_BASE}/TEST-0004-after.out
|
diff ${TEST_BASE}/TEST-0004-before.out ${TEST_BASE}/TEST-0004-after.out
|
||||||
@ -104,8 +106,8 @@ echo '###### recovery to target XID ######'
|
|||||||
init_backup
|
init_backup
|
||||||
pgbench_objs 0005
|
pgbench_objs 0005
|
||||||
psql --no-psqlrc -p ${TEST_PGPORT} -d pgbench -c "CREATE TABLE tbl0005 (a text);" > /dev/null 2>&1
|
psql --no-psqlrc -p ${TEST_PGPORT} -d pgbench -c "CREATE TABLE tbl0005 (a text);" > /dev/null 2>&1
|
||||||
pg_arman backup -B ${BACKUP_PATH} -b full -p ${TEST_PGPORT} -d postgres --quiet;echo $?
|
pg_arman backup -B ${BACKUP_PATH} -b full -p ${TEST_PGPORT} -d postgres --verbose > ${TEST_BASE}/TEST-0005-run.out 2>&1;echo $?
|
||||||
pg_arman validate -B ${BACKUP_PATH} --quiet
|
pg_arman validate -B ${BACKUP_PATH} --verbose >> ${TEST_BASE}/TEST-0005-run.out 2>&1
|
||||||
pgbench -p ${TEST_PGPORT} pgbench > /dev/null 2>&1
|
pgbench -p ${TEST_PGPORT} pgbench > /dev/null 2>&1
|
||||||
psql --no-psqlrc -p ${TEST_PGPORT} -d pgbench -c "SELECT * FROM pgbench_branches;" > ${TEST_BASE}/TEST-0005-before.out
|
psql --no-psqlrc -p ${TEST_PGPORT} -d pgbench -c "SELECT * FROM pgbench_branches;" > ${TEST_BASE}/TEST-0005-before.out
|
||||||
TARGET_XID=`psql --no-psqlrc -p ${TEST_PGPORT} -d pgbench -tAq -c "INSERT INTO tbl0005 VALUES ('inserted') RETURNING (xmin);"`
|
TARGET_XID=`psql --no-psqlrc -p ${TEST_PGPORT} -d pgbench -tAq -c "INSERT INTO tbl0005 VALUES ('inserted') RETURNING (xmin);"`
|
||||||
@ -116,7 +118,7 @@ pgbench -p ${TEST_PGPORT} -d pgbench > /dev/null 2>&1
|
|||||||
psql --no-psqlrc -p ${TEST_PGPORT} -d pgbench -c 'SELECT pg_switch_xlog()' > /dev/null 2>&1
|
psql --no-psqlrc -p ${TEST_PGPORT} -d pgbench -c 'SELECT pg_switch_xlog()' > /dev/null 2>&1
|
||||||
# Fast mode is used to ensure that the last segment is archived as well.
|
# Fast mode is used to ensure that the last segment is archived as well.
|
||||||
pg_ctl stop -m fast > /dev/null 2>&1
|
pg_ctl stop -m fast > /dev/null 2>&1
|
||||||
pg_arman restore -B ${BACKUP_PATH} --recovery-target-xid="${TARGET_XID}" --quiet;echo $?
|
pg_arman restore -B ${BACKUP_PATH} --recovery-target-xid="${TARGET_XID}" --verbose >> ${TEST_BASE}/TEST-0005-run.out 2>&1;echo $?
|
||||||
pg_ctl start -w -t 600 > /dev/null 2>&1
|
pg_ctl start -w -t 600 > /dev/null 2>&1
|
||||||
psql --no-psqlrc -p ${TEST_PGPORT} -d pgbench -c "SELECT * FROM pgbench_branches;" > ${TEST_BASE}/TEST-0005-after.out
|
psql --no-psqlrc -p ${TEST_PGPORT} -d pgbench -c "SELECT * FROM pgbench_branches;" > ${TEST_BASE}/TEST-0005-after.out
|
||||||
psql --no-psqlrc -p ${TEST_PGPORT} -d pgbench -c "SELECT * FROM tbl0005;" > ${TEST_BASE}/TEST-0005-tbl.dump
|
psql --no-psqlrc -p ${TEST_PGPORT} -d pgbench -c "SELECT * FROM tbl0005;" > ${TEST_BASE}/TEST-0005-tbl.dump
|
||||||
@ -125,6 +127,8 @@ if grep "inserted" ${TEST_BASE}/TEST-0005-tbl.dump > /dev/null ; then
|
|||||||
echo 'OK: recovery-target-xid options works well.'
|
echo 'OK: recovery-target-xid options works well.'
|
||||||
else
|
else
|
||||||
echo 'NG: recovery-target-xid options does not work well.'
|
echo 'NG: recovery-target-xid options does not work well.'
|
||||||
|
pg_ctl stop -m immediate -D ${PGDATA_PATH} > /dev/null 2>&1
|
||||||
|
exit 1
|
||||||
fi
|
fi
|
||||||
echo ''
|
echo ''
|
||||||
|
|
||||||
@ -133,8 +137,8 @@ echo '###### recovery with target inclusive false ######'
|
|||||||
init_backup
|
init_backup
|
||||||
pgbench_objs 0006
|
pgbench_objs 0006
|
||||||
psql --no-psqlrc -p ${TEST_PGPORT} -d pgbench -c "CREATE TABLE tbl0006 (a text);" > /dev/null 2>&1
|
psql --no-psqlrc -p ${TEST_PGPORT} -d pgbench -c "CREATE TABLE tbl0006 (a text);" > /dev/null 2>&1
|
||||||
pg_arman backup -B ${BACKUP_PATH} -b full -p ${TEST_PGPORT} -d postgres --quiet;echo $?
|
pg_arman backup -B ${BACKUP_PATH} -b full -p ${TEST_PGPORT} -d postgres --verbose > ${TEST_BASE}/TEST-0006-run.out 2>&1;echo $?
|
||||||
pg_arman validate -B ${BACKUP_PATH} --quiet
|
pg_arman validate -B ${BACKUP_PATH} --verbose >> ${TEST_BASE}/TEST-0003-run.out 2>&1
|
||||||
pgbench -p ${TEST_PGPORT} pgbench > /dev/null 2>&1
|
pgbench -p ${TEST_PGPORT} pgbench > /dev/null 2>&1
|
||||||
psql --no-psqlrc -p ${TEST_PGPORT} -d pgbench -c "SELECT * FROM pgbench_branches;" > ${TEST_BASE}/TEST-0006-before.out
|
psql --no-psqlrc -p ${TEST_PGPORT} -d pgbench -c "SELECT * FROM pgbench_branches;" > ${TEST_BASE}/TEST-0006-before.out
|
||||||
TARGET_XID=`psql --no-psqlrc -p ${TEST_PGPORT} -d pgbench -tAq -c "INSERT INTO tbl0006 VALUES ('inserted') RETURNING (xmin);"`
|
TARGET_XID=`psql --no-psqlrc -p ${TEST_PGPORT} -d pgbench -tAq -c "INSERT INTO tbl0006 VALUES ('inserted') RETURNING (xmin);"`
|
||||||
@ -145,7 +149,7 @@ pgbench -p ${TEST_PGPORT} -d pgbench > /dev/null 2>&1
|
|||||||
psql --no-psqlrc -p ${TEST_PGPORT} -d pgbench -c 'SELECT pg_switch_xlog()' > /dev/null 2>&1
|
psql --no-psqlrc -p ${TEST_PGPORT} -d pgbench -c 'SELECT pg_switch_xlog()' > /dev/null 2>&1
|
||||||
# Fast mode is used to ensure that the last segment is archived as well.
|
# Fast mode is used to ensure that the last segment is archived as well.
|
||||||
pg_ctl stop -m fast > /dev/null 2>&1
|
pg_ctl stop -m fast > /dev/null 2>&1
|
||||||
pg_arman restore -B ${BACKUP_PATH} --recovery-target-xid="${TARGET_XID}" --recovery-target-inclusive=false --quiet;echo $?
|
pg_arman restore -B ${BACKUP_PATH} --recovery-target-xid="${TARGET_XID}" --recovery-target-inclusive=false --verbose >> ${TEST_BASE}/TEST-0006-run.out 2>&1;echo $?
|
||||||
pg_ctl start -w -t 600 > /dev/null 2>&1
|
pg_ctl start -w -t 600 > /dev/null 2>&1
|
||||||
psql --no-psqlrc -p ${TEST_PGPORT} -d pgbench -c "SELECT * FROM pgbench_branches;" > ${TEST_BASE}/TEST-0006-after.out
|
psql --no-psqlrc -p ${TEST_PGPORT} -d pgbench -c "SELECT * FROM pgbench_branches;" > ${TEST_BASE}/TEST-0006-after.out
|
||||||
psql --no-psqlrc -p ${TEST_PGPORT} -d pgbench -c "SELECT * FROM tbl0006;" > ${TEST_BASE}/TEST-0006-tbl.dump
|
psql --no-psqlrc -p ${TEST_PGPORT} -d pgbench -c "SELECT * FROM tbl0006;" > ${TEST_BASE}/TEST-0006-tbl.dump
|
||||||
@ -154,6 +158,8 @@ if grep "inserted" ${TEST_BASE}/TEST-0006-tbl.dump > /dev/null ; then
|
|||||||
echo 'NG: recovery-target-inclusive=false does not work well.'
|
echo 'NG: recovery-target-inclusive=false does not work well.'
|
||||||
else
|
else
|
||||||
echo 'OK: recovery-target-inclusive=false works well.'
|
echo 'OK: recovery-target-inclusive=false works well.'
|
||||||
|
pg_ctl stop -m immediate -D ${PGDATA_PATH} > /dev/null 2>&1
|
||||||
|
exit 1
|
||||||
fi
|
fi
|
||||||
echo ''
|
echo ''
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user