Hi Marco, 2015-01-27 19:04 GMT+01:00 Marco Nenciarini <marco.nenciar...@2ndquadrant.it >:
> I've done some test and it looks like that FSM nodes always have > InvalidXLogRecPtr as LSN. > > Ive updated the patch to always include files if all their pages have > LSN == InvalidXLogRecPtr > > Updated patch v7 attached. > > Regards, > Marco > > -- > Marco Nenciarini - 2ndQuadrant Italy > PostgreSQL Training, Services and Support > marco.nenciar...@2ndquadrant.it | www.2ndQuadrant.it > I've tried again to replay a new test of the incremental backup introducing a new tablespace after a base backup, considering the version 7 of the patch and the new version of the restore script attached in http://www.postgresql.org/message-id/54c7cdad.6060...@2ndquadrant.it: # define here your work dir WORK_DIR='/home/gbroccolo/pgsql' # preliminary steps rm -rf /tmp/data /tmp/tbls tbls/ backups/ # create a test db and a backup repository psql -c "DROP DATABASE IF EXISTS pgbench" psql -c "CREATE DATABASE pgbench" pgbench -U postgres -i -s 5 -F 80 pgbench mkdir -p backups # a first base backup with pg_basebackup BASE=$(mkdir -vp backups/$(date '+%d%m%y%H%M') | awk -F'[’‘]' '{print $2}') echo "start a base backup: $BASE" mkdir -vp $BASE/data pg_basebackup -v -F p -D $BASE/data -x -c fast # creation of a new tablespace, alter the table "pgbench_accounts" to set the new tablespace mkdir -p $WORK_DIR/tbls CREATE_CMD="CREATE TABLESPACE tbls LOCATION '$WORK_DIR/tbls'" psql -c "$CREATE_CMD" psql -c "ALTER TABLE pgbench_accounts SET TABLESPACE tbls" pgbench # Doing some work on the database pgbench -U postgres -T 120 pgbench # a second incremental backup with pg_basebackup specifying the new location for the tablespace through the tablespace mapping INCREMENTAL=$(mkdir -vp backups/$(date '+%d%m%y%H%M') | awk -F'[’‘]' '{print $2}') echo "start an incremental backup: $INCREMENTAL" mkdir -vp $INCREMENTAL/data $INCREMENTAL/tbls pg_basebackup -v -F p -D $INCREMENTAL/data -x -I $BASE/data -T $WORK_DIR/tbls=$WORK_DIR/$INCREMENTAL/tbls -c fast # restore the database ./pg_restorebackup.py -T $WORK_DIR/$INCREMENTAL/tbls=/tmp/tbls /tmp/data $BASE/data $INCREMENTAL/data chmod 0700 /tmp/data/ echo "port=5555" >> /tmp/data/postgresql.conf pg_ctl -D /tmp/data start now the restore works fine and pointing to tablespaces are preserved also in the restored instance: gbroccolo@arnold:~/pgsql (master %)$ psql -c "\db+" List of tablespaces Name | Owner | Location | Access privileges | Options | Size | Description ------------+----------+----------------------------+-------------------+---------+--------+------------- pg_default | postgres | | | | 37 MB | pg_global | postgres | | | | 437 kB | tbls | postgres | /home/gbroccolo/pgsql/tbls | | | 80 MB | (3 rows) gbroccolo@arnold:~/pgsql (master %)$ psql -p 5555 -c "\db+" List of tablespaces Name | Owner | Location | Access privileges | Options | Size | Description ------------+----------+-----------+-------------------+---------+--------+------------- pg_default | postgres | | | | 37 MB | pg_global | postgres | | | | 437 kB | tbls | postgres | /tmp/tbls | | | 80 MB | (3 rows) Thanks Marco for your reply. Giuseppe. -- Giuseppe Broccolo - 2ndQuadrant Italy PostgreSQL Training, Services and Support giuseppe.brocc...@2ndquadrant.it | www.2ndQuadrant.it