2016-06-02 11:10:24 -04:00
{
"co6" : {
"all" : {
"user-guide" : [
{
"key" : {
2017-06-12 11:36:00 -04:00
"image" : "pgbackrest/test:co6-s3-server",
"name" : "demo-bucket.s3.amazonaws.com",
"os" : "co6",
"user" : "root"
},
"type" : "host",
"value" : {
"ip" : "172.17.0.2"
}
},
{
"key" : {
"image" : "pgbackrest/test:co6-db-9.4-doc",
2016-06-02 11:10:24 -04:00
"mount" : "/backrest:/backrest",
"name" : "db-master",
"os" : "co6",
2017-04-12 19:17:39 -04:00
"user" : "ubuntu"
2016-06-02 11:10:24 -04:00
},
"type" : "host",
"value" : {
2017-06-12 11:36:00 -04:00
"ip" : "172.17.0.3"
2016-06-02 11:10:24 -04:00
}
},
{
"key" : {
"cmd" : [
2016-07-02 10:22:52 -04:00
"sudo yum install perl perl-Time-HiRes perl-parent perl-JSON \\",
2017-06-12 11:36:00 -04:00
" perl-Digest-SHA perl-DBD-Pg perl-XML-LibXML perl-IO-Socket-SSL"
2016-06-02 11:10:24 -04:00
],
2016-07-02 10:22:52 -04:00
"cmd-extra" : "-y",
2016-06-02 11:10:24 -04:00
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
2016-07-02 10:22:52 -04:00
"sudo rm -f /usr/bin/pgbackrest"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo rm -f /usr/bin/pg_backrest"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo rm -rf /usr/lib/perl5/BackRest"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo rm -rf /usr/share/perl5/BackRest"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo rm -rf /usr/lib/perl5/pgBackRest"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo rm -rf /usr/share/perl5/pgBackRest"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
2017-06-12 11:36:00 -04:00
"sudo cp -r /root/pgbackrest-release-1.19/lib/pgBackRest \\",
2016-06-02 11:10:24 -04:00
" /usr/share/perl5"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo find /usr/share/perl5/pgBackRest -type f -exec chmod 644 {} +"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo find /usr/share/perl5/pgBackRest -type d -exec chmod 755 {} +"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
2017-06-12 11:36:00 -04:00
"sudo cp /root/pgbackrest-release-1.19/bin/pgbackrest /usr/bin/pgbackrest"
2016-06-02 11:10:24 -04:00
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo chmod 755 /usr/bin/pgbackrest"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo mkdir -m 770 /var/log/pgbackrest"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo chown postgres:postgres /var/log/pgbackrest"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest"
],
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-06-12 11:36:00 -04:00
"pgBackRest 1.19 - General help",
2016-06-02 11:10:24 -04:00
"",
"Usage:",
" pgbackrest [options] [command]",
"",
"Commands:",
2017-04-12 19:17:39 -04:00
" archive-get Get a WAL segment from the archive.",
" archive-push Push a WAL segment to the archive.",
" backup Backup a database cluster.",
" check Check the configuration.",
" expire Expire backups that exceed retention.",
" help Get help.",
" info Retrieve information about backups.",
" restore Restore a database cluster.",
" stanza-create Create the required stanza data.",
" stanza-upgrade Upgrade a stanza.",
" start Allow pgBackRest processes to run.",
" stop Stop pgBackRest processes from running.",
" version Get version.",
2016-06-02 11:10:24 -04:00
"",
"Use 'pgbackrest help [command]' for more information."
]
}
},
{
"key" : {
"cmd" : [
"sudo service postgresql-9.4 initdb"
],
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
"Initializing database: [ OK ]\r"
]
}
},
{
"key" : {
"file" : "/var/lib/pgsql/9.4/data/postgresql.conf",
"host" : "db-master",
"option" : {
"listen_addresses" : {
"value" : "'*'"
}
}
},
"type" : "cfg-postgresql",
"value" : {
"config" : [
"listen_addresses = '*'"
]
}
},
{
"key" : {
"file" : "/var/lib/pgsql/9.4/data/postgresql.conf",
"host" : "db-master",
"option" : {
"log_line_prefix" : {
"value" : "''"
}
}
},
"type" : "cfg-postgresql",
"value" : {
"config" : [
"listen_addresses = '*'",
"log_line_prefix = ''"
]
}
},
{
"key" : {
"file" : "/var/lib/pgsql/9.4/data/postgresql.conf",
"host" : "db-master",
"option" : {
"log_filename" : {
"value" : "'postgresql.log'"
}
}
},
"type" : "cfg-postgresql",
"value" : {
"config" : [
"listen_addresses = '*'",
"log_filename = 'postgresql.log'",
"log_line_prefix = ''"
]
}
},
{
"key" : {
"file" : "/etc/pgbackrest.conf",
"host" : "db-master",
"option" : {
"demo" : {
"db-path" : {
"value" : "/var/lib/pgsql/9.4/data"
}
2016-10-10 17:35:58 -04:00
},
"global" : {
"log-level-stderr" : {
"value" : "off"
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-05 20:23:03 -05:00
},
"log-timestamp" : {
"value" : "n"
2016-10-10 17:35:58 -04:00
}
2016-06-02 11:10:24 -04:00
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
"db-path=/var/lib/pgsql/9.4/data"
]
}
},
{
"key" : {
"cmd" : [
"sudo mkdir /var/lib/pgbackrest"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo chmod 750 /var/lib/pgbackrest"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo chown postgres:postgres /var/lib/pgbackrest"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"file" : "/etc/pgbackrest.conf",
"host" : "db-master",
"option" : {
"global" : {
"repo-path" : {
"value" : "/var/lib/pgbackrest"
}
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
"db-path=/var/lib/pgsql/9.4/data",
"",
"[global]",
"repo-path=/var/lib/pgbackrest"
]
}
},
{
"key" : {
"file" : "/var/lib/pgsql/9.4/data/postgresql.conf",
"host" : "db-master",
"option" : {
"archive_command" : {
"value" : "'pgbackrest --stanza=demo archive-push %p'"
},
"archive_mode" : {
"value" : "on"
},
"max_wal_senders" : {
"value" : "3"
},
"wal_level" : {
"value" : "hot_standby"
}
}
},
"type" : "cfg-postgresql",
"value" : {
"config" : [
"archive_command = 'pgbackrest --stanza=demo archive-push %p'",
"archive_mode = on",
"listen_addresses = '*'",
"log_filename = 'postgresql.log'",
"log_line_prefix = ''",
"max_wal_senders = 3",
"wal_level = hot_standby"
]
}
},
{
"key" : {
"cmd" : [
"sudo service postgresql-9.4 restart"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres sleep 1"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
v1.12: Page Checksums, Configuration, and Bug Fixes
IMPORTANT NOTE: In prior releases it was possible to specify options on the command-line that were invalid for the current command without getting an error. An error will now be generated for invalid options so it is important to carefully check command-line options in your environment to prevent disruption.
Bug Fixes:
* Fixed an issue where options that were invalid for the specified command could be provided on the command-line without generating an error. The options were ignored and did not cause any change in behavior, but it did lead to some confusion. Invalid options will now generate an error. (Reported by Nikhilchandra Kulkarni.)
* Fixed an issue where internal symlinks were not being created for tablespaces in the repository. This issue was only apparent when trying to bring up clusters in-place manually using filesystem snapshots and did not affect normal backup and restore.
* Fixed an issue that prevented errors from being output to the console before the logging system was initialized, i.e. while parsing options. Error codes were still being returned accurately so this would not have made a process look like it succeeded when it did not. (Reported by Adrian Vondendriesch.)
* Fixed an issue where the db-port option specified on the backup server would not be properly passed to the remote unless it was from the first configured database. (Reported by Michael Vitale.)
Features:
* Added the --checksum-page option to allow pgBackRest to validate page checksums in data files when checksums are enabled on PostgreSQL >= 9.3. Note that this functionality requires a C library which may not initially be available in OS packages. The option will automatically be enabled when the library is present and checksums are enabled on the cluster. (Suggested by Stephen Frost.)
* Added the --repo-link option to allow internal symlinks to be suppressed when the repository is located on a filesystem that does not support symlinks. This does not affect any pgBackRest functionality, but the convenience link latest will not be created and neither will internal tablespace symlinks, which will affect the ability to bring up clusters in-place manually using filesystem snapshots.
* Added the --repo-sync option to allow directory syncs in the repository to be disabled for file systems that do not support them, e.g. NTFS.
* Added a predictable log entry to signal that a command has completed successfully. For example a backup ends successfully with: INFO: backup command end: completed successfully. (Suggested by Jens Wilke.)
Refactoring:
* Abstracted code to determine which database cluster is the master and which are standbys. (Contributed by Cynthia Shang.)
* Improved consistency and flexibility of the protocol layer by using JSON for all messages.
* File copy protocol now accepts a function that can do additional processing on the copy buffers and return a result to the calling process.
* Improved IO->bufferRead to always return requested number of bytes until EOF.
* For simplicity, the pg_control file is now copied with the rest of the files instead of by itself of at the end of the process. The backup command does not require this behavior and the restore copies to a temporary file which is renamed at the end of the restore.
* Simplified the result hash of File->manifest(), Db->tablespaceMapGet(), and Db->databaseMapGet().
* Improved errors returned from child processes by removing redundant error level and code.
* Code cleanup in preparation for improved stanza-create command. (Contributed by Cynthia Shang.)
* Improved parameter/result logging in debug/trace functions.
2016-12-12 19:18:27 -05:00
{
"key" : {
"file" : "/etc/pgbackrest.conf",
"host" : "db-master",
"option" : {
"global" : {
"retention-full" : {
"value" : "2"
}
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
"db-path=/var/lib/pgsql/9.4/data",
"",
"[global]",
"repo-path=/var/lib/pgbackrest",
"retention-full=2"
]
}
},
2016-11-08 10:47:47 +00:00
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --log-level-console=info stanza-create"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-05 20:23:03 -05:00
"completed successfully"
2016-11-08 10:47:47 +00:00
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-06-12 11:36:00 -04:00
"P00 INFO: stanza-create command begin 1.19: --db-path=/var/lib/pgsql/9.4/data --log-level-console=info --no-log-timestamp --repo-path=/var/lib/pgbackrest --stanza=demo",
v1.12: Page Checksums, Configuration, and Bug Fixes
IMPORTANT NOTE: In prior releases it was possible to specify options on the command-line that were invalid for the current command without getting an error. An error will now be generated for invalid options so it is important to carefully check command-line options in your environment to prevent disruption.
Bug Fixes:
* Fixed an issue where options that were invalid for the specified command could be provided on the command-line without generating an error. The options were ignored and did not cause any change in behavior, but it did lead to some confusion. Invalid options will now generate an error. (Reported by Nikhilchandra Kulkarni.)
* Fixed an issue where internal symlinks were not being created for tablespaces in the repository. This issue was only apparent when trying to bring up clusters in-place manually using filesystem snapshots and did not affect normal backup and restore.
* Fixed an issue that prevented errors from being output to the console before the logging system was initialized, i.e. while parsing options. Error codes were still being returned accurately so this would not have made a process look like it succeeded when it did not. (Reported by Adrian Vondendriesch.)
* Fixed an issue where the db-port option specified on the backup server would not be properly passed to the remote unless it was from the first configured database. (Reported by Michael Vitale.)
Features:
* Added the --checksum-page option to allow pgBackRest to validate page checksums in data files when checksums are enabled on PostgreSQL >= 9.3. Note that this functionality requires a C library which may not initially be available in OS packages. The option will automatically be enabled when the library is present and checksums are enabled on the cluster. (Suggested by Stephen Frost.)
* Added the --repo-link option to allow internal symlinks to be suppressed when the repository is located on a filesystem that does not support symlinks. This does not affect any pgBackRest functionality, but the convenience link latest will not be created and neither will internal tablespace symlinks, which will affect the ability to bring up clusters in-place manually using filesystem snapshots.
* Added the --repo-sync option to allow directory syncs in the repository to be disabled for file systems that do not support them, e.g. NTFS.
* Added a predictable log entry to signal that a command has completed successfully. For example a backup ends successfully with: INFO: backup command end: completed successfully. (Suggested by Jens Wilke.)
Refactoring:
* Abstracted code to determine which database cluster is the master and which are standbys. (Contributed by Cynthia Shang.)
* Improved consistency and flexibility of the protocol layer by using JSON for all messages.
* File copy protocol now accepts a function that can do additional processing on the copy buffers and return a result to the calling process.
* Improved IO->bufferRead to always return requested number of bytes until EOF.
* For simplicity, the pg_control file is now copied with the rest of the files instead of by itself of at the end of the process. The backup command does not require this behavior and the restore copies to a temporary file which is renamed at the end of the restore.
* Simplified the result hash of File->manifest(), Db->tablespaceMapGet(), and Db->databaseMapGet().
* Improved errors returned from child processes by removing redundant error level and code.
* Code cleanup in preparation for improved stanza-create command. (Contributed by Cynthia Shang.)
* Improved parameter/result logging in debug/trace functions.
2016-12-12 19:18:27 -05:00
"P00 INFO: stanza-create command end: completed successfully"
2016-11-08 10:47:47 +00:00
]
}
},
2016-07-02 10:22:52 -04:00
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --log-level-console=info check"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
" successfully stored in the archive at "
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-06-12 11:36:00 -04:00
"P00 INFO: check command begin 1.19: --db-path=/var/lib/pgsql/9.4/data --log-level-console=info --log-level-stderr=off --no-log-timestamp --repo-path=/var/lib/pgbackrest --stanza=demo",
"P00 INFO: WAL segment 000000010000000000000001 successfully stored in the archive at '/var/lib/pgbackrest/archive/demo/9.4-1/0000000100000000/000000010000000000000001-066f468b28f36feab8e0e74d1b0fac042f147f83.gz'",
v1.12: Page Checksums, Configuration, and Bug Fixes
IMPORTANT NOTE: In prior releases it was possible to specify options on the command-line that were invalid for the current command without getting an error. An error will now be generated for invalid options so it is important to carefully check command-line options in your environment to prevent disruption.
Bug Fixes:
* Fixed an issue where options that were invalid for the specified command could be provided on the command-line without generating an error. The options were ignored and did not cause any change in behavior, but it did lead to some confusion. Invalid options will now generate an error. (Reported by Nikhilchandra Kulkarni.)
* Fixed an issue where internal symlinks were not being created for tablespaces in the repository. This issue was only apparent when trying to bring up clusters in-place manually using filesystem snapshots and did not affect normal backup and restore.
* Fixed an issue that prevented errors from being output to the console before the logging system was initialized, i.e. while parsing options. Error codes were still being returned accurately so this would not have made a process look like it succeeded when it did not. (Reported by Adrian Vondendriesch.)
* Fixed an issue where the db-port option specified on the backup server would not be properly passed to the remote unless it was from the first configured database. (Reported by Michael Vitale.)
Features:
* Added the --checksum-page option to allow pgBackRest to validate page checksums in data files when checksums are enabled on PostgreSQL >= 9.3. Note that this functionality requires a C library which may not initially be available in OS packages. The option will automatically be enabled when the library is present and checksums are enabled on the cluster. (Suggested by Stephen Frost.)
* Added the --repo-link option to allow internal symlinks to be suppressed when the repository is located on a filesystem that does not support symlinks. This does not affect any pgBackRest functionality, but the convenience link latest will not be created and neither will internal tablespace symlinks, which will affect the ability to bring up clusters in-place manually using filesystem snapshots.
* Added the --repo-sync option to allow directory syncs in the repository to be disabled for file systems that do not support them, e.g. NTFS.
* Added a predictable log entry to signal that a command has completed successfully. For example a backup ends successfully with: INFO: backup command end: completed successfully. (Suggested by Jens Wilke.)
Refactoring:
* Abstracted code to determine which database cluster is the master and which are standbys. (Contributed by Cynthia Shang.)
* Improved consistency and flexibility of the protocol layer by using JSON for all messages.
* File copy protocol now accepts a function that can do additional processing on the copy buffers and return a result to the calling process.
* Improved IO->bufferRead to always return requested number of bytes until EOF.
* For simplicity, the pg_control file is now copied with the rest of the files instead of by itself of at the end of the process. The backup command does not require this behavior and the restore copies to a temporary file which is renamed at the end of the restore.
* Simplified the result hash of File->manifest(), Db->tablespaceMapGet(), and Db->databaseMapGet().
* Improved errors returned from child processes by removing redundant error level and code.
* Code cleanup in preparation for improved stanza-create command. (Contributed by Cynthia Shang.)
* Improved parameter/result logging in debug/trace functions.
2016-12-12 19:18:27 -05:00
"P00 INFO: check command end: completed successfully"
2016-07-02 10:22:52 -04:00
]
}
},
2016-06-02 11:10:24 -04:00
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo \\",
" --log-level-console=info backup"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"no prior backup exists|full backup size"
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-06-12 11:36:00 -04:00
"P00 INFO: backup command begin 1.19: --db-path=/var/lib/pgsql/9.4/data --log-level-console=info --log-level-stderr=off --no-log-timestamp --repo-path=/var/lib/pgbackrest --retention-full=2 --stanza=demo",
2016-09-14 17:36:43 -05:00
"P00 WARN: no prior backup exists, incr backup has been changed to full",
2017-06-12 11:36:00 -04:00
"P00 INFO: execute exclusive pg_start_backup() with label \"pgBackRest backup started at 2017-06-12 15:19:04\": backup begins after the next regular checkpoint completes",
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-05 20:23:03 -05:00
"P00 INFO: backup start archive = 000000010000000000000002, lsn = 0/2000028",
" [filtered 761 lines of output]",
"P01 INFO: backup file /var/lib/pgsql/9.4/data/base/1/11896 (0B, 100%)",
v1.12: Page Checksums, Configuration, and Bug Fixes
IMPORTANT NOTE: In prior releases it was possible to specify options on the command-line that were invalid for the current command without getting an error. An error will now be generated for invalid options so it is important to carefully check command-line options in your environment to prevent disruption.
Bug Fixes:
* Fixed an issue where options that were invalid for the specified command could be provided on the command-line without generating an error. The options were ignored and did not cause any change in behavior, but it did lead to some confusion. Invalid options will now generate an error. (Reported by Nikhilchandra Kulkarni.)
* Fixed an issue where internal symlinks were not being created for tablespaces in the repository. This issue was only apparent when trying to bring up clusters in-place manually using filesystem snapshots and did not affect normal backup and restore.
* Fixed an issue that prevented errors from being output to the console before the logging system was initialized, i.e. while parsing options. Error codes were still being returned accurately so this would not have made a process look like it succeeded when it did not. (Reported by Adrian Vondendriesch.)
* Fixed an issue where the db-port option specified on the backup server would not be properly passed to the remote unless it was from the first configured database. (Reported by Michael Vitale.)
Features:
* Added the --checksum-page option to allow pgBackRest to validate page checksums in data files when checksums are enabled on PostgreSQL >= 9.3. Note that this functionality requires a C library which may not initially be available in OS packages. The option will automatically be enabled when the library is present and checksums are enabled on the cluster. (Suggested by Stephen Frost.)
* Added the --repo-link option to allow internal symlinks to be suppressed when the repository is located on a filesystem that does not support symlinks. This does not affect any pgBackRest functionality, but the convenience link latest will not be created and neither will internal tablespace symlinks, which will affect the ability to bring up clusters in-place manually using filesystem snapshots.
* Added the --repo-sync option to allow directory syncs in the repository to be disabled for file systems that do not support them, e.g. NTFS.
* Added a predictable log entry to signal that a command has completed successfully. For example a backup ends successfully with: INFO: backup command end: completed successfully. (Suggested by Jens Wilke.)
Refactoring:
* Abstracted code to determine which database cluster is the master and which are standbys. (Contributed by Cynthia Shang.)
* Improved consistency and flexibility of the protocol layer by using JSON for all messages.
* File copy protocol now accepts a function that can do additional processing on the copy buffers and return a result to the calling process.
* Improved IO->bufferRead to always return requested number of bytes until EOF.
* For simplicity, the pg_control file is now copied with the rest of the files instead of by itself of at the end of the process. The backup command does not require this behavior and the restore copies to a temporary file which is renamed at the end of the restore.
* Simplified the result hash of File->manifest(), Db->tablespaceMapGet(), and Db->databaseMapGet().
* Improved errors returned from child processes by removing redundant error level and code.
* Code cleanup in preparation for improved stanza-create command. (Contributed by Cynthia Shang.)
* Improved parameter/result logging in debug/trace functions.
2016-12-12 19:18:27 -05:00
"P01 INFO: backup file /var/lib/pgsql/9.4/data/base/1/11886 (0B, 100%)",
2016-09-14 17:36:43 -05:00
"P00 INFO: full backup size = 19.3MB",
"P00 INFO: execute exclusive pg_stop_backup() and wait for all WAL segments to archive",
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-05 20:23:03 -05:00
"P00 INFO: backup stop archive = 000000010000000000000002, lsn = 0/20000F0",
2016-06-02 11:10:24 -04:00
" [filtered 4 lines of output]"
]
}
},
{
"key" : {
"cmd" : [
2017-06-12 11:36:00 -04:00
"sudo -u postgres ls -1 /var/lib/pgbackrest/backup/demo | tail -5 | head -1"
2016-06-02 11:10:24 -04:00
],
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-06-12 11:36:00 -04:00
"20170612-151904F"
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --type=diff \\",
" --log-level-console=info backup"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"diff backup size"
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-05 20:23:03 -05:00
" [filtered 4 lines of output]",
2017-06-12 11:36:00 -04:00
"P01 INFO: backup file /var/lib/pgsql/9.4/data/global/pg_control (8KB, 97%) checksum 0a9dc56f2c38d381c020140c1d92e2592a918e8e",
"P01 INFO: backup file /var/lib/pgsql/9.4/data/backup_label (236B, 100%) checksum b2ef5bd382a55a8074e8436de67a2aa35f1753e9",
2016-11-17 09:57:59 -05:00
"P00 INFO: diff backup size = 8.2KB",
2016-09-14 17:36:43 -05:00
"P00 INFO: execute exclusive pg_stop_backup() and wait for all WAL segments to archive",
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-05 20:23:03 -05:00
"P00 INFO: backup stop archive = 000000010000000000000003, lsn = 0/30000F0",
2016-06-02 11:10:24 -04:00
" [filtered 4 lines of output]"
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest info"
],
"highlight" : {
"filter" : false,
"filter-context" : 2,
"list" : [
"(full|incr|diff) backup"
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
"stanza: demo",
" status: ok",
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-05 20:23:03 -05:00
" wal archive min/max: 000000010000000000000002 / 000000010000000000000003",
2016-06-02 11:10:24 -04:00
"",
2017-06-12 11:36:00 -04:00
" full backup: 20170612-151904F",
" timestamp start/stop: 2017-06-12 15:19:04 / 2017-06-12 15:19:10",
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-05 20:23:03 -05:00
" wal start/stop: 000000010000000000000002 / 000000010000000000000002",
2016-06-02 11:10:24 -04:00
" database size: 19.3MB, backup size: 19.3MB",
" repository size: 2.2MB, repository backup size: 2.2MB",
"",
2017-06-12 11:36:00 -04:00
" diff backup: 20170612-151904F_20170612-151911D",
" timestamp start/stop: 2017-06-12 15:19:11 / 2017-06-12 15:19:14",
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-05 20:23:03 -05:00
" wal start/stop: 000000010000000000000003 / 000000010000000000000003",
2016-11-17 09:57:59 -05:00
" database size: 19.3MB, backup size: 8.2KB",
2017-04-12 19:17:39 -04:00
" repository size: 2.2MB, repository backup size: 343B",
2017-06-12 11:36:00 -04:00
" backup reference list: 20170612-151904F"
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
"cmd" : [
"sudo service postgresql-9.4 stop"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres rm /var/lib/pgsql/9.4/data/global/pg_control"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres sleep 1"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo rm -f /var/lib/pgsql/9.4/pgstartup.log"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo service postgresql-9.4 start"
],
"err-expect" : "1",
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo cat /var/lib/pgsql/9.4/pgstartup.log"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"could not find the database system"
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
"postmaster: could not find the database system",
"Expected to find it in the directory \"/var/lib/pgsql/9.4/data\",",
"but could not open file \"/var/lib/pgsql/9.4/data/global/pg_control\": No such file or directory"
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres find /var/lib/pgsql/9.4/data -mindepth 1 -delete"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo restore"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo service postgresql-9.4 start"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres sleep 1"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --type=incr \\",
" --log-level-console=info backup"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"backup begins after the next regular checkpoint completes"
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-06-12 11:36:00 -04:00
"P00 INFO: backup command begin 1.19: --db-path=/var/lib/pgsql/9.4/data --log-level-console=info --log-level-stderr=off --no-log-timestamp --repo-path=/var/lib/pgbackrest --retention-full=2 --stanza=demo --type=incr",
"P00 INFO: last backup label = 20170612-151904F_20170612-151911D, version = 1.19",
"P00 INFO: execute exclusive pg_start_backup() with label \"pgBackRest backup started at 2017-06-12 15:19:26\": backup begins after the next regular checkpoint completes",
"P00 INFO: backup start archive = 000000020000000000000006, lsn = 0/6000028",
"P01 INFO: backup file /var/lib/pgsql/9.4/data/base/12140/pg_internal.init (115.2KB, 71%) checksum 59949822611de38a8696dfeebab12409c39d758e",
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-05 20:23:03 -05:00
" [filtered 14 lines of output]"
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
"file" : "/etc/pgbackrest.conf",
"host" : "db-master",
"option" : {
"global" : {
"start-fast" : {
"value" : "y"
}
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
"db-path=/var/lib/pgsql/9.4/data",
"",
"[global]",
"repo-path=/var/lib/pgbackrest",
v1.12: Page Checksums, Configuration, and Bug Fixes
IMPORTANT NOTE: In prior releases it was possible to specify options on the command-line that were invalid for the current command without getting an error. An error will now be generated for invalid options so it is important to carefully check command-line options in your environment to prevent disruption.
Bug Fixes:
* Fixed an issue where options that were invalid for the specified command could be provided on the command-line without generating an error. The options were ignored and did not cause any change in behavior, but it did lead to some confusion. Invalid options will now generate an error. (Reported by Nikhilchandra Kulkarni.)
* Fixed an issue where internal symlinks were not being created for tablespaces in the repository. This issue was only apparent when trying to bring up clusters in-place manually using filesystem snapshots and did not affect normal backup and restore.
* Fixed an issue that prevented errors from being output to the console before the logging system was initialized, i.e. while parsing options. Error codes were still being returned accurately so this would not have made a process look like it succeeded when it did not. (Reported by Adrian Vondendriesch.)
* Fixed an issue where the db-port option specified on the backup server would not be properly passed to the remote unless it was from the first configured database. (Reported by Michael Vitale.)
Features:
* Added the --checksum-page option to allow pgBackRest to validate page checksums in data files when checksums are enabled on PostgreSQL >= 9.3. Note that this functionality requires a C library which may not initially be available in OS packages. The option will automatically be enabled when the library is present and checksums are enabled on the cluster. (Suggested by Stephen Frost.)
* Added the --repo-link option to allow internal symlinks to be suppressed when the repository is located on a filesystem that does not support symlinks. This does not affect any pgBackRest functionality, but the convenience link latest will not be created and neither will internal tablespace symlinks, which will affect the ability to bring up clusters in-place manually using filesystem snapshots.
* Added the --repo-sync option to allow directory syncs in the repository to be disabled for file systems that do not support them, e.g. NTFS.
* Added a predictable log entry to signal that a command has completed successfully. For example a backup ends successfully with: INFO: backup command end: completed successfully. (Suggested by Jens Wilke.)
Refactoring:
* Abstracted code to determine which database cluster is the master and which are standbys. (Contributed by Cynthia Shang.)
* Improved consistency and flexibility of the protocol layer by using JSON for all messages.
* File copy protocol now accepts a function that can do additional processing on the copy buffers and return a result to the calling process.
* Improved IO->bufferRead to always return requested number of bytes until EOF.
* For simplicity, the pg_control file is now copied with the rest of the files instead of by itself of at the end of the process. The backup command does not require this behavior and the restore copies to a temporary file which is renamed at the end of the restore.
* Simplified the result hash of File->manifest(), Db->tablespaceMapGet(), and Db->databaseMapGet().
* Improved errors returned from child processes by removing redundant error level and code.
* Code cleanup in preparation for improved stanza-create command. (Contributed by Cynthia Shang.)
* Improved parameter/result logging in debug/trace functions.
2016-12-12 19:18:27 -05:00
"retention-full=2",
2016-06-02 11:10:24 -04:00
"start-fast=y"
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --type=incr \\",
" --log-level-console=info backup"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"backup begins after the requested immediate checkpoint completes"
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-06-12 11:36:00 -04:00
"P00 INFO: backup command begin 1.19: --db-path=/var/lib/pgsql/9.4/data --log-level-console=info --log-level-stderr=off --no-log-timestamp --repo-path=/var/lib/pgbackrest --retention-full=2 --stanza=demo --start-fast --type=incr",
"P00 INFO: last backup label = 20170612-151904F_20170612-151926I, version = 1.19",
"P00 INFO: execute exclusive pg_start_backup() with label \"pgBackRest backup started at 2017-06-12 15:19:30\": backup begins after the requested immediate checkpoint completes",
"P00 INFO: backup start archive = 000000020000000000000007, lsn = 0/7000028",
"P01 INFO: backup file /var/lib/pgsql/9.4/data/global/pg_control (8KB, 97%) checksum 6e68b8a6ac4a1a6eddb458d04661db98e1ee51fa",
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-05 20:23:03 -05:00
" [filtered 8 lines of output]"
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
"cmd" : [
2017-06-12 11:36:00 -04:00
"sudo chmod 550 /var/lib/pgbackrest/backup/demo/"
2016-06-02 11:10:24 -04:00
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --type=incr \\",
" --log-level-console=info backup"
],
2017-04-12 19:17:39 -04:00
"err-expect" : "47",
2016-06-02 11:10:24 -04:00
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"ERROR:"
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
v1.12: Page Checksums, Configuration, and Bug Fixes
IMPORTANT NOTE: In prior releases it was possible to specify options on the command-line that were invalid for the current command without getting an error. An error will now be generated for invalid options so it is important to carefully check command-line options in your environment to prevent disruption.
Bug Fixes:
* Fixed an issue where options that were invalid for the specified command could be provided on the command-line without generating an error. The options were ignored and did not cause any change in behavior, but it did lead to some confusion. Invalid options will now generate an error. (Reported by Nikhilchandra Kulkarni.)
* Fixed an issue where internal symlinks were not being created for tablespaces in the repository. This issue was only apparent when trying to bring up clusters in-place manually using filesystem snapshots and did not affect normal backup and restore.
* Fixed an issue that prevented errors from being output to the console before the logging system was initialized, i.e. while parsing options. Error codes were still being returned accurately so this would not have made a process look like it succeeded when it did not. (Reported by Adrian Vondendriesch.)
* Fixed an issue where the db-port option specified on the backup server would not be properly passed to the remote unless it was from the first configured database. (Reported by Michael Vitale.)
Features:
* Added the --checksum-page option to allow pgBackRest to validate page checksums in data files when checksums are enabled on PostgreSQL >= 9.3. Note that this functionality requires a C library which may not initially be available in OS packages. The option will automatically be enabled when the library is present and checksums are enabled on the cluster. (Suggested by Stephen Frost.)
* Added the --repo-link option to allow internal symlinks to be suppressed when the repository is located on a filesystem that does not support symlinks. This does not affect any pgBackRest functionality, but the convenience link latest will not be created and neither will internal tablespace symlinks, which will affect the ability to bring up clusters in-place manually using filesystem snapshots.
* Added the --repo-sync option to allow directory syncs in the repository to be disabled for file systems that do not support them, e.g. NTFS.
* Added a predictable log entry to signal that a command has completed successfully. For example a backup ends successfully with: INFO: backup command end: completed successfully. (Suggested by Jens Wilke.)
Refactoring:
* Abstracted code to determine which database cluster is the master and which are standbys. (Contributed by Cynthia Shang.)
* Improved consistency and flexibility of the protocol layer by using JSON for all messages.
* File copy protocol now accepts a function that can do additional processing on the copy buffers and return a result to the calling process.
* Improved IO->bufferRead to always return requested number of bytes until EOF.
* For simplicity, the pg_control file is now copied with the rest of the files instead of by itself of at the end of the process. The backup command does not require this behavior and the restore copies to a temporary file which is renamed at the end of the restore.
* Simplified the result hash of File->manifest(), Db->tablespaceMapGet(), and Db->databaseMapGet().
* Improved errors returned from child processes by removing redundant error level and code.
* Code cleanup in preparation for improved stanza-create command. (Contributed by Cynthia Shang.)
* Improved parameter/result logging in debug/trace functions.
2016-12-12 19:18:27 -05:00
" [filtered 2 lines of output]",
2017-06-12 11:36:00 -04:00
"P00 INFO: execute exclusive pg_start_backup() with label \"pgBackRest backup started at 2017-06-12 15:19:34\": backup begins after the requested immediate checkpoint completes",
"P00 INFO: backup start archive = 000000020000000000000008, lsn = 0/8000028",
"P00 ERROR: [047]: unable to create path '/var/lib/pgbackrest/backup/demo/20170612-151904F_20170612-151934I': Permission denied",
2017-04-12 19:17:39 -04:00
"P00 INFO: backup command end: aborted with exception [047]"
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
"cmd" : [
2017-06-12 11:36:00 -04:00
"sudo chmod 750 /var/lib/pgbackrest/backup/demo/"
2016-06-02 11:10:24 -04:00
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --type=incr \\",
" --log-level-console=info backup"
],
2017-04-12 19:17:39 -04:00
"err-expect" : "57",
2016-06-02 11:10:24 -04:00
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"ERROR:"
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-06-12 11:36:00 -04:00
"P00 INFO: backup command begin 1.19: --db-path=/var/lib/pgsql/9.4/data --log-level-console=info --log-level-stderr=off --no-log-timestamp --repo-path=/var/lib/pgbackrest --retention-full=2 --stanza=demo --start-fast --type=incr",
"P00 INFO: last backup label = 20170612-151904F_20170612-151930I, version = 1.19",
"P00 INFO: execute exclusive pg_start_backup() with label \"pgBackRest backup started at 2017-06-12 15:19:36\": backup begins after the requested immediate checkpoint completes",
2017-04-12 19:17:39 -04:00
"P00 ERROR: [057]: ERROR: a backup is already in progress",
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-05 20:23:03 -05:00
" HINT: Run pg_stop_backup() and try again.:",
2017-06-12 11:36:00 -04:00
" select to_char(current_timestamp, 'YYYY-MM-DD HH24:MI:SS.US TZ'), pg_xlogfile_name(lsn), lsn::text from pg_start_backup('pgBackRest backup started at 2017-06-12 15:19:36', true) as lsn"
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
"file" : "/etc/pgbackrest.conf",
"host" : "db-master",
"option" : {
"global" : {
"stop-auto" : {
"value" : "y"
}
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
"db-path=/var/lib/pgsql/9.4/data",
"",
"[global]",
"repo-path=/var/lib/pgbackrest",
v1.12: Page Checksums, Configuration, and Bug Fixes
IMPORTANT NOTE: In prior releases it was possible to specify options on the command-line that were invalid for the current command without getting an error. An error will now be generated for invalid options so it is important to carefully check command-line options in your environment to prevent disruption.
Bug Fixes:
* Fixed an issue where options that were invalid for the specified command could be provided on the command-line without generating an error. The options were ignored and did not cause any change in behavior, but it did lead to some confusion. Invalid options will now generate an error. (Reported by Nikhilchandra Kulkarni.)
* Fixed an issue where internal symlinks were not being created for tablespaces in the repository. This issue was only apparent when trying to bring up clusters in-place manually using filesystem snapshots and did not affect normal backup and restore.
* Fixed an issue that prevented errors from being output to the console before the logging system was initialized, i.e. while parsing options. Error codes were still being returned accurately so this would not have made a process look like it succeeded when it did not. (Reported by Adrian Vondendriesch.)
* Fixed an issue where the db-port option specified on the backup server would not be properly passed to the remote unless it was from the first configured database. (Reported by Michael Vitale.)
Features:
* Added the --checksum-page option to allow pgBackRest to validate page checksums in data files when checksums are enabled on PostgreSQL >= 9.3. Note that this functionality requires a C library which may not initially be available in OS packages. The option will automatically be enabled when the library is present and checksums are enabled on the cluster. (Suggested by Stephen Frost.)
* Added the --repo-link option to allow internal symlinks to be suppressed when the repository is located on a filesystem that does not support symlinks. This does not affect any pgBackRest functionality, but the convenience link latest will not be created and neither will internal tablespace symlinks, which will affect the ability to bring up clusters in-place manually using filesystem snapshots.
* Added the --repo-sync option to allow directory syncs in the repository to be disabled for file systems that do not support them, e.g. NTFS.
* Added a predictable log entry to signal that a command has completed successfully. For example a backup ends successfully with: INFO: backup command end: completed successfully. (Suggested by Jens Wilke.)
Refactoring:
* Abstracted code to determine which database cluster is the master and which are standbys. (Contributed by Cynthia Shang.)
* Improved consistency and flexibility of the protocol layer by using JSON for all messages.
* File copy protocol now accepts a function that can do additional processing on the copy buffers and return a result to the calling process.
* Improved IO->bufferRead to always return requested number of bytes until EOF.
* For simplicity, the pg_control file is now copied with the rest of the files instead of by itself of at the end of the process. The backup command does not require this behavior and the restore copies to a temporary file which is renamed at the end of the restore.
* Simplified the result hash of File->manifest(), Db->tablespaceMapGet(), and Db->databaseMapGet().
* Improved errors returned from child processes by removing redundant error level and code.
* Code cleanup in preparation for improved stanza-create command. (Contributed by Cynthia Shang.)
* Improved parameter/result logging in debug/trace functions.
2016-12-12 19:18:27 -05:00
"retention-full=2",
2016-06-02 11:10:24 -04:00
"start-fast=y",
"stop-auto=y"
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --type=incr \\",
" --log-level-console=info backup"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"cluster is already in backup mode|backup begins after the requested immediate checkpoint completes"
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-06-12 11:36:00 -04:00
"P00 INFO: backup command begin 1.19: --db-path=/var/lib/pgsql/9.4/data --log-level-console=info --log-level-stderr=off --no-log-timestamp --repo-path=/var/lib/pgbackrest --retention-full=2 --stanza=demo --start-fast --stop-auto --type=incr",
"P00 INFO: last backup label = 20170612-151904F_20170612-151930I, version = 1.19",
2016-10-10 17:35:58 -04:00
"P00 WARN: the cluster is already in backup mode but no pgBackRest backup process is running. pg_stop_backup() will be called so a new backup can be started.",
2016-09-14 17:36:43 -05:00
"P00 INFO: execute exclusive pg_stop_backup() and wait for all WAL segments to archive",
2017-06-12 11:36:00 -04:00
"P00 INFO: execute exclusive pg_start_backup() with label \"pgBackRest backup started at 2017-06-12 15:19:38\": backup begins after the requested immediate checkpoint completes",
"P00 INFO: backup start archive = 000000020000000000000009, lsn = 0/9000028",
"P01 INFO: backup file /var/lib/pgsql/9.4/data/global/pg_control (8KB, 83%) checksum cb1e66e096bbd15ad08b0d62feda0f0e14391c32",
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-05 20:23:03 -05:00
" [filtered 9 lines of output]"
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
"file" : "/etc/pgbackrest.conf",
"host" : "db-master",
"option" : {
"global" : {
"retention-full" : {
"value" : "2"
}
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
"db-path=/var/lib/pgsql/9.4/data",
"",
"[global]",
"repo-path=/var/lib/pgbackrest",
"retention-full=2",
"start-fast=y",
"stop-auto=y"
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --type=full \\",
" --log-level-console=detail backup"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
2017-06-12 11:36:00 -04:00
"archive retention on backup 20170612-151904F|remove archive"
2016-06-02 11:10:24 -04:00
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-05 20:23:03 -05:00
" [filtered 770 lines of output]",
v1.12: Page Checksums, Configuration, and Bug Fixes
IMPORTANT NOTE: In prior releases it was possible to specify options on the command-line that were invalid for the current command without getting an error. An error will now be generated for invalid options so it is important to carefully check command-line options in your environment to prevent disruption.
Bug Fixes:
* Fixed an issue where options that were invalid for the specified command could be provided on the command-line without generating an error. The options were ignored and did not cause any change in behavior, but it did lead to some confusion. Invalid options will now generate an error. (Reported by Nikhilchandra Kulkarni.)
* Fixed an issue where internal symlinks were not being created for tablespaces in the repository. This issue was only apparent when trying to bring up clusters in-place manually using filesystem snapshots and did not affect normal backup and restore.
* Fixed an issue that prevented errors from being output to the console before the logging system was initialized, i.e. while parsing options. Error codes were still being returned accurately so this would not have made a process look like it succeeded when it did not. (Reported by Adrian Vondendriesch.)
* Fixed an issue where the db-port option specified on the backup server would not be properly passed to the remote unless it was from the first configured database. (Reported by Michael Vitale.)
Features:
* Added the --checksum-page option to allow pgBackRest to validate page checksums in data files when checksums are enabled on PostgreSQL >= 9.3. Note that this functionality requires a C library which may not initially be available in OS packages. The option will automatically be enabled when the library is present and checksums are enabled on the cluster. (Suggested by Stephen Frost.)
* Added the --repo-link option to allow internal symlinks to be suppressed when the repository is located on a filesystem that does not support symlinks. This does not affect any pgBackRest functionality, but the convenience link latest will not be created and neither will internal tablespace symlinks, which will affect the ability to bring up clusters in-place manually using filesystem snapshots.
* Added the --repo-sync option to allow directory syncs in the repository to be disabled for file systems that do not support them, e.g. NTFS.
* Added a predictable log entry to signal that a command has completed successfully. For example a backup ends successfully with: INFO: backup command end: completed successfully. (Suggested by Jens Wilke.)
Refactoring:
* Abstracted code to determine which database cluster is the master and which are standbys. (Contributed by Cynthia Shang.)
* Improved consistency and flexibility of the protocol layer by using JSON for all messages.
* File copy protocol now accepts a function that can do additional processing on the copy buffers and return a result to the calling process.
* Improved IO->bufferRead to always return requested number of bytes until EOF.
* For simplicity, the pg_control file is now copied with the rest of the files instead of by itself of at the end of the process. The backup command does not require this behavior and the restore copies to a temporary file which is renamed at the end of the restore.
* Simplified the result hash of File->manifest(), Db->tablespaceMapGet(), and Db->databaseMapGet().
* Improved errors returned from child processes by removing redundant error level and code.
* Code cleanup in preparation for improved stanza-create command. (Contributed by Cynthia Shang.)
* Improved parameter/result logging in debug/trace functions.
2016-12-12 19:18:27 -05:00
"P00 INFO: backup command end: completed successfully",
2017-06-12 11:36:00 -04:00
"P00 INFO: expire command begin 1.19: --log-level-console=detail --log-level-stderr=off --no-log-timestamp --repo-path=/var/lib/pgbackrest --retention-archive=2 --retention-full=2 --stanza=demo",
"P00 DETAIL: archive retention on backup 20170612-151904F, archiveId = 9.4-1, start = 000000010000000000000002",
2017-04-12 19:17:39 -04:00
"P00 DETAIL: no archive to remove, archiveId = 9.4-1",
v1.12: Page Checksums, Configuration, and Bug Fixes
IMPORTANT NOTE: In prior releases it was possible to specify options on the command-line that were invalid for the current command without getting an error. An error will now be generated for invalid options so it is important to carefully check command-line options in your environment to prevent disruption.
Bug Fixes:
* Fixed an issue where options that were invalid for the specified command could be provided on the command-line without generating an error. The options were ignored and did not cause any change in behavior, but it did lead to some confusion. Invalid options will now generate an error. (Reported by Nikhilchandra Kulkarni.)
* Fixed an issue where internal symlinks were not being created for tablespaces in the repository. This issue was only apparent when trying to bring up clusters in-place manually using filesystem snapshots and did not affect normal backup and restore.
* Fixed an issue that prevented errors from being output to the console before the logging system was initialized, i.e. while parsing options. Error codes were still being returned accurately so this would not have made a process look like it succeeded when it did not. (Reported by Adrian Vondendriesch.)
* Fixed an issue where the db-port option specified on the backup server would not be properly passed to the remote unless it was from the first configured database. (Reported by Michael Vitale.)
Features:
* Added the --checksum-page option to allow pgBackRest to validate page checksums in data files when checksums are enabled on PostgreSQL >= 9.3. Note that this functionality requires a C library which may not initially be available in OS packages. The option will automatically be enabled when the library is present and checksums are enabled on the cluster. (Suggested by Stephen Frost.)
* Added the --repo-link option to allow internal symlinks to be suppressed when the repository is located on a filesystem that does not support symlinks. This does not affect any pgBackRest functionality, but the convenience link latest will not be created and neither will internal tablespace symlinks, which will affect the ability to bring up clusters in-place manually using filesystem snapshots.
* Added the --repo-sync option to allow directory syncs in the repository to be disabled for file systems that do not support them, e.g. NTFS.
* Added a predictable log entry to signal that a command has completed successfully. For example a backup ends successfully with: INFO: backup command end: completed successfully. (Suggested by Jens Wilke.)
Refactoring:
* Abstracted code to determine which database cluster is the master and which are standbys. (Contributed by Cynthia Shang.)
* Improved consistency and flexibility of the protocol layer by using JSON for all messages.
* File copy protocol now accepts a function that can do additional processing on the copy buffers and return a result to the calling process.
* Improved IO->bufferRead to always return requested number of bytes until EOF.
* For simplicity, the pg_control file is now copied with the rest of the files instead of by itself of at the end of the process. The backup command does not require this behavior and the restore copies to a temporary file which is renamed at the end of the restore.
* Simplified the result hash of File->manifest(), Db->tablespaceMapGet(), and Db->databaseMapGet().
* Improved errors returned from child processes by removing redundant error level and code.
* Code cleanup in preparation for improved stanza-create command. (Contributed by Cynthia Shang.)
* Improved parameter/result logging in debug/trace functions.
2016-12-12 19:18:27 -05:00
"P00 INFO: expire command end: completed successfully"
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
"cmd" : [
2017-06-12 11:36:00 -04:00
"sudo -u postgres ls -1 /var/lib/pgbackrest/backup/demo | tail -5 | head -1"
2016-06-02 11:10:24 -04:00
],
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-06-12 11:36:00 -04:00
"20170612-151943F"
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --type=full \\",
" --log-level-console=info backup"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
2017-06-12 11:36:00 -04:00
"expire full backup set\\: 20170612-151904F|archive retention on backup 20170612-151943F|remove archive"
2016-06-02 11:10:24 -04:00
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-05 20:23:03 -05:00
" [filtered 770 lines of output]",
v1.12: Page Checksums, Configuration, and Bug Fixes
IMPORTANT NOTE: In prior releases it was possible to specify options on the command-line that were invalid for the current command without getting an error. An error will now be generated for invalid options so it is important to carefully check command-line options in your environment to prevent disruption.
Bug Fixes:
* Fixed an issue where options that were invalid for the specified command could be provided on the command-line without generating an error. The options were ignored and did not cause any change in behavior, but it did lead to some confusion. Invalid options will now generate an error. (Reported by Nikhilchandra Kulkarni.)
* Fixed an issue where internal symlinks were not being created for tablespaces in the repository. This issue was only apparent when trying to bring up clusters in-place manually using filesystem snapshots and did not affect normal backup and restore.
* Fixed an issue that prevented errors from being output to the console before the logging system was initialized, i.e. while parsing options. Error codes were still being returned accurately so this would not have made a process look like it succeeded when it did not. (Reported by Adrian Vondendriesch.)
* Fixed an issue where the db-port option specified on the backup server would not be properly passed to the remote unless it was from the first configured database. (Reported by Michael Vitale.)
Features:
* Added the --checksum-page option to allow pgBackRest to validate page checksums in data files when checksums are enabled on PostgreSQL >= 9.3. Note that this functionality requires a C library which may not initially be available in OS packages. The option will automatically be enabled when the library is present and checksums are enabled on the cluster. (Suggested by Stephen Frost.)
* Added the --repo-link option to allow internal symlinks to be suppressed when the repository is located on a filesystem that does not support symlinks. This does not affect any pgBackRest functionality, but the convenience link latest will not be created and neither will internal tablespace symlinks, which will affect the ability to bring up clusters in-place manually using filesystem snapshots.
* Added the --repo-sync option to allow directory syncs in the repository to be disabled for file systems that do not support them, e.g. NTFS.
* Added a predictable log entry to signal that a command has completed successfully. For example a backup ends successfully with: INFO: backup command end: completed successfully. (Suggested by Jens Wilke.)
Refactoring:
* Abstracted code to determine which database cluster is the master and which are standbys. (Contributed by Cynthia Shang.)
* Improved consistency and flexibility of the protocol layer by using JSON for all messages.
* File copy protocol now accepts a function that can do additional processing on the copy buffers and return a result to the calling process.
* Improved IO->bufferRead to always return requested number of bytes until EOF.
* For simplicity, the pg_control file is now copied with the rest of the files instead of by itself of at the end of the process. The backup command does not require this behavior and the restore copies to a temporary file which is renamed at the end of the restore.
* Simplified the result hash of File->manifest(), Db->tablespaceMapGet(), and Db->databaseMapGet().
* Improved errors returned from child processes by removing redundant error level and code.
* Code cleanup in preparation for improved stanza-create command. (Contributed by Cynthia Shang.)
* Improved parameter/result logging in debug/trace functions.
2016-12-12 19:18:27 -05:00
"P00 INFO: backup command end: completed successfully",
2017-06-12 11:36:00 -04:00
"P00 INFO: expire command begin 1.19: --log-level-console=info --log-level-stderr=off --no-log-timestamp --repo-path=/var/lib/pgbackrest --retention-archive=2 --retention-full=2 --stanza=demo",
"P00 INFO: expire full backup set: 20170612-151904F, 20170612-151904F_20170612-151911D, 20170612-151904F_20170612-151926I, 20170612-151904F_20170612-151930I, 20170612-151904F_20170612-151938I",
"P00 INFO: remove expired backup 20170612-151904F_20170612-151938I",
"P00 INFO: remove expired backup 20170612-151904F_20170612-151930I",
2016-06-02 11:10:24 -04:00
" [filtered 3 lines of output]"
]
}
},
{
"key" : {
"file" : "/etc/pgbackrest.conf",
"host" : "db-master",
"option" : {
"global" : {
"retention-diff" : {
"value" : "1"
}
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
"db-path=/var/lib/pgsql/9.4/data",
"",
"[global]",
"repo-path=/var/lib/pgbackrest",
"retention-diff=1",
"retention-full=2",
"start-fast=y",
"stop-auto=y"
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --type=diff backup"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
2017-06-12 11:36:00 -04:00
"sudo -u postgres ls -1 /var/lib/pgbackrest/backup/demo | tail -5 | head -1"
2016-06-02 11:10:24 -04:00
],
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-06-12 11:36:00 -04:00
"20170612-151950F_20170612-151957D"
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --type=incr backup"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --type=diff \\",
" --log-level-console=info backup"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
2017-06-12 11:36:00 -04:00
"expire diff backup set: 20170612-151950F_20170612-151957D"
2016-06-02 11:10:24 -04:00
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-05 20:23:03 -05:00
" [filtered 10 lines of output]",
v1.12: Page Checksums, Configuration, and Bug Fixes
IMPORTANT NOTE: In prior releases it was possible to specify options on the command-line that were invalid for the current command without getting an error. An error will now be generated for invalid options so it is important to carefully check command-line options in your environment to prevent disruption.
Bug Fixes:
* Fixed an issue where options that were invalid for the specified command could be provided on the command-line without generating an error. The options were ignored and did not cause any change in behavior, but it did lead to some confusion. Invalid options will now generate an error. (Reported by Nikhilchandra Kulkarni.)
* Fixed an issue where internal symlinks were not being created for tablespaces in the repository. This issue was only apparent when trying to bring up clusters in-place manually using filesystem snapshots and did not affect normal backup and restore.
* Fixed an issue that prevented errors from being output to the console before the logging system was initialized, i.e. while parsing options. Error codes were still being returned accurately so this would not have made a process look like it succeeded when it did not. (Reported by Adrian Vondendriesch.)
* Fixed an issue where the db-port option specified on the backup server would not be properly passed to the remote unless it was from the first configured database. (Reported by Michael Vitale.)
Features:
* Added the --checksum-page option to allow pgBackRest to validate page checksums in data files when checksums are enabled on PostgreSQL >= 9.3. Note that this functionality requires a C library which may not initially be available in OS packages. The option will automatically be enabled when the library is present and checksums are enabled on the cluster. (Suggested by Stephen Frost.)
* Added the --repo-link option to allow internal symlinks to be suppressed when the repository is located on a filesystem that does not support symlinks. This does not affect any pgBackRest functionality, but the convenience link latest will not be created and neither will internal tablespace symlinks, which will affect the ability to bring up clusters in-place manually using filesystem snapshots.
* Added the --repo-sync option to allow directory syncs in the repository to be disabled for file systems that do not support them, e.g. NTFS.
* Added a predictable log entry to signal that a command has completed successfully. For example a backup ends successfully with: INFO: backup command end: completed successfully. (Suggested by Jens Wilke.)
Refactoring:
* Abstracted code to determine which database cluster is the master and which are standbys. (Contributed by Cynthia Shang.)
* Improved consistency and flexibility of the protocol layer by using JSON for all messages.
* File copy protocol now accepts a function that can do additional processing on the copy buffers and return a result to the calling process.
* Improved IO->bufferRead to always return requested number of bytes until EOF.
* For simplicity, the pg_control file is now copied with the rest of the files instead of by itself of at the end of the process. The backup command does not require this behavior and the restore copies to a temporary file which is renamed at the end of the restore.
* Simplified the result hash of File->manifest(), Db->tablespaceMapGet(), and Db->databaseMapGet().
* Improved errors returned from child processes by removing redundant error level and code.
* Code cleanup in preparation for improved stanza-create command. (Contributed by Cynthia Shang.)
* Improved parameter/result logging in debug/trace functions.
2016-12-12 19:18:27 -05:00
"P00 INFO: backup command end: completed successfully",
2017-06-12 11:36:00 -04:00
"P00 INFO: expire command begin 1.19: --log-level-console=info --log-level-stderr=off --no-log-timestamp --repo-path=/var/lib/pgbackrest --retention-archive=2 --retention-diff=1 --retention-full=2 --stanza=demo",
"P00 INFO: expire diff backup set: 20170612-151950F_20170612-151957D, 20170612-151950F_20170612-152002I",
"P00 INFO: remove expired backup 20170612-151950F_20170612-152002I",
"P00 INFO: remove expired backup 20170612-151950F_20170612-151957D"
2016-09-07 08:29:21 -04:00
]
}
},
{
"key" : {
"file" : "/etc/pgbackrest.conf",
"host" : "db-master",
"option" : {
"global" : {
"retention-diff" : {
"value" : "2"
}
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
"db-path=/var/lib/pgsql/9.4/data",
"",
"[global]",
"repo-path=/var/lib/pgbackrest",
"retention-diff=2",
"retention-full=2",
"start-fast=y",
"stop-auto=y"
]
}
},
{
"key" : {
"cmd" : [
2017-06-12 11:36:00 -04:00
"sudo -u postgres ls -1 /var/lib/pgbackrest/backup/demo | tail -5 | head -1"
2016-09-07 08:29:21 -04:00
],
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-06-12 11:36:00 -04:00
"20170612-151950F_20170612-152006D"
2016-09-07 08:29:21 -04:00
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres psql -c \" \\",
" select pg_create_restore_point('generate WAL'); select pg_switch_xlog(); \\",
" select pg_create_restore_point('generate WAL'); select pg_switch_xlog();\""
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --type=diff \\",
" --log-level-console=info backup"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"new backup label"
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-05 20:23:03 -05:00
" [filtered 8 lines of output]",
2016-09-14 17:36:43 -05:00
"P00 INFO: execute exclusive pg_stop_backup() and wait for all WAL segments to archive",
2017-03-02 20:15:14 -05:00
"P00 INFO: backup stop archive = 000000020000000000000012, lsn = 0/120000F0",
2017-06-12 11:36:00 -04:00
"P00 INFO: new backup label = 20170612-151950F_20170612-152011D",
v1.12: Page Checksums, Configuration, and Bug Fixes
IMPORTANT NOTE: In prior releases it was possible to specify options on the command-line that were invalid for the current command without getting an error. An error will now be generated for invalid options so it is important to carefully check command-line options in your environment to prevent disruption.
Bug Fixes:
* Fixed an issue where options that were invalid for the specified command could be provided on the command-line without generating an error. The options were ignored and did not cause any change in behavior, but it did lead to some confusion. Invalid options will now generate an error. (Reported by Nikhilchandra Kulkarni.)
* Fixed an issue where internal symlinks were not being created for tablespaces in the repository. This issue was only apparent when trying to bring up clusters in-place manually using filesystem snapshots and did not affect normal backup and restore.
* Fixed an issue that prevented errors from being output to the console before the logging system was initialized, i.e. while parsing options. Error codes were still being returned accurately so this would not have made a process look like it succeeded when it did not. (Reported by Adrian Vondendriesch.)
* Fixed an issue where the db-port option specified on the backup server would not be properly passed to the remote unless it was from the first configured database. (Reported by Michael Vitale.)
Features:
* Added the --checksum-page option to allow pgBackRest to validate page checksums in data files when checksums are enabled on PostgreSQL >= 9.3. Note that this functionality requires a C library which may not initially be available in OS packages. The option will automatically be enabled when the library is present and checksums are enabled on the cluster. (Suggested by Stephen Frost.)
* Added the --repo-link option to allow internal symlinks to be suppressed when the repository is located on a filesystem that does not support symlinks. This does not affect any pgBackRest functionality, but the convenience link latest will not be created and neither will internal tablespace symlinks, which will affect the ability to bring up clusters in-place manually using filesystem snapshots.
* Added the --repo-sync option to allow directory syncs in the repository to be disabled for file systems that do not support them, e.g. NTFS.
* Added a predictable log entry to signal that a command has completed successfully. For example a backup ends successfully with: INFO: backup command end: completed successfully. (Suggested by Jens Wilke.)
Refactoring:
* Abstracted code to determine which database cluster is the master and which are standbys. (Contributed by Cynthia Shang.)
* Improved consistency and flexibility of the protocol layer by using JSON for all messages.
* File copy protocol now accepts a function that can do additional processing on the copy buffers and return a result to the calling process.
* Improved IO->bufferRead to always return requested number of bytes until EOF.
* For simplicity, the pg_control file is now copied with the rest of the files instead of by itself of at the end of the process. The backup command does not require this behavior and the restore copies to a temporary file which is renamed at the end of the restore.
* Simplified the result hash of File->manifest(), Db->tablespaceMapGet(), and Db->databaseMapGet().
* Improved errors returned from child processes by removing redundant error level and code.
* Code cleanup in preparation for improved stanza-create command. (Contributed by Cynthia Shang.)
* Improved parameter/result logging in debug/trace functions.
2016-12-12 19:18:27 -05:00
"P00 INFO: backup command end: completed successfully",
2017-06-12 11:36:00 -04:00
"P00 INFO: expire command begin 1.19: --log-level-console=info --log-level-stderr=off --no-log-timestamp --repo-path=/var/lib/pgbackrest --retention-archive=2 --retention-diff=2 --retention-full=2 --stanza=demo"
2016-09-07 08:29:21 -04:00
]
}
},
{
"key" : {
"cmd" : [
2017-06-12 11:36:00 -04:00
"sudo -u postgres ls -1 /var/lib/pgbackrest/backup/demo | tail -5 | head -1"
2016-09-07 08:29:21 -04:00
],
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-06-12 11:36:00 -04:00
"20170612-151950F_20170612-152011D"
2016-09-07 08:29:21 -04:00
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --log-level-console=detail \\",
" --retention-archive-type=diff --retention-archive=1 expire"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
2017-06-12 11:36:00 -04:00
"archive retention on backup 20170612-151950F_20170612-152006D|remove archive"
2016-09-07 08:29:21 -04:00
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-06-12 11:36:00 -04:00
"P00 INFO: expire command begin 1.19: --log-level-console=detail --log-level-stderr=off --no-log-timestamp --repo-path=/var/lib/pgbackrest --retention-archive=1 --retention-archive-type=diff --retention-diff=2 --retention-full=2 --stanza=demo",
"P00 DETAIL: archive retention on backup 20170612-151943F, archiveId = 9.4-1, start = 00000002000000000000000A, stop = 00000002000000000000000A",
"P00 DETAIL: archive retention on backup 20170612-151950F, archiveId = 9.4-1, start = 00000002000000000000000B, stop = 00000002000000000000000B",
"P00 DETAIL: archive retention on backup 20170612-151950F_20170612-152006D, archiveId = 9.4-1, start = 00000002000000000000000E, stop = 00000002000000000000000E",
"P00 DETAIL: archive retention on backup 20170612-151950F_20170612-152011D, archiveId = 9.4-1, start = 000000020000000000000012",
"P00 DETAIL: remove archive: archiveId = 9.4-1, start = 00000002000000000000000C, stop = 00000002000000000000000D",
2017-04-12 19:17:39 -04:00
"P00 DETAIL: remove archive: archiveId = 9.4-1, start = 00000002000000000000000F, stop = 000000020000000000000011",
v1.12: Page Checksums, Configuration, and Bug Fixes
IMPORTANT NOTE: In prior releases it was possible to specify options on the command-line that were invalid for the current command without getting an error. An error will now be generated for invalid options so it is important to carefully check command-line options in your environment to prevent disruption.
Bug Fixes:
* Fixed an issue where options that were invalid for the specified command could be provided on the command-line without generating an error. The options were ignored and did not cause any change in behavior, but it did lead to some confusion. Invalid options will now generate an error. (Reported by Nikhilchandra Kulkarni.)
* Fixed an issue where internal symlinks were not being created for tablespaces in the repository. This issue was only apparent when trying to bring up clusters in-place manually using filesystem snapshots and did not affect normal backup and restore.
* Fixed an issue that prevented errors from being output to the console before the logging system was initialized, i.e. while parsing options. Error codes were still being returned accurately so this would not have made a process look like it succeeded when it did not. (Reported by Adrian Vondendriesch.)
* Fixed an issue where the db-port option specified on the backup server would not be properly passed to the remote unless it was from the first configured database. (Reported by Michael Vitale.)
Features:
* Added the --checksum-page option to allow pgBackRest to validate page checksums in data files when checksums are enabled on PostgreSQL >= 9.3. Note that this functionality requires a C library which may not initially be available in OS packages. The option will automatically be enabled when the library is present and checksums are enabled on the cluster. (Suggested by Stephen Frost.)
* Added the --repo-link option to allow internal symlinks to be suppressed when the repository is located on a filesystem that does not support symlinks. This does not affect any pgBackRest functionality, but the convenience link latest will not be created and neither will internal tablespace symlinks, which will affect the ability to bring up clusters in-place manually using filesystem snapshots.
* Added the --repo-sync option to allow directory syncs in the repository to be disabled for file systems that do not support them, e.g. NTFS.
* Added a predictable log entry to signal that a command has completed successfully. For example a backup ends successfully with: INFO: backup command end: completed successfully. (Suggested by Jens Wilke.)
Refactoring:
* Abstracted code to determine which database cluster is the master and which are standbys. (Contributed by Cynthia Shang.)
* Improved consistency and flexibility of the protocol layer by using JSON for all messages.
* File copy protocol now accepts a function that can do additional processing on the copy buffers and return a result to the calling process.
* Improved IO->bufferRead to always return requested number of bytes until EOF.
* For simplicity, the pg_control file is now copied with the rest of the files instead of by itself of at the end of the process. The backup command does not require this behavior and the restore copies to a temporary file which is renamed at the end of the restore.
* Simplified the result hash of File->manifest(), Db->tablespaceMapGet(), and Db->databaseMapGet().
* Improved errors returned from child processes by removing redundant error level and code.
* Code cleanup in preparation for improved stanza-create command. (Contributed by Cynthia Shang.)
* Improved parameter/result logging in debug/trace functions.
2016-12-12 19:18:27 -05:00
"P00 INFO: expire command end: completed successfully"
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
"cmd" : [
"sudo service postgresql-9.4 stop"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --delta \\",
" --log-level-console=detail restore"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"demo\\/PG_VERSION - exists and matches backup|check\\/clean db path|restore global\\/pg_control"
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-05 20:23:03 -05:00
" [filtered 785 lines of output]",
v1.12: Page Checksums, Configuration, and Bug Fixes
IMPORTANT NOTE: In prior releases it was possible to specify options on the command-line that were invalid for the current command without getting an error. An error will now be generated for invalid options so it is important to carefully check command-line options in your environment to prevent disruption.
Bug Fixes:
* Fixed an issue where options that were invalid for the specified command could be provided on the command-line without generating an error. The options were ignored and did not cause any change in behavior, but it did lead to some confusion. Invalid options will now generate an error. (Reported by Nikhilchandra Kulkarni.)
* Fixed an issue where internal symlinks were not being created for tablespaces in the repository. This issue was only apparent when trying to bring up clusters in-place manually using filesystem snapshots and did not affect normal backup and restore.
* Fixed an issue that prevented errors from being output to the console before the logging system was initialized, i.e. while parsing options. Error codes were still being returned accurately so this would not have made a process look like it succeeded when it did not. (Reported by Adrian Vondendriesch.)
* Fixed an issue where the db-port option specified on the backup server would not be properly passed to the remote unless it was from the first configured database. (Reported by Michael Vitale.)
Features:
* Added the --checksum-page option to allow pgBackRest to validate page checksums in data files when checksums are enabled on PostgreSQL >= 9.3. Note that this functionality requires a C library which may not initially be available in OS packages. The option will automatically be enabled when the library is present and checksums are enabled on the cluster. (Suggested by Stephen Frost.)
* Added the --repo-link option to allow internal symlinks to be suppressed when the repository is located on a filesystem that does not support symlinks. This does not affect any pgBackRest functionality, but the convenience link latest will not be created and neither will internal tablespace symlinks, which will affect the ability to bring up clusters in-place manually using filesystem snapshots.
* Added the --repo-sync option to allow directory syncs in the repository to be disabled for file systems that do not support them, e.g. NTFS.
* Added a predictable log entry to signal that a command has completed successfully. For example a backup ends successfully with: INFO: backup command end: completed successfully. (Suggested by Jens Wilke.)
Refactoring:
* Abstracted code to determine which database cluster is the master and which are standbys. (Contributed by Cynthia Shang.)
* Improved consistency and flexibility of the protocol layer by using JSON for all messages.
* File copy protocol now accepts a function that can do additional processing on the copy buffers and return a result to the calling process.
* Improved IO->bufferRead to always return requested number of bytes until EOF.
* For simplicity, the pg_control file is now copied with the rest of the files instead of by itself of at the end of the process. The backup command does not require this behavior and the restore copies to a temporary file which is renamed at the end of the restore.
* Simplified the result hash of File->manifest(), Db->tablespaceMapGet(), and Db->databaseMapGet().
* Improved errors returned from child processes by removing redundant error level and code.
* Code cleanup in preparation for improved stanza-create command. (Contributed by Cynthia Shang.)
* Improved parameter/result logging in debug/trace functions.
2016-12-12 19:18:27 -05:00
"P01 DETAIL: restore file /var/lib/pgsql/9.4/data/base/1/11886 - exists and is zero size (0B, 100%)",
"P00 INFO: write /var/lib/pgsql/9.4/data/recovery.conf",
2017-06-12 11:36:00 -04:00
"P00 INFO: restore global/pg_control (performed last to ensure aborted restores cannot be started)",
v1.12: Page Checksums, Configuration, and Bug Fixes
IMPORTANT NOTE: In prior releases it was possible to specify options on the command-line that were invalid for the current command without getting an error. An error will now be generated for invalid options so it is important to carefully check command-line options in your environment to prevent disruption.
Bug Fixes:
* Fixed an issue where options that were invalid for the specified command could be provided on the command-line without generating an error. The options were ignored and did not cause any change in behavior, but it did lead to some confusion. Invalid options will now generate an error. (Reported by Nikhilchandra Kulkarni.)
* Fixed an issue where internal symlinks were not being created for tablespaces in the repository. This issue was only apparent when trying to bring up clusters in-place manually using filesystem snapshots and did not affect normal backup and restore.
* Fixed an issue that prevented errors from being output to the console before the logging system was initialized, i.e. while parsing options. Error codes were still being returned accurately so this would not have made a process look like it succeeded when it did not. (Reported by Adrian Vondendriesch.)
* Fixed an issue where the db-port option specified on the backup server would not be properly passed to the remote unless it was from the first configured database. (Reported by Michael Vitale.)
Features:
* Added the --checksum-page option to allow pgBackRest to validate page checksums in data files when checksums are enabled on PostgreSQL >= 9.3. Note that this functionality requires a C library which may not initially be available in OS packages. The option will automatically be enabled when the library is present and checksums are enabled on the cluster. (Suggested by Stephen Frost.)
* Added the --repo-link option to allow internal symlinks to be suppressed when the repository is located on a filesystem that does not support symlinks. This does not affect any pgBackRest functionality, but the convenience link latest will not be created and neither will internal tablespace symlinks, which will affect the ability to bring up clusters in-place manually using filesystem snapshots.
* Added the --repo-sync option to allow directory syncs in the repository to be disabled for file systems that do not support them, e.g. NTFS.
* Added a predictable log entry to signal that a command has completed successfully. For example a backup ends successfully with: INFO: backup command end: completed successfully. (Suggested by Jens Wilke.)
Refactoring:
* Abstracted code to determine which database cluster is the master and which are standbys. (Contributed by Cynthia Shang.)
* Improved consistency and flexibility of the protocol layer by using JSON for all messages.
* File copy protocol now accepts a function that can do additional processing on the copy buffers and return a result to the calling process.
* Improved IO->bufferRead to always return requested number of bytes until EOF.
* For simplicity, the pg_control file is now copied with the rest of the files instead of by itself of at the end of the process. The backup command does not require this behavior and the restore copies to a temporary file which is renamed at the end of the restore.
* Simplified the result hash of File->manifest(), Db->tablespaceMapGet(), and Db->databaseMapGet().
* Improved errors returned from child processes by removing redundant error level and code.
* Code cleanup in preparation for improved stanza-create command. (Contributed by Cynthia Shang.)
* Improved parameter/result logging in debug/trace functions.
2016-12-12 19:18:27 -05:00
"P00 INFO: restore command end: completed successfully"
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
"cmd" : [
"sudo service postgresql-9.4 start"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres sleep 1"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres psql -c \"create database test1;\""
],
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
"CREATE DATABASE"
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres psql -c \"create database test2;\""
],
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
"CREATE DATABASE"
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --type=incr backup"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres psql -c \"create table test1_table (id int); \\",
" insert into test1_table (id) values (1);\" test1"
],
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
"INSERT 0 1"
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres psql -c \"create table test2_table (id int); \\",
" insert into test2_table (id) values (2);\" test2"
],
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
"INSERT 0 1"
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres du -sh /var/lib/pgsql/9.4/data/base/16384"
],
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
"6.4M\t/var/lib/pgsql/9.4/data/base/16384"
]
}
},
{
"key" : {
"cmd" : [
"sudo service postgresql-9.4 stop"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --delta \\",
" --db-include=test2 restore"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo service postgresql-9.4 start"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres sleep 1"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres psql -c \"select * from test2_table;\" test2"
],
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
" id ",
"----",
" 2",
"(1 row)"
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres psql -c \"select * from test1_table;\" test1"
],
"err-expect" : "2",
"highlight" : {
"filter" : false,
"filter-context" : 2,
"list" : [
"relation mapping file.*contains invalid data"
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
"psql: FATAL: relation mapping file \"base/16384/pg_filenode.map\" contains invalid data"
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres du -sh /var/lib/pgsql/9.4/data/base/16384"
],
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
"152K\t/var/lib/pgsql/9.4/data/base/16384"
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres psql -c \"drop database test1;\""
],
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
"DROP DATABASE"
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres psql -c \"select oid, datname from pg_database order by oid;\""
],
"highlight" : {
"filter" : false,
"filter-context" : 2,
"list" : [
"test2"
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
" oid | datname ",
"-------+-----------",
" 1 | template1",
" 12135 | template0",
" 12140 | postgres",
" 16385 | test2",
"(4 rows)"
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --type=diff backup"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres psql -c \"begin; \\",
" create table important_table (message text); \\",
" insert into important_table values ('Important Data'); \\",
" commit; \\",
" select * from important_table;\""
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"Important Data"
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
" message ",
"----------------",
" Important Data",
"(1 row)"
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres psql -Atc \"select current_timestamp\""
],
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-06-12 11:36:00 -04:00
"2017-06-12 15:20:43.055933+00"
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres psql -c \"begin; \\",
" drop table important_table; \\",
" commit; \\",
" select * from important_table;\""
],
"err-expect" : "1",
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"does not exist"
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
"ERROR: relation \"important_table\" does not exist",
"LINE 1: ...le important_table; commit; select * from important_...",
" ^"
]
}
},
{
"key" : {
"cmd" : [
"sudo service postgresql-9.4 stop"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --delta \\",
2017-06-12 11:36:00 -04:00
" --type=time \"--target=2017-06-12 15:20:43.055933+00\" restore"
2016-06-02 11:10:24 -04:00
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo rm /var/lib/pgsql/9.4/data/pg_log/postgresql.log"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres cat /var/lib/pgsql/9.4/data/recovery.conf"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"recovery_target_time"
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
"restore_command = '/usr/bin/pgbackrest --stanza=demo archive-get %f \"%p\"'",
2017-06-12 11:36:00 -04:00
"recovery_target_time = '2017-06-12 15:20:43.055933+00'"
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
"cmd" : [
"sudo service postgresql-9.4 start"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres sleep 1"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres psql -c \"select * from important_table\""
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"Important Data"
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
" message ",
"----------------",
" Important Data",
"(1 row)"
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres cat /var/lib/pgsql/9.4/data/pg_log/postgresql.log"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"recovery stopping before|last completed transaction|starting point-in-time recovery"
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-06-12 11:36:00 -04:00
"LOG: database system was interrupted; last known up at 2017-06-12 15:20:38 UTC",
2016-06-02 11:10:24 -04:00
"LOG: creating missing WAL directory \"pg_xlog/archive_status\"",
2017-06-12 11:36:00 -04:00
"LOG: starting point-in-time recovery to 2017-06-12 15:20:43.055933+00",
2016-06-02 11:10:24 -04:00
"LOG: restored log file \"00000004.history\" from archive",
2017-02-13 20:00:30 -05:00
"LOG: restored log file \"000000040000000000000017\" from archive",
2017-03-02 20:15:14 -05:00
"LOG: redo starts at 0/17000028",
"LOG: consistent recovery state reached at 0/170000F0",
"LOG: restored log file \"000000040000000000000018\" from archive",
2017-06-12 11:36:00 -04:00
"LOG: recovery stopping before commit of transaction 686, time 2017-06-12 15:20:43.13618+00",
2017-03-02 20:15:14 -05:00
"LOG: redo done at 0/180157F0",
2017-06-12 11:36:00 -04:00
"LOG: last completed transaction was at log time 2017-06-12 15:20:42.962915+00",
2016-06-02 11:10:24 -04:00
"LOG: selected new timeline ID: 5",
"LOG: restored log file \"00000004.history\" from archive",
2016-10-10 17:35:58 -04:00
" [filtered 3 lines of output]"
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres psql -c \"begin; \\",
" drop table important_table; \\",
" commit; \\",
" select * from important_table;\""
],
"err-expect" : "1",
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"does not exist"
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
"ERROR: relation \"important_table\" does not exist",
"LINE 1: ...le important_table; commit; select * from important_...",
" ^"
]
}
},
{
"key" : {
"cmd" : [
2017-06-12 11:36:00 -04:00
"sudo -u postgres ls -1 /var/lib/pgbackrest/backup/demo | tail -5 | head -1"
2016-06-02 11:10:24 -04:00
],
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-06-12 11:36:00 -04:00
"20170612-151950F_20170612-152037D"
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --type=incr backup"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo service postgresql-9.4 stop"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --delta \\",
2017-06-12 11:36:00 -04:00
" --type=time \"--target=2017-06-12 15:20:43.055933+00\" restore"
2016-06-02 11:10:24 -04:00
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo rm /var/lib/pgsql/9.4/data/pg_log/postgresql.log"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo service postgresql-9.4 start"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres sleep 1"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres psql -c \"select * from important_table\""
],
"err-expect" : "1",
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"does not exist"
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
"ERROR: relation \"important_table\" does not exist",
"LINE 1: select * from important_table",
" ^"
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres cat /var/lib/pgsql/9.4/data/pg_log/postgresql.log"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
2016-07-02 10:22:52 -04:00
"starting point-in-time recovery|consistent recovery state reached"
2016-06-02 11:10:24 -04:00
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-06-12 11:36:00 -04:00
"LOG: database system was interrupted; last known up at 2017-06-12 15:20:51 UTC",
2016-06-02 11:10:24 -04:00
"LOG: creating missing WAL directory \"pg_xlog/archive_status\"",
2017-06-12 11:36:00 -04:00
"LOG: starting point-in-time recovery to 2017-06-12 15:20:43.055933+00",
2016-06-02 11:10:24 -04:00
"LOG: restored log file \"00000005.history\" from archive",
2017-03-02 20:15:14 -05:00
"LOG: restored log file \"000000050000000000000019\" from archive",
"LOG: redo starts at 0/19000028",
"LOG: consistent recovery state reached at 0/190000F0",
"LOG: redo done at 0/190000F0",
"LOG: restored log file \"000000050000000000000019\" from archive",
2016-10-10 17:35:58 -04:00
" [filtered 7 lines of output]"
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest info"
],
"highlight" : {
"filter" : false,
"filter-context" : 2,
"list" : [
2017-06-12 11:36:00 -04:00
"20170612-151950F_20170612-152037D"
2016-06-02 11:10:24 -04:00
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
"stanza: demo",
" status: ok",
2017-06-12 11:36:00 -04:00
" wal archive min/max: 00000002000000000000000A / 000000050000000000000019",
2016-06-02 11:10:24 -04:00
"",
2017-06-12 11:36:00 -04:00
" full backup: 20170612-151943F",
" timestamp start/stop: 2017-06-12 15:19:43 / 2017-06-12 15:19:49",
" wal start/stop: 00000002000000000000000A / 00000002000000000000000A",
2016-06-02 11:10:24 -04:00
" database size: 19.3MB, backup size: 19.3MB",
" repository size: 2.2MB, repository backup size: 2.2MB",
"",
2017-06-12 11:36:00 -04:00
" full backup: 20170612-151950F",
" timestamp start/stop: 2017-06-12 15:19:50 / 2017-06-12 15:19:55",
" wal start/stop: 00000002000000000000000B / 00000002000000000000000B",
2016-06-02 11:10:24 -04:00
" database size: 19.3MB, backup size: 19.3MB",
" repository size: 2.2MB, repository backup size: 2.2MB",
"",
2017-06-12 11:36:00 -04:00
" diff backup: 20170612-151950F_20170612-152011D",
" timestamp start/stop: 2017-06-12 15:20:11 / 2017-06-12 15:20:14",
2017-03-02 20:15:14 -05:00
" wal start/stop: 000000020000000000000012 / 000000020000000000000012",
2017-06-12 11:36:00 -04:00
" database size: 19.3MB, backup size: 10.1KB",
2016-11-17 09:57:59 -05:00
" repository size: 2.2MB, repository backup size: 1KB",
2017-06-12 11:36:00 -04:00
" backup reference list: 20170612-151950F",
2016-09-07 08:29:21 -04:00
"",
2017-06-12 11:36:00 -04:00
" incr backup: 20170612-151950F_20170612-152022I",
" timestamp start/stop: 2017-06-12 15:20:22 / 2017-06-12 15:20:27",
2017-03-02 20:15:14 -05:00
" wal start/stop: 000000030000000000000014 / 000000030000000000000014",
2016-09-07 08:29:21 -04:00
" database size: 31.9MB, backup size: 12.7MB",
" repository size: 3.7MB, repository backup size: 1.5MB",
2017-06-12 11:36:00 -04:00
" backup reference list: 20170612-151950F",
2016-09-07 08:29:21 -04:00
"",
2017-06-12 11:36:00 -04:00
" diff backup: 20170612-151950F_20170612-152037D",
" timestamp start/stop: 2017-06-12 15:20:37 / 2017-06-12 15:20:41",
2017-03-02 20:15:14 -05:00
" wal start/stop: 000000040000000000000017 / 000000040000000000000017",
2016-06-02 11:10:24 -04:00
" database size: 25.7MB, backup size: 6.5MB",
2017-06-12 11:36:00 -04:00
" repository size: 3MB, repository backup size: 790.6KB",
" backup reference list: 20170612-151950F",
2016-06-02 11:10:24 -04:00
"",
2017-06-12 11:36:00 -04:00
" incr backup: 20170612-151950F_20170612-152050I",
" timestamp start/stop: 2017-06-12 15:20:50 / 2017-06-12 15:20:54",
2017-03-02 20:15:14 -05:00
" wal start/stop: 000000050000000000000019 / 000000050000000000000019",
2016-06-02 11:10:24 -04:00
" database size: 25.6MB, backup size: 1.9MB",
2017-06-12 11:36:00 -04:00
" repository size: 3MB, repository backup size: 214.8KB",
" backup reference list: 20170612-151950F, 20170612-151950F_20170612-152037D"
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
"cmd" : [
"sudo service postgresql-9.4 stop"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --delta \\",
2017-06-12 11:36:00 -04:00
" --type=time \"--target=2017-06-12 15:20:43.055933+00\" \\",
" --set=20170612-151950F_20170612-152037D restore"
2016-06-02 11:10:24 -04:00
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo rm /var/lib/pgsql/9.4/data/pg_log/postgresql.log"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo service postgresql-9.4 start"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres sleep 1"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres psql -c \"select * from important_table\""
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"Important Data"
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
" message ",
"----------------",
" Important Data",
"(1 row)"
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres cat /var/lib/pgsql/9.4/data/pg_log/postgresql.log"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"recovery stopping before|last completed transaction|starting point-in-time recovery"
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-06-12 11:36:00 -04:00
"LOG: database system was interrupted; last known up at 2017-06-12 15:20:38 UTC",
2016-06-02 11:10:24 -04:00
"LOG: creating missing WAL directory \"pg_xlog/archive_status\"",
2017-06-12 11:36:00 -04:00
"LOG: starting point-in-time recovery to 2017-06-12 15:20:43.055933+00",
2016-06-02 11:10:24 -04:00
"LOG: restored log file \"00000004.history\" from archive",
2017-02-13 20:00:30 -05:00
"LOG: restored log file \"000000040000000000000017\" from archive",
2017-03-02 20:15:14 -05:00
"LOG: redo starts at 0/17000028",
"LOG: consistent recovery state reached at 0/170000F0",
"LOG: restored log file \"000000040000000000000018\" from archive",
2017-06-12 11:36:00 -04:00
"LOG: recovery stopping before commit of transaction 686, time 2017-06-12 15:20:43.13618+00",
2017-03-02 20:15:14 -05:00
"LOG: redo done at 0/180157F0",
2017-06-12 11:36:00 -04:00
"LOG: last completed transaction was at log time 2017-06-12 15:20:42.962915+00",
2016-06-02 11:10:24 -04:00
"LOG: restored log file \"00000005.history\" from archive",
2016-09-14 17:36:43 -05:00
"LOG: restored log file \"00000006.history\" from archive",
" [filtered 5 lines of output]"
2016-06-02 11:10:24 -04:00
]
}
},
2017-06-12 11:36:00 -04:00
{
"key" : {
"file" : "/etc/pgbackrest.conf",
"host" : "db-master",
"option" : {
"global" : {
"process-max" : {
"value" : "4"
},
"repo-path" : {
"value" : "/"
},
"repo-s3-bucket" : {
"value" : "demo-bucket"
},
"repo-s3-endpoint" : {
"value" : "s3.amazonaws.com"
},
"repo-s3-key" : {
"value" : "accessKey1"
},
"repo-s3-key-secret" : {
"value" : "verySecretKey1"
},
"repo-s3-region" : {
"value" : "us-east-1"
},
"repo-s3-verify-ssl" : {
"value" : "n"
},
"repo-type" : {
"value" : "s3"
}
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
"db-path=/var/lib/pgsql/9.4/data",
"",
"[global]",
"process-max=4",
"repo-path=/",
"repo-s3-bucket=demo-bucket",
"repo-s3-endpoint=s3.amazonaws.com",
"repo-s3-key=accessKey1",
"repo-s3-key-secret=verySecretKey1",
"repo-s3-region=us-east-1",
"repo-type=s3",
"retention-diff=2",
"retention-full=2",
"start-fast=y",
"stop-auto=y"
]
}
},
{
"key" : {
"cmd" : [
"aws s3 --no-verify-ssl mb s3://demo-bucket 2>&1"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --log-level-console=info stanza-create"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"completed successfully"
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
"P00 INFO: stanza-create command begin 1.19: --db-path=/var/lib/pgsql/9.4/data --log-level-console=info --no-log-timestamp --repo-path=/ --repo-s3-bucket=demo-bucket --repo-s3-endpoint=s3.amazonaws.com --repo-s3-region=us-east-1 --no-repo-s3-verify-ssl --repo-type=s3 --stanza=demo",
"P00 INFO: stanza-create command end: completed successfully"
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo \\",
" --log-level-console=info backup"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"no prior backup exists|full backup size"
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
"P00 INFO: backup command begin 1.19: --db-path=/var/lib/pgsql/9.4/data --log-level-console=info --log-level-stderr=off --no-log-timestamp --process-max=4 --repo-path=/ --repo-s3-bucket=demo-bucket --repo-s3-endpoint=s3.amazonaws.com --repo-s3-region=us-east-1 --no-repo-s3-verify-ssl --repo-type=s3 --retention-diff=2 --retention-full=2 --stanza=demo --start-fast --stop-auto",
"P00 WARN: no prior backup exists, incr backup has been changed to full",
"P00 INFO: execute exclusive pg_start_backup() with label \"pgBackRest backup started at 2017-06-12 15:21:12\": backup begins after the requested immediate checkpoint completes",
"P00 INFO: backup start archive = 000000070000000000000019, lsn = 0/19000028",
" [filtered 1002 lines of output]",
"P01 INFO: backup file /var/lib/pgsql/9.4/data/base/1/11896 (0B, 100%)",
"P03 INFO: backup file /var/lib/pgsql/9.4/data/base/1/11886 (0B, 100%)",
"P00 INFO: full backup size = 25.6MB",
"P00 INFO: execute exclusive pg_stop_backup() and wait for all WAL segments to archive",
"P00 INFO: backup stop archive = 000000070000000000000019, lsn = 0/19000128",
" [filtered 4 lines of output]"
]
}
},
2016-06-02 11:10:24 -04:00
{
"key" : {
2017-03-02 20:15:14 -05:00
"image" : "pgbackrest/test:co6-backup-doc-pre",
2016-06-02 11:10:24 -04:00
"mount" : "/backrest:/backrest",
"name" : "backup",
"os" : "co6",
2017-04-12 19:17:39 -04:00
"user" : "ubuntu"
2016-06-02 11:10:24 -04:00
},
"type" : "host",
"value" : {
2017-06-12 11:36:00 -04:00
"ip" : "172.17.0.4"
2016-06-02 11:10:24 -04:00
}
},
{
"key" : {
"file" : "/etc/pgbackrest.conf",
"host" : "backup",
"option" : {
"global" : {
"repo-path" : {
"value" : "/var/lib/pgbackrest"
}
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[global]",
"repo-path=/var/lib/pgbackrest"
]
}
},
{
"key" : {
"file" : "/etc/pgbackrest.conf",
"host" : "backup",
"option" : {
"demo" : {
v1.06: Backup from Standby and Bug Fixes
Bug Fixes:
* Fixed an issue where a tablespace link that referenced another link would not produce an error, but instead skip the tablespace entirely. (Reported by Michael Vitale.)
* Fixed an issue where options that should not allow multiple values could be specified multiple times in pgbackrest.conf without an error being raised. (Reported by Michael Vitale.)
* Fixed an issue where the protocol-timeout option was not automatically increased when the db-timeout option was increased. (Reported by Todd Vernick.)
Features:
* Backup from a standby cluster. A connection to the primary cluster is still required to start/stop the backup and copy files that are not replicated, but the vast majority of files are copied from the standby in order to reduce load on the master.
* More flexible configuration for databases. Master and standby can both be configured on the backup server and pgBackRest will automatically determine which is the master. This means no configuration changes for backup are required after failing over from a master to standby when a separate backup server is used.
* Exclude directories during backup that are cleaned, recreated, or zeroed by PostgreSQL at startup. These include pgsql_tmp and pg_stat_tmp. The postgresql.auto.conf.tmp file is now excluded in addition to files that were already excluded: backup_label.old, postmaster.opts, postmaster.pid, recovery.conf, recovery.done.
* Experimental support for non-exclusive backups in PostgreSQL 9.6 beta4. Changes to the control/catalog/WAL versions in subsequent betas may break compatibility but pgBackRest will be updated with each release to keep pace.
Refactoring:
* Simplify protocol creation and identifying which host is local/remote.
* Removed all OP_* function constants that were used only for debugging, not in the protocol, and replaced with __PACKAGE__.
* Improvements in Db module: separated out connect() function, allow executeSql() calls that do not return data, and improve error handling.
* Improve error message for links that reference links in manifest build.
* Added hints to error message when relative paths are detected in archive-push or archive-get.
* Improve backup log messages to indicate which host the files are being copied from.
2016-08-25 11:49:09 -04:00
"db1-host" : {
2016-06-02 11:10:24 -04:00
"value" : "db-master"
},
v1.06: Backup from Standby and Bug Fixes
Bug Fixes:
* Fixed an issue where a tablespace link that referenced another link would not produce an error, but instead skip the tablespace entirely. (Reported by Michael Vitale.)
* Fixed an issue where options that should not allow multiple values could be specified multiple times in pgbackrest.conf without an error being raised. (Reported by Michael Vitale.)
* Fixed an issue where the protocol-timeout option was not automatically increased when the db-timeout option was increased. (Reported by Todd Vernick.)
Features:
* Backup from a standby cluster. A connection to the primary cluster is still required to start/stop the backup and copy files that are not replicated, but the vast majority of files are copied from the standby in order to reduce load on the master.
* More flexible configuration for databases. Master and standby can both be configured on the backup server and pgBackRest will automatically determine which is the master. This means no configuration changes for backup are required after failing over from a master to standby when a separate backup server is used.
* Exclude directories during backup that are cleaned, recreated, or zeroed by PostgreSQL at startup. These include pgsql_tmp and pg_stat_tmp. The postgresql.auto.conf.tmp file is now excluded in addition to files that were already excluded: backup_label.old, postmaster.opts, postmaster.pid, recovery.conf, recovery.done.
* Experimental support for non-exclusive backups in PostgreSQL 9.6 beta4. Changes to the control/catalog/WAL versions in subsequent betas may break compatibility but pgBackRest will be updated with each release to keep pace.
Refactoring:
* Simplify protocol creation and identifying which host is local/remote.
* Removed all OP_* function constants that were used only for debugging, not in the protocol, and replaced with __PACKAGE__.
* Improvements in Db module: separated out connect() function, allow executeSql() calls that do not return data, and improve error handling.
* Improve error message for links that reference links in manifest build.
* Added hints to error message when relative paths are detected in archive-push or archive-get.
* Improve backup log messages to indicate which host the files are being copied from.
2016-08-25 11:49:09 -04:00
"db1-path" : {
2016-06-02 11:10:24 -04:00
"value" : "/var/lib/pgsql/9.4/data"
2016-07-30 09:42:35 -04:00
},
v1.06: Backup from Standby and Bug Fixes
Bug Fixes:
* Fixed an issue where a tablespace link that referenced another link would not produce an error, but instead skip the tablespace entirely. (Reported by Michael Vitale.)
* Fixed an issue where options that should not allow multiple values could be specified multiple times in pgbackrest.conf without an error being raised. (Reported by Michael Vitale.)
* Fixed an issue where the protocol-timeout option was not automatically increased when the db-timeout option was increased. (Reported by Todd Vernick.)
Features:
* Backup from a standby cluster. A connection to the primary cluster is still required to start/stop the backup and copy files that are not replicated, but the vast majority of files are copied from the standby in order to reduce load on the master.
* More flexible configuration for databases. Master and standby can both be configured on the backup server and pgBackRest will automatically determine which is the master. This means no configuration changes for backup are required after failing over from a master to standby when a separate backup server is used.
* Exclude directories during backup that are cleaned, recreated, or zeroed by PostgreSQL at startup. These include pgsql_tmp and pg_stat_tmp. The postgresql.auto.conf.tmp file is now excluded in addition to files that were already excluded: backup_label.old, postmaster.opts, postmaster.pid, recovery.conf, recovery.done.
* Experimental support for non-exclusive backups in PostgreSQL 9.6 beta4. Changes to the control/catalog/WAL versions in subsequent betas may break compatibility but pgBackRest will be updated with each release to keep pace.
Refactoring:
* Simplify protocol creation and identifying which host is local/remote.
* Removed all OP_* function constants that were used only for debugging, not in the protocol, and replaced with __PACKAGE__.
* Improvements in Db module: separated out connect() function, allow executeSql() calls that do not return data, and improve error handling.
* Improve error message for links that reference links in manifest build.
* Added hints to error message when relative paths are detected in archive-push or archive-get.
* Improve backup log messages to indicate which host the files are being copied from.
2016-08-25 11:49:09 -04:00
"db1-user" : {
2016-07-30 09:42:35 -04:00
"value" : "postgres"
2016-06-02 11:10:24 -04:00
}
},
"global" : {
2016-10-10 17:35:58 -04:00
"log-level-stderr" : {
"value" : "off"
},
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-05 20:23:03 -05:00
"log-timestamp" : {
"value" : "n"
},
v1.12: Page Checksums, Configuration, and Bug Fixes
IMPORTANT NOTE: In prior releases it was possible to specify options on the command-line that were invalid for the current command without getting an error. An error will now be generated for invalid options so it is important to carefully check command-line options in your environment to prevent disruption.
Bug Fixes:
* Fixed an issue where options that were invalid for the specified command could be provided on the command-line without generating an error. The options were ignored and did not cause any change in behavior, but it did lead to some confusion. Invalid options will now generate an error. (Reported by Nikhilchandra Kulkarni.)
* Fixed an issue where internal symlinks were not being created for tablespaces in the repository. This issue was only apparent when trying to bring up clusters in-place manually using filesystem snapshots and did not affect normal backup and restore.
* Fixed an issue that prevented errors from being output to the console before the logging system was initialized, i.e. while parsing options. Error codes were still being returned accurately so this would not have made a process look like it succeeded when it did not. (Reported by Adrian Vondendriesch.)
* Fixed an issue where the db-port option specified on the backup server would not be properly passed to the remote unless it was from the first configured database. (Reported by Michael Vitale.)
Features:
* Added the --checksum-page option to allow pgBackRest to validate page checksums in data files when checksums are enabled on PostgreSQL >= 9.3. Note that this functionality requires a C library which may not initially be available in OS packages. The option will automatically be enabled when the library is present and checksums are enabled on the cluster. (Suggested by Stephen Frost.)
* Added the --repo-link option to allow internal symlinks to be suppressed when the repository is located on a filesystem that does not support symlinks. This does not affect any pgBackRest functionality, but the convenience link latest will not be created and neither will internal tablespace symlinks, which will affect the ability to bring up clusters in-place manually using filesystem snapshots.
* Added the --repo-sync option to allow directory syncs in the repository to be disabled for file systems that do not support them, e.g. NTFS.
* Added a predictable log entry to signal that a command has completed successfully. For example a backup ends successfully with: INFO: backup command end: completed successfully. (Suggested by Jens Wilke.)
Refactoring:
* Abstracted code to determine which database cluster is the master and which are standbys. (Contributed by Cynthia Shang.)
* Improved consistency and flexibility of the protocol layer by using JSON for all messages.
* File copy protocol now accepts a function that can do additional processing on the copy buffers and return a result to the calling process.
* Improved IO->bufferRead to always return requested number of bytes until EOF.
* For simplicity, the pg_control file is now copied with the rest of the files instead of by itself of at the end of the process. The backup command does not require this behavior and the restore copies to a temporary file which is renamed at the end of the restore.
* Simplified the result hash of File->manifest(), Db->tablespaceMapGet(), and Db->databaseMapGet().
* Improved errors returned from child processes by removing redundant error level and code.
* Code cleanup in preparation for improved stanza-create command. (Contributed by Cynthia Shang.)
* Improved parameter/result logging in debug/trace functions.
2016-12-12 19:18:27 -05:00
"retention-full" : {
"value" : "2"
},
2016-06-02 11:10:24 -04:00
"start-fast" : {
"value" : "y"
}
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
v1.06: Backup from Standby and Bug Fixes
Bug Fixes:
* Fixed an issue where a tablespace link that referenced another link would not produce an error, but instead skip the tablespace entirely. (Reported by Michael Vitale.)
* Fixed an issue where options that should not allow multiple values could be specified multiple times in pgbackrest.conf without an error being raised. (Reported by Michael Vitale.)
* Fixed an issue where the protocol-timeout option was not automatically increased when the db-timeout option was increased. (Reported by Todd Vernick.)
Features:
* Backup from a standby cluster. A connection to the primary cluster is still required to start/stop the backup and copy files that are not replicated, but the vast majority of files are copied from the standby in order to reduce load on the master.
* More flexible configuration for databases. Master and standby can both be configured on the backup server and pgBackRest will automatically determine which is the master. This means no configuration changes for backup are required after failing over from a master to standby when a separate backup server is used.
* Exclude directories during backup that are cleaned, recreated, or zeroed by PostgreSQL at startup. These include pgsql_tmp and pg_stat_tmp. The postgresql.auto.conf.tmp file is now excluded in addition to files that were already excluded: backup_label.old, postmaster.opts, postmaster.pid, recovery.conf, recovery.done.
* Experimental support for non-exclusive backups in PostgreSQL 9.6 beta4. Changes to the control/catalog/WAL versions in subsequent betas may break compatibility but pgBackRest will be updated with each release to keep pace.
Refactoring:
* Simplify protocol creation and identifying which host is local/remote.
* Removed all OP_* function constants that were used only for debugging, not in the protocol, and replaced with __PACKAGE__.
* Improvements in Db module: separated out connect() function, allow executeSql() calls that do not return data, and improve error handling.
* Improve error message for links that reference links in manifest build.
* Added hints to error message when relative paths are detected in archive-push or archive-get.
* Improve backup log messages to indicate which host the files are being copied from.
2016-08-25 11:49:09 -04:00
"db1-host=db-master",
"db1-path=/var/lib/pgsql/9.4/data",
"db1-user=postgres",
2016-06-02 11:10:24 -04:00
"",
"[global]",
"repo-path=/var/lib/pgbackrest",
v1.12: Page Checksums, Configuration, and Bug Fixes
IMPORTANT NOTE: In prior releases it was possible to specify options on the command-line that were invalid for the current command without getting an error. An error will now be generated for invalid options so it is important to carefully check command-line options in your environment to prevent disruption.
Bug Fixes:
* Fixed an issue where options that were invalid for the specified command could be provided on the command-line without generating an error. The options were ignored and did not cause any change in behavior, but it did lead to some confusion. Invalid options will now generate an error. (Reported by Nikhilchandra Kulkarni.)
* Fixed an issue where internal symlinks were not being created for tablespaces in the repository. This issue was only apparent when trying to bring up clusters in-place manually using filesystem snapshots and did not affect normal backup and restore.
* Fixed an issue that prevented errors from being output to the console before the logging system was initialized, i.e. while parsing options. Error codes were still being returned accurately so this would not have made a process look like it succeeded when it did not. (Reported by Adrian Vondendriesch.)
* Fixed an issue where the db-port option specified on the backup server would not be properly passed to the remote unless it was from the first configured database. (Reported by Michael Vitale.)
Features:
* Added the --checksum-page option to allow pgBackRest to validate page checksums in data files when checksums are enabled on PostgreSQL >= 9.3. Note that this functionality requires a C library which may not initially be available in OS packages. The option will automatically be enabled when the library is present and checksums are enabled on the cluster. (Suggested by Stephen Frost.)
* Added the --repo-link option to allow internal symlinks to be suppressed when the repository is located on a filesystem that does not support symlinks. This does not affect any pgBackRest functionality, but the convenience link latest will not be created and neither will internal tablespace symlinks, which will affect the ability to bring up clusters in-place manually using filesystem snapshots.
* Added the --repo-sync option to allow directory syncs in the repository to be disabled for file systems that do not support them, e.g. NTFS.
* Added a predictable log entry to signal that a command has completed successfully. For example a backup ends successfully with: INFO: backup command end: completed successfully. (Suggested by Jens Wilke.)
Refactoring:
* Abstracted code to determine which database cluster is the master and which are standbys. (Contributed by Cynthia Shang.)
* Improved consistency and flexibility of the protocol layer by using JSON for all messages.
* File copy protocol now accepts a function that can do additional processing on the copy buffers and return a result to the calling process.
* Improved IO->bufferRead to always return requested number of bytes until EOF.
* For simplicity, the pg_control file is now copied with the rest of the files instead of by itself of at the end of the process. The backup command does not require this behavior and the restore copies to a temporary file which is renamed at the end of the restore.
* Simplified the result hash of File->manifest(), Db->tablespaceMapGet(), and Db->databaseMapGet().
* Improved errors returned from child processes by removing redundant error level and code.
* Code cleanup in preparation for improved stanza-create command. (Contributed by Cynthia Shang.)
* Improved parameter/result logging in debug/trace functions.
2016-12-12 19:18:27 -05:00
"retention-full=2",
2016-06-02 11:10:24 -04:00
"start-fast=y"
]
}
},
{
"key" : {
"file" : "/etc/pgbackrest.conf",
"host" : "db-master",
"option" : {
"demo" : {
"db-path" : {
"value" : "/var/lib/pgsql/9.4/data"
}
},
"global" : {
"backup-host" : {
"value" : "backup"
},
2016-07-30 09:42:35 -04:00
"backup-user" : {
"value" : "backrest"
},
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-05 20:23:03 -05:00
"log-level-file" : {
"value" : "detail"
},
2016-10-10 17:35:58 -04:00
"log-level-stderr" : {
"value" : "off"
},
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-05 20:23:03 -05:00
"log-timestamp" : {
"value" : "n"
2016-06-02 11:10:24 -04:00
}
}
},
"reset" : true
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
"db-path=/var/lib/pgsql/9.4/data",
"",
"[global]",
"backup-host=backup",
2016-07-30 09:42:35 -04:00
"backup-user=backrest",
2017-06-12 11:36:00 -04:00
"log-level-file=detail"
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
"cmd" : [
"sudo find /var/lib/pgbackrest -delete"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-05 20:23:03 -05:00
{
"key" : {
"cmd" : [
"sudo -u backrest pgbackrest --stanza=demo stanza-create"
],
"host" : "backup",
"output" : true
},
"type" : "exe"
},
2016-07-02 10:22:52 -04:00
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo check"
],
"host" : "db-master",
"output" : true
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u backrest pgbackrest --stanza=demo check"
],
"host" : "backup",
"output" : true
},
2016-10-10 17:35:58 -04:00
"type" : "exe"
2016-07-02 10:22:52 -04:00
},
2016-06-02 11:10:24 -04:00
{
"key" : {
"cmd" : [
"sudo -u backrest pgbackrest --stanza=demo backup"
],
"host" : "backup",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2016-09-14 17:36:43 -05:00
"P00 WARN: no prior backup exists, incr backup has been changed to full"
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
"cmd" : [
"sudo service postgresql-9.4 stop"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --delta restore"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo service postgresql-9.4 start"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres sleep 1"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u backrest pgbackrest --stanza=demo backup"
],
"host" : "backup",
"output" : false
},
"type" : "exe"
},
2016-07-02 10:22:52 -04:00
{
"key" : {
"cmd" : [
"sudo mkdir -m 750 /var/spool/pgbackrest"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo chown postgres:postgres /var/spool/pgbackrest"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"file" : "/etc/pgbackrest.conf",
"host" : "db-master",
"option" : {
"global" : {
"archive-async" : {
"value" : "y"
},
"spool-path" : {
"value" : "/var/spool/pgbackrest"
}
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-05 20:23:03 -05:00
},
"global:archive-push" : {
"process-max" : {
"value" : "2"
}
2016-07-02 10:22:52 -04:00
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
"db-path=/var/lib/pgsql/9.4/data",
"",
"[global]",
"archive-async=y",
"backup-host=backup",
2016-07-30 09:42:35 -04:00
"backup-user=backrest",
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-05 20:23:03 -05:00
"log-level-file=detail",
"spool-path=/var/spool/pgbackrest",
"",
"[global:archive-push]",
"process-max=2"
2016-07-02 10:22:52 -04:00
]
}
},
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-05 20:23:03 -05:00
{
"key" : {
"cmd" : [
"sudo -u postgres rm -f /var/log/pgbackrest/demo-archive-async.log"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres psql -c \" \\",
" select pg_create_restore_point('test async push'); select pg_switch_xlog(); \\",
" select pg_create_restore_point('test async push'); select pg_switch_xlog(); \\",
" select pg_create_restore_point('test async push'); select pg_switch_xlog(); \\",
" select pg_create_restore_point('test async push'); select pg_switch_xlog(); \\",
" select pg_create_restore_point('test async push'); select pg_switch_xlog();\""
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
2016-07-02 10:22:52 -04:00
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --log-level-console=info check"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"WAL segment"
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-06-12 11:36:00 -04:00
"P00 INFO: check command begin 1.19: --backup-host=backup --backup-user=backrest --db-path=/var/lib/pgsql/9.4/data --log-level-console=info --log-level-file=detail --log-level-stderr=off --no-log-timestamp --stanza=demo",
"P00 INFO: WAL segment 000000080000000000000025 successfully stored in the archive at '/var/lib/pgbackrest/archive/demo/9.4-1/0000000800000000/000000080000000000000025-7173279d595a7c73175a194ef09e3a981e7d5ea1.gz'",
v1.12: Page Checksums, Configuration, and Bug Fixes
IMPORTANT NOTE: In prior releases it was possible to specify options on the command-line that were invalid for the current command without getting an error. An error will now be generated for invalid options so it is important to carefully check command-line options in your environment to prevent disruption.
Bug Fixes:
* Fixed an issue where options that were invalid for the specified command could be provided on the command-line without generating an error. The options were ignored and did not cause any change in behavior, but it did lead to some confusion. Invalid options will now generate an error. (Reported by Nikhilchandra Kulkarni.)
* Fixed an issue where internal symlinks were not being created for tablespaces in the repository. This issue was only apparent when trying to bring up clusters in-place manually using filesystem snapshots and did not affect normal backup and restore.
* Fixed an issue that prevented errors from being output to the console before the logging system was initialized, i.e. while parsing options. Error codes were still being returned accurately so this would not have made a process look like it succeeded when it did not. (Reported by Adrian Vondendriesch.)
* Fixed an issue where the db-port option specified on the backup server would not be properly passed to the remote unless it was from the first configured database. (Reported by Michael Vitale.)
Features:
* Added the --checksum-page option to allow pgBackRest to validate page checksums in data files when checksums are enabled on PostgreSQL >= 9.3. Note that this functionality requires a C library which may not initially be available in OS packages. The option will automatically be enabled when the library is present and checksums are enabled on the cluster. (Suggested by Stephen Frost.)
* Added the --repo-link option to allow internal symlinks to be suppressed when the repository is located on a filesystem that does not support symlinks. This does not affect any pgBackRest functionality, but the convenience link latest will not be created and neither will internal tablespace symlinks, which will affect the ability to bring up clusters in-place manually using filesystem snapshots.
* Added the --repo-sync option to allow directory syncs in the repository to be disabled for file systems that do not support them, e.g. NTFS.
* Added a predictable log entry to signal that a command has completed successfully. For example a backup ends successfully with: INFO: backup command end: completed successfully. (Suggested by Jens Wilke.)
Refactoring:
* Abstracted code to determine which database cluster is the master and which are standbys. (Contributed by Cynthia Shang.)
* Improved consistency and flexibility of the protocol layer by using JSON for all messages.
* File copy protocol now accepts a function that can do additional processing on the copy buffers and return a result to the calling process.
* Improved IO->bufferRead to always return requested number of bytes until EOF.
* For simplicity, the pg_control file is now copied with the rest of the files instead of by itself of at the end of the process. The backup command does not require this behavior and the restore copies to a temporary file which is renamed at the end of the restore.
* Simplified the result hash of File->manifest(), Db->tablespaceMapGet(), and Db->databaseMapGet().
* Improved errors returned from child processes by removing redundant error level and code.
* Code cleanup in preparation for improved stanza-create command. (Contributed by Cynthia Shang.)
* Improved parameter/result logging in debug/trace functions.
2016-12-12 19:18:27 -05:00
"P00 INFO: check command end: completed successfully"
2016-07-02 10:22:52 -04:00
]
}
},
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-05 20:23:03 -05:00
{
"key" : {
"cmd" : [
"sudo -u postgres cat /var/log/pgbackrest/demo-archive-async.log"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
" WAL file\\(s\\) to archive|pushed WAL file 0000000"
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
"-------------------PROCESS START-------------------",
2017-06-12 11:36:00 -04:00
"P00 INFO: archive-push command begin 1.19: --archive-async --backup-host=backup --backup-user=backrest --db-path=/var/lib/pgsql/9.4/data --log-level-file=detail --log-level-stderr=off --no-log-timestamp --process-max=2 --spool-path=/var/spool/pgbackrest --stanza=demo",
"P00 INFO: push 3 WAL file(s) to archive: 000000080000000000000020...000000080000000000000022",
2017-03-13 16:54:51 -04:00
"P02 DETAIL: pushed WAL file 000000080000000000000021 to archive",
2017-06-12 11:36:00 -04:00
"P01 DETAIL: pushed WAL file 000000080000000000000020 to archive",
"P02 DETAIL: pushed WAL file 000000080000000000000022 to archive",
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-05 20:23:03 -05:00
"P00 INFO: archive-push command end: completed successfully",
"",
"-------------------PROCESS START-------------------",
2017-06-12 11:36:00 -04:00
"P00 INFO: archive-push command begin 1.19: --archive-async --backup-host=backup --backup-user=backrest --db-path=/var/lib/pgsql/9.4/data --log-level-file=detail --log-level-stderr=off --no-log-timestamp --process-max=2 --spool-path=/var/spool/pgbackrest --stanza=demo",
"P00 INFO: push 3 WAL file(s) to archive: 000000080000000000000023...000000080000000000000025",
"P02 DETAIL: pushed WAL file 000000080000000000000024 to archive",
"P01 DETAIL: pushed WAL file 000000080000000000000023 to archive",
"P02 DETAIL: pushed WAL file 000000080000000000000025 to archive",
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-05 20:23:03 -05:00
"P00 INFO: archive-push command end: completed successfully"
]
}
},
{
"key" : {
"cmd" : [
"sudo lscpu"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"^CPU\\(s\\)\\:"
]
},
"host" : "backup",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
"Architecture: x86_64",
"CPU op-mode(s): 32-bit, 64-bit",
"Byte Order: Little Endian",
"CPU(s): 8",
"On-line CPU(s) list: 0-7",
"Thread(s) per core: 1",
" [filtered 16 lines of output]"
]
}
},
{
"key" : {
"cmd" : [
"sudo -u backrest pgbackrest --stanza=demo --type=full backup"
],
"host" : "backup",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"file" : "/etc/pgbackrest.conf",
"host" : "backup",
"option" : {
"global" : {
"process-max" : {
"value" : "3"
}
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
"db1-host=db-master",
"db1-path=/var/lib/pgsql/9.4/data",
"db1-user=postgres",
"",
"[global]",
"process-max=3",
"repo-path=/var/lib/pgbackrest",
"retention-full=2",
"start-fast=y"
]
}
},
{
"key" : {
"cmd" : [
"sudo -u backrest pgbackrest --stanza=demo --type=full backup"
],
"host" : "backup",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u backrest pgbackrest info"
],
"highlight" : {
"filter" : false,
"filter-context" : 2,
"list" : [
"timestamp start/stop"
]
},
"host" : "backup",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
"stanza: demo",
" status: ok",
2017-06-12 11:36:00 -04:00
" wal archive min/max: 000000080000000000000026 / 000000080000000000000027",
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-05 20:23:03 -05:00
"",
2017-06-12 11:36:00 -04:00
" full backup: 20170612-152214F",
" timestamp start/stop: 2017-06-12 15:22:14 / 2017-06-12 15:22:22",
" wal start/stop: 000000080000000000000026 / 000000080000000000000026",
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-05 20:23:03 -05:00
" database size: 25.6MB, backup size: 25.6MB",
" repository size: 3MB, repository backup size: 3MB",
"",
2017-06-12 11:36:00 -04:00
" full backup: 20170612-152224F",
" timestamp start/stop: 2017-06-12 15:22:24 / 2017-06-12 15:22:30",
" wal start/stop: 000000080000000000000027 / 000000080000000000000027",
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-05 20:23:03 -05:00
" database size: 25.6MB, backup size: 25.6MB",
" repository size: 3MB, repository backup size: 3MB"
]
}
},
2016-06-02 11:10:24 -04:00
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest stop"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
v1.12: Page Checksums, Configuration, and Bug Fixes
IMPORTANT NOTE: In prior releases it was possible to specify options on the command-line that were invalid for the current command without getting an error. An error will now be generated for invalid options so it is important to carefully check command-line options in your environment to prevent disruption.
Bug Fixes:
* Fixed an issue where options that were invalid for the specified command could be provided on the command-line without generating an error. The options were ignored and did not cause any change in behavior, but it did lead to some confusion. Invalid options will now generate an error. (Reported by Nikhilchandra Kulkarni.)
* Fixed an issue where internal symlinks were not being created for tablespaces in the repository. This issue was only apparent when trying to bring up clusters in-place manually using filesystem snapshots and did not affect normal backup and restore.
* Fixed an issue that prevented errors from being output to the console before the logging system was initialized, i.e. while parsing options. Error codes were still being returned accurately so this would not have made a process look like it succeeded when it did not. (Reported by Adrian Vondendriesch.)
* Fixed an issue where the db-port option specified on the backup server would not be properly passed to the remote unless it was from the first configured database. (Reported by Michael Vitale.)
Features:
* Added the --checksum-page option to allow pgBackRest to validate page checksums in data files when checksums are enabled on PostgreSQL >= 9.3. Note that this functionality requires a C library which may not initially be available in OS packages. The option will automatically be enabled when the library is present and checksums are enabled on the cluster. (Suggested by Stephen Frost.)
* Added the --repo-link option to allow internal symlinks to be suppressed when the repository is located on a filesystem that does not support symlinks. This does not affect any pgBackRest functionality, but the convenience link latest will not be created and neither will internal tablespace symlinks, which will affect the ability to bring up clusters in-place manually using filesystem snapshots.
* Added the --repo-sync option to allow directory syncs in the repository to be disabled for file systems that do not support them, e.g. NTFS.
* Added a predictable log entry to signal that a command has completed successfully. For example a backup ends successfully with: INFO: backup command end: completed successfully. (Suggested by Jens Wilke.)
Refactoring:
* Abstracted code to determine which database cluster is the master and which are standbys. (Contributed by Cynthia Shang.)
* Improved consistency and flexibility of the protocol layer by using JSON for all messages.
* File copy protocol now accepts a function that can do additional processing on the copy buffers and return a result to the calling process.
* Improved IO->bufferRead to always return requested number of bytes until EOF.
* For simplicity, the pg_control file is now copied with the rest of the files instead of by itself of at the end of the process. The backup command does not require this behavior and the restore copies to a temporary file which is renamed at the end of the restore.
* Simplified the result hash of File->manifest(), Db->tablespaceMapGet(), and Db->databaseMapGet().
* Improved errors returned from child processes by removing redundant error level and code.
* Code cleanup in preparation for improved stanza-create command. (Contributed by Cynthia Shang.)
* Improved parameter/result logging in debug/trace functions.
2016-12-12 19:18:27 -05:00
"sudo -u backrest pgbackrest --stanza=demo backup"
2016-06-02 11:10:24 -04:00
],
2017-04-12 19:17:39 -04:00
"err-expect" : "62",
2016-06-02 11:10:24 -04:00
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
2017-06-12 11:36:00 -04:00
"process .* terminated unexpectedly.*: stop file exists for all stanzas"
2016-06-02 11:10:24 -04:00
]
},
v1.12: Page Checksums, Configuration, and Bug Fixes
IMPORTANT NOTE: In prior releases it was possible to specify options on the command-line that were invalid for the current command without getting an error. An error will now be generated for invalid options so it is important to carefully check command-line options in your environment to prevent disruption.
Bug Fixes:
* Fixed an issue where options that were invalid for the specified command could be provided on the command-line without generating an error. The options were ignored and did not cause any change in behavior, but it did lead to some confusion. Invalid options will now generate an error. (Reported by Nikhilchandra Kulkarni.)
* Fixed an issue where internal symlinks were not being created for tablespaces in the repository. This issue was only apparent when trying to bring up clusters in-place manually using filesystem snapshots and did not affect normal backup and restore.
* Fixed an issue that prevented errors from being output to the console before the logging system was initialized, i.e. while parsing options. Error codes were still being returned accurately so this would not have made a process look like it succeeded when it did not. (Reported by Adrian Vondendriesch.)
* Fixed an issue where the db-port option specified on the backup server would not be properly passed to the remote unless it was from the first configured database. (Reported by Michael Vitale.)
Features:
* Added the --checksum-page option to allow pgBackRest to validate page checksums in data files when checksums are enabled on PostgreSQL >= 9.3. Note that this functionality requires a C library which may not initially be available in OS packages. The option will automatically be enabled when the library is present and checksums are enabled on the cluster. (Suggested by Stephen Frost.)
* Added the --repo-link option to allow internal symlinks to be suppressed when the repository is located on a filesystem that does not support symlinks. This does not affect any pgBackRest functionality, but the convenience link latest will not be created and neither will internal tablespace symlinks, which will affect the ability to bring up clusters in-place manually using filesystem snapshots.
* Added the --repo-sync option to allow directory syncs in the repository to be disabled for file systems that do not support them, e.g. NTFS.
* Added a predictable log entry to signal that a command has completed successfully. For example a backup ends successfully with: INFO: backup command end: completed successfully. (Suggested by Jens Wilke.)
Refactoring:
* Abstracted code to determine which database cluster is the master and which are standbys. (Contributed by Cynthia Shang.)
* Improved consistency and flexibility of the protocol layer by using JSON for all messages.
* File copy protocol now accepts a function that can do additional processing on the copy buffers and return a result to the calling process.
* Improved IO->bufferRead to always return requested number of bytes until EOF.
* For simplicity, the pg_control file is now copied with the rest of the files instead of by itself of at the end of the process. The backup command does not require this behavior and the restore copies to a temporary file which is renamed at the end of the restore.
* Simplified the result hash of File->manifest(), Db->tablespaceMapGet(), and Db->databaseMapGet().
* Improved errors returned from child processes by removing redundant error level and code.
* Code cleanup in preparation for improved stanza-create command. (Contributed by Cynthia Shang.)
* Improved parameter/result logging in debug/trace functions.
2016-12-12 19:18:27 -05:00
"host" : "backup",
2016-06-02 11:10:24 -04:00
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-06-12 11:36:00 -04:00
"P00 ERROR: [062]: process 'db-master remote' terminated unexpectedly [062]: stop file exists for all stanzas",
" "
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest stop"
],
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2016-09-14 17:36:43 -05:00
"P00 WARN: stop file already exists for all stanzas"
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest start"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo stop"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
v1.12: Page Checksums, Configuration, and Bug Fixes
IMPORTANT NOTE: In prior releases it was possible to specify options on the command-line that were invalid for the current command without getting an error. An error will now be generated for invalid options so it is important to carefully check command-line options in your environment to prevent disruption.
Bug Fixes:
* Fixed an issue where options that were invalid for the specified command could be provided on the command-line without generating an error. The options were ignored and did not cause any change in behavior, but it did lead to some confusion. Invalid options will now generate an error. (Reported by Nikhilchandra Kulkarni.)
* Fixed an issue where internal symlinks were not being created for tablespaces in the repository. This issue was only apparent when trying to bring up clusters in-place manually using filesystem snapshots and did not affect normal backup and restore.
* Fixed an issue that prevented errors from being output to the console before the logging system was initialized, i.e. while parsing options. Error codes were still being returned accurately so this would not have made a process look like it succeeded when it did not. (Reported by Adrian Vondendriesch.)
* Fixed an issue where the db-port option specified on the backup server would not be properly passed to the remote unless it was from the first configured database. (Reported by Michael Vitale.)
Features:
* Added the --checksum-page option to allow pgBackRest to validate page checksums in data files when checksums are enabled on PostgreSQL >= 9.3. Note that this functionality requires a C library which may not initially be available in OS packages. The option will automatically be enabled when the library is present and checksums are enabled on the cluster. (Suggested by Stephen Frost.)
* Added the --repo-link option to allow internal symlinks to be suppressed when the repository is located on a filesystem that does not support symlinks. This does not affect any pgBackRest functionality, but the convenience link latest will not be created and neither will internal tablespace symlinks, which will affect the ability to bring up clusters in-place manually using filesystem snapshots.
* Added the --repo-sync option to allow directory syncs in the repository to be disabled for file systems that do not support them, e.g. NTFS.
* Added a predictable log entry to signal that a command has completed successfully. For example a backup ends successfully with: INFO: backup command end: completed successfully. (Suggested by Jens Wilke.)
Refactoring:
* Abstracted code to determine which database cluster is the master and which are standbys. (Contributed by Cynthia Shang.)
* Improved consistency and flexibility of the protocol layer by using JSON for all messages.
* File copy protocol now accepts a function that can do additional processing on the copy buffers and return a result to the calling process.
* Improved IO->bufferRead to always return requested number of bytes until EOF.
* For simplicity, the pg_control file is now copied with the rest of the files instead of by itself of at the end of the process. The backup command does not require this behavior and the restore copies to a temporary file which is renamed at the end of the restore.
* Simplified the result hash of File->manifest(), Db->tablespaceMapGet(), and Db->databaseMapGet().
* Improved errors returned from child processes by removing redundant error level and code.
* Code cleanup in preparation for improved stanza-create command. (Contributed by Cynthia Shang.)
* Improved parameter/result logging in debug/trace functions.
2016-12-12 19:18:27 -05:00
"sudo -u backrest pgbackrest --stanza=demo backup"
2016-06-02 11:10:24 -04:00
],
2017-04-12 19:17:39 -04:00
"err-expect" : "62",
2016-06-02 11:10:24 -04:00
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
2017-06-12 11:36:00 -04:00
"process .* terminated unexpectedly.*: stop file exists for stanza demo"
2016-06-02 11:10:24 -04:00
]
},
v1.12: Page Checksums, Configuration, and Bug Fixes
IMPORTANT NOTE: In prior releases it was possible to specify options on the command-line that were invalid for the current command without getting an error. An error will now be generated for invalid options so it is important to carefully check command-line options in your environment to prevent disruption.
Bug Fixes:
* Fixed an issue where options that were invalid for the specified command could be provided on the command-line without generating an error. The options were ignored and did not cause any change in behavior, but it did lead to some confusion. Invalid options will now generate an error. (Reported by Nikhilchandra Kulkarni.)
* Fixed an issue where internal symlinks were not being created for tablespaces in the repository. This issue was only apparent when trying to bring up clusters in-place manually using filesystem snapshots and did not affect normal backup and restore.
* Fixed an issue that prevented errors from being output to the console before the logging system was initialized, i.e. while parsing options. Error codes were still being returned accurately so this would not have made a process look like it succeeded when it did not. (Reported by Adrian Vondendriesch.)
* Fixed an issue where the db-port option specified on the backup server would not be properly passed to the remote unless it was from the first configured database. (Reported by Michael Vitale.)
Features:
* Added the --checksum-page option to allow pgBackRest to validate page checksums in data files when checksums are enabled on PostgreSQL >= 9.3. Note that this functionality requires a C library which may not initially be available in OS packages. The option will automatically be enabled when the library is present and checksums are enabled on the cluster. (Suggested by Stephen Frost.)
* Added the --repo-link option to allow internal symlinks to be suppressed when the repository is located on a filesystem that does not support symlinks. This does not affect any pgBackRest functionality, but the convenience link latest will not be created and neither will internal tablespace symlinks, which will affect the ability to bring up clusters in-place manually using filesystem snapshots.
* Added the --repo-sync option to allow directory syncs in the repository to be disabled for file systems that do not support them, e.g. NTFS.
* Added a predictable log entry to signal that a command has completed successfully. For example a backup ends successfully with: INFO: backup command end: completed successfully. (Suggested by Jens Wilke.)
Refactoring:
* Abstracted code to determine which database cluster is the master and which are standbys. (Contributed by Cynthia Shang.)
* Improved consistency and flexibility of the protocol layer by using JSON for all messages.
* File copy protocol now accepts a function that can do additional processing on the copy buffers and return a result to the calling process.
* Improved IO->bufferRead to always return requested number of bytes until EOF.
* For simplicity, the pg_control file is now copied with the rest of the files instead of by itself of at the end of the process. The backup command does not require this behavior and the restore copies to a temporary file which is renamed at the end of the restore.
* Simplified the result hash of File->manifest(), Db->tablespaceMapGet(), and Db->databaseMapGet().
* Improved errors returned from child processes by removing redundant error level and code.
* Code cleanup in preparation for improved stanza-create command. (Contributed by Cynthia Shang.)
* Improved parameter/result logging in debug/trace functions.
2016-12-12 19:18:27 -05:00
"host" : "backup",
2016-06-02 11:10:24 -04:00
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-06-12 11:36:00 -04:00
"P00 ERROR: [062]: process 'db-master remote' terminated unexpectedly [062]: stop file exists for stanza demo",
" "
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo start"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
2017-06-12 11:36:00 -04:00
"image" : "pgbackrest/test:co6-db-9.4-doc",
2016-06-02 11:10:24 -04:00
"mount" : "/backrest:/backrest",
"name" : "db-standby",
"os" : "co6",
2017-04-12 19:17:39 -04:00
"user" : "ubuntu"
2016-06-02 11:10:24 -04:00
},
"type" : "host",
"value" : {
2017-06-12 11:36:00 -04:00
"ip" : "172.17.0.5"
2016-06-02 11:10:24 -04:00
}
},
{
"key" : {
"file" : "/etc/pgbackrest.conf",
"host" : "db-standby",
"option" : {
"demo" : {
"db-path" : {
"value" : "/var/lib/pgsql/9.4/data"
},
"recovery-option" : {
"value" : "standby_mode=on"
}
},
"global" : {
"backup-host" : {
"value" : "backup"
},
2016-10-10 17:35:58 -04:00
"log-level-stderr" : {
"value" : "off"
},
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-05 20:23:03 -05:00
"log-timestamp" : {
"value" : "n"
2016-06-02 11:10:24 -04:00
}
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
"db-path=/var/lib/pgsql/9.4/data",
"recovery-option=standby_mode=on",
"",
"[global]",
2017-06-12 11:36:00 -04:00
"backup-host=backup"
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --delta restore"
],
"host" : "db-standby",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres cat /var/lib/pgsql/9.4/data/recovery.conf"
],
"host" : "db-standby",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
"standby_mode = 'on'",
"restore_command = '/usr/bin/pgbackrest --stanza=demo archive-get %f \"%p\"'"
]
}
},
{
"key" : {
"file" : "/var/lib/pgsql/9.4/data/postgresql.conf",
"host" : "db-standby",
"option" : {
"hot_standby" : {
"value" : "on"
}
}
},
"type" : "cfg-postgresql",
"value" : {
"config" : [
"hot_standby = on"
]
}
},
{
"key" : {
"cmd" : [
"sudo rm /var/lib/pgsql/9.4/data/pg_log/postgresql.log"
],
"host" : "db-standby",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo service postgresql-9.4 start"
],
"host" : "db-standby",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres sleep 1"
],
"host" : "db-standby",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres cat /var/lib/pgsql/9.4/data/pg_log/postgresql.log"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"entering standby mode|database system is ready to accept read only connections"
]
},
"host" : "db-standby",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-06-12 11:36:00 -04:00
"LOG: database system was interrupted; last known up at 2017-06-12 15:22:25 UTC",
2016-06-02 11:10:24 -04:00
"LOG: creating missing WAL directory \"pg_xlog/archive_status\"",
"LOG: entering standby mode",
"LOG: restored log file \"00000008.history\" from archive",
2017-06-12 11:36:00 -04:00
"LOG: restored log file \"000000080000000000000027\" from archive",
"LOG: redo starts at 0/27000028",
"LOG: consistent recovery state reached at 0/270000F0",
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-05 20:23:03 -05:00
"LOG: database system is ready to accept read only connections"
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres psql -c \" \\",
" begin; \\",
" create table replicated_table (message text); \\",
" insert into replicated_table values ('Important Data'); \\",
" commit; \\",
" select * from replicated_table\";"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"Important Data"
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
" message ",
"----------------",
" Important Data",
"(1 row)"
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres psql -c \"select * from replicated_table;\""
],
"err-expect" : "1",
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"does not exist"
]
},
"host" : "db-standby",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
"ERROR: relation \"replicated_table\" does not exist",
"LINE 1: select * from replicated_table;",
" ^"
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres psql -c \"select *, current_timestamp from pg_switch_xlog()\";"
],
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-06-12 11:36:00 -04:00
" pg_switch_xlog | now ",
"----------------+------------------------------",
" 0/28017990 | 2017-06-12 15:22:56.33218+00",
2016-06-02 11:10:24 -04:00
"(1 row)"
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres psql -c \" \\",
" select *, current_timestamp from replicated_table\""
],
"highlight" : {
"filter" : false,
"filter-context" : 2,
"list" : [
"Important Data"
]
},
"host" : "db-standby",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-03-13 16:54:51 -04:00
" message | now ",
"----------------+-------------------------------",
2017-06-12 11:36:00 -04:00
" Important Data | 2017-06-12 15:22:59.382574+00",
2016-06-02 11:10:24 -04:00
"(1 row)"
]
}
},
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-05 20:23:03 -05:00
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --log-level-console=info check"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"all other checks passed"
]
},
"host" : "db-standby",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-06-12 11:36:00 -04:00
"P00 INFO: check command begin 1.19: --backup-host=backup --db-path=/var/lib/pgsql/9.4/data --log-level-console=info --log-level-stderr=off --no-log-timestamp --stanza=demo",
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-05 20:23:03 -05:00
"P00 INFO: switch xlog cannot be performed on the standby, all other checks passed successfully",
"P00 INFO: check command end: completed successfully"
]
}
},
2016-06-02 11:10:24 -04:00
{
"key" : {
"cmd" : [
"sudo -u postgres psql -c \" \\",
" create user replicator password 'jw8s0F4' replication\";"
],
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
"CREATE ROLE"
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres sh -c 'echo \\",
2017-06-12 11:36:00 -04:00
" \"host replication replicator 172.17.0.5/32 md5\" \\",
2016-06-02 11:10:24 -04:00
" >> /var/lib/pgsql/9.4/data/pg_hba.conf'"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo service postgresql-9.4 reload"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"file" : "/etc/pgbackrest.conf",
"host" : "db-standby",
"option" : {
"demo" : {
"recovery-option" : {
2017-06-12 11:36:00 -04:00
"value" : "primary_conninfo=host=172.17.0.3 port=5432 user=replicator"
2016-06-02 11:10:24 -04:00
}
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
"db-path=/var/lib/pgsql/9.4/data",
"recovery-option=standby_mode=on",
2017-06-12 11:36:00 -04:00
"recovery-option=primary_conninfo=host=172.17.0.3 port=5432 user=replicator",
2016-06-02 11:10:24 -04:00
"",
"[global]",
2017-06-12 11:36:00 -04:00
"backup-host=backup"
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres sh -c 'echo \\",
2017-06-12 11:36:00 -04:00
" \"172.17.0.3:*:replication:replicator:jw8s0F4\" \\",
2016-06-02 11:10:24 -04:00
" >> /home/postgres/.pgpass'"
],
"host" : "db-standby",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres chmod 600 /home/postgres/.pgpass"
],
"host" : "db-standby",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo service postgresql-9.4 stop"
],
"host" : "db-standby",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --delta restore"
],
"host" : "db-standby",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres cat /var/lib/pgsql/9.4/data/recovery.conf"
],
"host" : "db-standby",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-06-12 11:36:00 -04:00
"primary_conninfo = 'host=172.17.0.3 port=5432 user=replicator'",
2016-06-02 11:10:24 -04:00
"standby_mode = 'on'",
"restore_command = '/usr/bin/pgbackrest --stanza=demo archive-get %f \"%p\"'"
]
}
},
{
"key" : {
"file" : "/var/lib/pgsql/9.4/data/postgresql.conf",
"host" : "db-standby",
"option" : {
"hot_standby" : {
"value" : "on"
}
}
},
"type" : "cfg-postgresql",
"value" : {
"config" : [
"hot_standby = on"
]
}
},
{
"key" : {
"cmd" : [
"sudo rm /var/lib/pgsql/9.4/data/pg_log/postgresql.log"
],
"host" : "db-standby",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo service postgresql-9.4 start"
],
"host" : "db-standby",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres sleep 1"
],
"host" : "db-standby",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres cat /var/lib/pgsql/9.4/data/pg_log/postgresql.log"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"started streaming WAL from primary"
]
},
"host" : "db-standby",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-05 20:23:03 -05:00
" [filtered 7 lines of output]",
"LOG: database system is ready to accept read only connections",
2017-06-12 11:36:00 -04:00
"LOG: restored log file \"000000080000000000000028\" from archive",
"LOG: started streaming WAL from primary at 0/29000000 on timeline 8"
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres psql -c \" \\",
" begin; \\",
" create table stream_table (message text); \\",
" insert into stream_table values ('Important Data'); \\",
" commit; \\",
" select *, current_timestamp from stream_table\";"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"Important Data"
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-06-12 11:36:00 -04:00
" message | now ",
"----------------+------------------------------",
" Important Data | 2017-06-12 15:23:09.31194+00",
2016-06-02 11:10:24 -04:00
"(1 row)"
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres psql -c \" \\",
" select *, current_timestamp from stream_table\""
],
"highlight" : {
"filter" : false,
"filter-context" : 2,
"list" : [
"Important Data"
]
},
"host" : "db-standby",
"output" : true
},
2016-11-17 09:57:59 -05:00
"type" : "exe",
"value" : {
"output" : [
2017-03-02 20:15:14 -05:00
" message | now ",
"----------------+-------------------------------",
2017-06-12 11:36:00 -04:00
" Important Data | 2017-06-12 15:23:09.443468+00",
2016-11-17 09:57:59 -05:00
"(1 row)"
]
}
v1.06: Backup from Standby and Bug Fixes
Bug Fixes:
* Fixed an issue where a tablespace link that referenced another link would not produce an error, but instead skip the tablespace entirely. (Reported by Michael Vitale.)
* Fixed an issue where options that should not allow multiple values could be specified multiple times in pgbackrest.conf without an error being raised. (Reported by Michael Vitale.)
* Fixed an issue where the protocol-timeout option was not automatically increased when the db-timeout option was increased. (Reported by Todd Vernick.)
Features:
* Backup from a standby cluster. A connection to the primary cluster is still required to start/stop the backup and copy files that are not replicated, but the vast majority of files are copied from the standby in order to reduce load on the master.
* More flexible configuration for databases. Master and standby can both be configured on the backup server and pgBackRest will automatically determine which is the master. This means no configuration changes for backup are required after failing over from a master to standby when a separate backup server is used.
* Exclude directories during backup that are cleaned, recreated, or zeroed by PostgreSQL at startup. These include pgsql_tmp and pg_stat_tmp. The postgresql.auto.conf.tmp file is now excluded in addition to files that were already excluded: backup_label.old, postmaster.opts, postmaster.pid, recovery.conf, recovery.done.
* Experimental support for non-exclusive backups in PostgreSQL 9.6 beta4. Changes to the control/catalog/WAL versions in subsequent betas may break compatibility but pgBackRest will be updated with each release to keep pace.
Refactoring:
* Simplify protocol creation and identifying which host is local/remote.
* Removed all OP_* function constants that were used only for debugging, not in the protocol, and replaced with __PACKAGE__.
* Improvements in Db module: separated out connect() function, allow executeSql() calls that do not return data, and improve error handling.
* Improve error message for links that reference links in manifest build.
* Added hints to error message when relative paths are detected in archive-push or archive-get.
* Improve backup log messages to indicate which host the files are being copied from.
2016-08-25 11:49:09 -04:00
},
{
"key" : {
"file" : "/etc/pgbackrest.conf",
"host" : "backup",
"option" : {
"demo" : {
"db2-host" : {
"value" : "db-standby"
},
"db2-path" : {
"value" : "/var/lib/pgsql/9.4/data"
},
"db2-user" : {
"value" : "postgres"
}
},
"global" : {
"backup-standby" : {
"value" : "y"
}
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
"db1-host=db-master",
"db1-path=/var/lib/pgsql/9.4/data",
"db1-user=postgres",
"db2-host=db-standby",
"db2-path=/var/lib/pgsql/9.4/data",
"db2-user=postgres",
"",
"[global]",
"backup-standby=y",
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-05 20:23:03 -05:00
"process-max=3",
v1.06: Backup from Standby and Bug Fixes
Bug Fixes:
* Fixed an issue where a tablespace link that referenced another link would not produce an error, but instead skip the tablespace entirely. (Reported by Michael Vitale.)
* Fixed an issue where options that should not allow multiple values could be specified multiple times in pgbackrest.conf without an error being raised. (Reported by Michael Vitale.)
* Fixed an issue where the protocol-timeout option was not automatically increased when the db-timeout option was increased. (Reported by Todd Vernick.)
Features:
* Backup from a standby cluster. A connection to the primary cluster is still required to start/stop the backup and copy files that are not replicated, but the vast majority of files are copied from the standby in order to reduce load on the master.
* More flexible configuration for databases. Master and standby can both be configured on the backup server and pgBackRest will automatically determine which is the master. This means no configuration changes for backup are required after failing over from a master to standby when a separate backup server is used.
* Exclude directories during backup that are cleaned, recreated, or zeroed by PostgreSQL at startup. These include pgsql_tmp and pg_stat_tmp. The postgresql.auto.conf.tmp file is now excluded in addition to files that were already excluded: backup_label.old, postmaster.opts, postmaster.pid, recovery.conf, recovery.done.
* Experimental support for non-exclusive backups in PostgreSQL 9.6 beta4. Changes to the control/catalog/WAL versions in subsequent betas may break compatibility but pgBackRest will be updated with each release to keep pace.
Refactoring:
* Simplify protocol creation and identifying which host is local/remote.
* Removed all OP_* function constants that were used only for debugging, not in the protocol, and replaced with __PACKAGE__.
* Improvements in Db module: separated out connect() function, allow executeSql() calls that do not return data, and improve error handling.
* Improve error message for links that reference links in manifest build.
* Added hints to error message when relative paths are detected in archive-push or archive-get.
* Improve backup log messages to indicate which host the files are being copied from.
2016-08-25 11:49:09 -04:00
"repo-path=/var/lib/pgbackrest",
v1.12: Page Checksums, Configuration, and Bug Fixes
IMPORTANT NOTE: In prior releases it was possible to specify options on the command-line that were invalid for the current command without getting an error. An error will now be generated for invalid options so it is important to carefully check command-line options in your environment to prevent disruption.
Bug Fixes:
* Fixed an issue where options that were invalid for the specified command could be provided on the command-line without generating an error. The options were ignored and did not cause any change in behavior, but it did lead to some confusion. Invalid options will now generate an error. (Reported by Nikhilchandra Kulkarni.)
* Fixed an issue where internal symlinks were not being created for tablespaces in the repository. This issue was only apparent when trying to bring up clusters in-place manually using filesystem snapshots and did not affect normal backup and restore.
* Fixed an issue that prevented errors from being output to the console before the logging system was initialized, i.e. while parsing options. Error codes were still being returned accurately so this would not have made a process look like it succeeded when it did not. (Reported by Adrian Vondendriesch.)
* Fixed an issue where the db-port option specified on the backup server would not be properly passed to the remote unless it was from the first configured database. (Reported by Michael Vitale.)
Features:
* Added the --checksum-page option to allow pgBackRest to validate page checksums in data files when checksums are enabled on PostgreSQL >= 9.3. Note that this functionality requires a C library which may not initially be available in OS packages. The option will automatically be enabled when the library is present and checksums are enabled on the cluster. (Suggested by Stephen Frost.)
* Added the --repo-link option to allow internal symlinks to be suppressed when the repository is located on a filesystem that does not support symlinks. This does not affect any pgBackRest functionality, but the convenience link latest will not be created and neither will internal tablespace symlinks, which will affect the ability to bring up clusters in-place manually using filesystem snapshots.
* Added the --repo-sync option to allow directory syncs in the repository to be disabled for file systems that do not support them, e.g. NTFS.
* Added a predictable log entry to signal that a command has completed successfully. For example a backup ends successfully with: INFO: backup command end: completed successfully. (Suggested by Jens Wilke.)
Refactoring:
* Abstracted code to determine which database cluster is the master and which are standbys. (Contributed by Cynthia Shang.)
* Improved consistency and flexibility of the protocol layer by using JSON for all messages.
* File copy protocol now accepts a function that can do additional processing on the copy buffers and return a result to the calling process.
* Improved IO->bufferRead to always return requested number of bytes until EOF.
* For simplicity, the pg_control file is now copied with the rest of the files instead of by itself of at the end of the process. The backup command does not require this behavior and the restore copies to a temporary file which is renamed at the end of the restore.
* Simplified the result hash of File->manifest(), Db->tablespaceMapGet(), and Db->databaseMapGet().
* Improved errors returned from child processes by removing redundant error level and code.
* Code cleanup in preparation for improved stanza-create command. (Contributed by Cynthia Shang.)
* Improved parameter/result logging in debug/trace functions.
2016-12-12 19:18:27 -05:00
"retention-full=2",
v1.06: Backup from Standby and Bug Fixes
Bug Fixes:
* Fixed an issue where a tablespace link that referenced another link would not produce an error, but instead skip the tablespace entirely. (Reported by Michael Vitale.)
* Fixed an issue where options that should not allow multiple values could be specified multiple times in pgbackrest.conf without an error being raised. (Reported by Michael Vitale.)
* Fixed an issue where the protocol-timeout option was not automatically increased when the db-timeout option was increased. (Reported by Todd Vernick.)
Features:
* Backup from a standby cluster. A connection to the primary cluster is still required to start/stop the backup and copy files that are not replicated, but the vast majority of files are copied from the standby in order to reduce load on the master.
* More flexible configuration for databases. Master and standby can both be configured on the backup server and pgBackRest will automatically determine which is the master. This means no configuration changes for backup are required after failing over from a master to standby when a separate backup server is used.
* Exclude directories during backup that are cleaned, recreated, or zeroed by PostgreSQL at startup. These include pgsql_tmp and pg_stat_tmp. The postgresql.auto.conf.tmp file is now excluded in addition to files that were already excluded: backup_label.old, postmaster.opts, postmaster.pid, recovery.conf, recovery.done.
* Experimental support for non-exclusive backups in PostgreSQL 9.6 beta4. Changes to the control/catalog/WAL versions in subsequent betas may break compatibility but pgBackRest will be updated with each release to keep pace.
Refactoring:
* Simplify protocol creation and identifying which host is local/remote.
* Removed all OP_* function constants that were used only for debugging, not in the protocol, and replaced with __PACKAGE__.
* Improvements in Db module: separated out connect() function, allow executeSql() calls that do not return data, and improve error handling.
* Improve error message for links that reference links in manifest build.
* Added hints to error message when relative paths are detected in archive-push or archive-get.
* Improve backup log messages to indicate which host the files are being copied from.
2016-08-25 11:49:09 -04:00
"start-fast=y"
]
}
},
{
"key" : {
"cmd" : [
"sudo -u backrest pgbackrest --stanza=demo --log-level-console=detail backup"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"backup file db-master|replay on the standby"
]
},
"host" : "backup",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
v1.12: Page Checksums, Configuration, and Bug Fixes
IMPORTANT NOTE: In prior releases it was possible to specify options on the command-line that were invalid for the current command without getting an error. An error will now be generated for invalid options so it is important to carefully check command-line options in your environment to prevent disruption.
Bug Fixes:
* Fixed an issue where options that were invalid for the specified command could be provided on the command-line without generating an error. The options were ignored and did not cause any change in behavior, but it did lead to some confusion. Invalid options will now generate an error. (Reported by Nikhilchandra Kulkarni.)
* Fixed an issue where internal symlinks were not being created for tablespaces in the repository. This issue was only apparent when trying to bring up clusters in-place manually using filesystem snapshots and did not affect normal backup and restore.
* Fixed an issue that prevented errors from being output to the console before the logging system was initialized, i.e. while parsing options. Error codes were still being returned accurately so this would not have made a process look like it succeeded when it did not. (Reported by Adrian Vondendriesch.)
* Fixed an issue where the db-port option specified on the backup server would not be properly passed to the remote unless it was from the first configured database. (Reported by Michael Vitale.)
Features:
* Added the --checksum-page option to allow pgBackRest to validate page checksums in data files when checksums are enabled on PostgreSQL >= 9.3. Note that this functionality requires a C library which may not initially be available in OS packages. The option will automatically be enabled when the library is present and checksums are enabled on the cluster. (Suggested by Stephen Frost.)
* Added the --repo-link option to allow internal symlinks to be suppressed when the repository is located on a filesystem that does not support symlinks. This does not affect any pgBackRest functionality, but the convenience link latest will not be created and neither will internal tablespace symlinks, which will affect the ability to bring up clusters in-place manually using filesystem snapshots.
* Added the --repo-sync option to allow directory syncs in the repository to be disabled for file systems that do not support them, e.g. NTFS.
* Added a predictable log entry to signal that a command has completed successfully. For example a backup ends successfully with: INFO: backup command end: completed successfully. (Suggested by Jens Wilke.)
Refactoring:
* Abstracted code to determine which database cluster is the master and which are standbys. (Contributed by Cynthia Shang.)
* Improved consistency and flexibility of the protocol layer by using JSON for all messages.
* File copy protocol now accepts a function that can do additional processing on the copy buffers and return a result to the calling process.
* Improved IO->bufferRead to always return requested number of bytes until EOF.
* For simplicity, the pg_control file is now copied with the rest of the files instead of by itself of at the end of the process. The backup command does not require this behavior and the restore copies to a temporary file which is renamed at the end of the restore.
* Simplified the result hash of File->manifest(), Db->tablespaceMapGet(), and Db->databaseMapGet().
* Improved errors returned from child processes by removing redundant error level and code.
* Code cleanup in preparation for improved stanza-create command. (Contributed by Cynthia Shang.)
* Improved parameter/result logging in debug/trace functions.
2016-12-12 19:18:27 -05:00
" [filtered 2 lines of output]",
2017-06-12 11:36:00 -04:00
"P00 INFO: execute exclusive pg_start_backup() with label \"pgBackRest backup started at 2017-06-12 15:23:10\": backup begins after the requested immediate checkpoint completes",
"P00 INFO: backup start archive = 00000008000000000000002A, lsn = 0/2A000028",
"P00 INFO: wait for replay on the standby to reach 0/2A000028",
"P00 INFO: replay on the standby reached 0/2A0000C8",
"P04 INFO: backup file db-standby:/var/lib/pgsql/9.4/data/base/12140/12010 (240KB, 12%) checksum 77b6aa42b16dd7a5e15aae7c441cb8403a4e86d9",
"P03 INFO: backup file db-standby:/var/lib/pgsql/9.4/data/base/12140/11890 (344KB, 30%) checksum 48c690fe7d21fd81a5c42048b47ca17b1726331e",
"P01 INFO: backup file db-master:/var/lib/pgsql/9.4/data/global/pg_control (8KB, 30%) checksum a50c6e43dce3b09f158920062688d4875c430678",
"P01 INFO: backup file db-master:/var/lib/pgsql/9.4/data/pg_log/postgresql.log (4.7KB, 30%) checksum 33a8527426882ce0344145e66b18c9ec30e856b5",
"P04 INFO: backup file db-standby:/var/lib/pgsql/9.4/data/base/12140/12011 (232KB, 42%) checksum aa7df11d8c6600adb45961bb9d49b9324880c60d",
"P03 INFO: backup file db-standby:/var/lib/pgsql/9.4/data/base/12140/11892 (128KB, 49%) checksum 50302102ddbada44e4fb8e0523d78c0b07766222",
"P01 INFO: backup file db-master:/var/lib/pgsql/9.4/data/pg_hba.conf (4.1KB, 49%) checksum dbda288edbce6486fab7ca9f9db0864316754bee",
"P02 INFO: backup file db-standby:/var/lib/pgsql/9.4/data/base/12140/12008 (392KB, 69%) checksum 0f2913af509c948bffa82bf996431c7fbc2b9bdc",
"P03 INFO: backup file db-standby:/var/lib/pgsql/9.4/data/base/12140/11901 (64KB, 72%) checksum 0ddf2d72cb8d29895f4c6cb6b88509b6bcbdeb4a",
"P01 INFO: backup file db-master:/var/lib/pgsql/9.4/data/backup_label (238B, 72%) checksum 123e2a1a3ac56c11245e8466ccc89908d8e4872e",
"P02 INFO: backup file db-standby:/var/lib/pgsql/9.4/data/base/12140/11878 (64KB, 76%) checksum 3f3029ef8c7afe28539b70adab95cc441d1268cb",
"P03 INFO: backup file db-standby:/var/lib/pgsql/9.4/data/base/12140/11904 (56KB, 79%) checksum c3c454ffa1c54e810aadd96e3386866196773e66",
" [filtered 29 lines of output]"
v1.06: Backup from Standby and Bug Fixes
Bug Fixes:
* Fixed an issue where a tablespace link that referenced another link would not produce an error, but instead skip the tablespace entirely. (Reported by Michael Vitale.)
* Fixed an issue where options that should not allow multiple values could be specified multiple times in pgbackrest.conf without an error being raised. (Reported by Michael Vitale.)
* Fixed an issue where the protocol-timeout option was not automatically increased when the db-timeout option was increased. (Reported by Todd Vernick.)
Features:
* Backup from a standby cluster. A connection to the primary cluster is still required to start/stop the backup and copy files that are not replicated, but the vast majority of files are copied from the standby in order to reduce load on the master.
* More flexible configuration for databases. Master and standby can both be configured on the backup server and pgBackRest will automatically determine which is the master. This means no configuration changes for backup are required after failing over from a master to standby when a separate backup server is used.
* Exclude directories during backup that are cleaned, recreated, or zeroed by PostgreSQL at startup. These include pgsql_tmp and pg_stat_tmp. The postgresql.auto.conf.tmp file is now excluded in addition to files that were already excluded: backup_label.old, postmaster.opts, postmaster.pid, recovery.conf, recovery.done.
* Experimental support for non-exclusive backups in PostgreSQL 9.6 beta4. Changes to the control/catalog/WAL versions in subsequent betas may break compatibility but pgBackRest will be updated with each release to keep pace.
Refactoring:
* Simplify protocol creation and identifying which host is local/remote.
* Removed all OP_* function constants that were used only for debugging, not in the protocol, and replaced with __PACKAGE__.
* Improvements in Db module: separated out connect() function, allow executeSql() calls that do not return data, and improve error handling.
* Improve error message for links that reference links in manifest build.
* Added hints to error message when relative paths are detected in archive-push or archive-get.
* Improve backup log messages to indicate which host the files are being copied from.
2016-08-25 11:49:09 -04:00
]
}
2016-06-02 11:10:24 -04:00
},
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo yum install postgresql95-server"
2016-06-02 11:10:24 -04:00
],
2016-07-02 10:22:52 -04:00
"cmd-extra" : "-y",
2016-06-02 11:10:24 -04:00
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo service postgresql-9.5 initdb"
2016-06-02 11:10:24 -04:00
],
"host" : "db-master",
2017-04-12 19:17:39 -04:00
"output" : true
2016-06-02 11:10:24 -04:00
},
2017-04-12 19:17:39 -04:00
"type" : "exe",
"value" : {
"output" : [
"Initializing database: [ OK ]\r"
]
}
2016-06-02 11:10:24 -04:00
},
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo service postgresql-9.4 stop"
2016-06-02 11:10:24 -04:00
],
2017-04-12 19:17:39 -04:00
"host" : "db-standby",
2016-06-02 11:10:24 -04:00
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo yum install postgresql95-server"
2016-06-02 11:10:24 -04:00
],
2017-04-12 19:17:39 -04:00
"cmd-extra" : "-y",
"host" : "db-standby",
2016-06-02 11:10:24 -04:00
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo service postgresql-9.4 stop"
2016-07-02 10:22:52 -04:00
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo -u postgres sh -c 'cd /var/lib/pgsql && \\",
" /usr/pgsql-9.5/bin/pg_upgrade \\",
" --old-bindir=/usr/pgsql-9.4/bin \\",
" --new-bindir=/usr/pgsql-9.5/bin \\",
" --old-datadir=/var/lib/pgsql/9.4/data \\",
" --new-datadir=/var/lib/pgsql/9.5/data \\",
" --old-options=\" -c config_file=/var/lib/pgsql/9.4/data/postgresql.conf\" \\",
" --new-options=\" -c config_file=/var/lib/pgsql/9.5/data/postgresql.conf\"'"
2016-07-02 10:22:52 -04:00
],
2017-04-12 19:17:39 -04:00
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"Upgrade Complete"
]
},
2016-07-02 10:22:52 -04:00
"host" : "db-master",
2017-04-12 19:17:39 -04:00
"output" : true
2016-07-02 10:22:52 -04:00
},
2017-04-12 19:17:39 -04:00
"type" : "exe",
"value" : {
"output" : [
" [filtered 68 lines of output]",
"Creating script to delete old cluster ok",
"",
"Upgrade Complete",
"----------------",
"Optimizer statistics are not transferred by pg_upgrade so,",
" [filtered 4 lines of output]"
]
}
2016-07-02 10:22:52 -04:00
},
{
"key" : {
2017-04-12 19:17:39 -04:00
"file" : "/var/lib/pgsql/9.5/data/postgresql.conf",
2016-07-02 10:22:52 -04:00
"host" : "db-master",
2017-04-12 19:17:39 -04:00
"option" : {
"archive_command" : {
"value" : "'pgbackrest --stanza=demo archive-push %p'"
},
"archive_mode" : {
"value" : "on"
},
"listen_addresses" : {
"value" : "'*'"
},
"log_line_prefix" : {
"value" : "''"
},
"max_wal_senders" : {
"value" : "3"
},
"port" : {
"value" : "5432"
},
"wal_level" : {
"value" : "hot_standby"
}
}
2016-07-02 10:22:52 -04:00
},
2017-04-12 19:17:39 -04:00
"type" : "cfg-postgresql",
"value" : {
"config" : [
"archive_command = 'pgbackrest --stanza=demo archive-push %p'",
"archive_mode = on",
"listen_addresses = '*'",
"log_line_prefix = ''",
"max_wal_senders = 3",
"port = 5432",
"wal_level = hot_standby"
]
}
2016-07-02 10:22:52 -04:00
},
{
"key" : {
2017-04-12 19:17:39 -04:00
"file" : "/etc/pgbackrest.conf",
2016-07-02 10:22:52 -04:00
"host" : "db-master",
2017-04-12 19:17:39 -04:00
"option" : {
"demo" : {
"db-path" : {
"value" : "/var/lib/pgsql/9.5/data"
}
}
}
2016-07-02 10:22:52 -04:00
},
2017-04-12 19:17:39 -04:00
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
"db-path=/var/lib/pgsql/9.5/data",
"",
"[global]",
"archive-async=y",
"backup-host=backup",
"backup-user=backrest",
"log-level-file=detail",
"spool-path=/var/spool/pgbackrest",
"",
"[global:archive-push]",
"process-max=2"
]
}
2016-07-02 10:22:52 -04:00
},
{
"key" : {
2017-04-12 19:17:39 -04:00
"file" : "/etc/pgbackrest.conf",
"host" : "db-standby",
"option" : {
"demo" : {
"db-path" : {
"value" : "/var/lib/pgsql/9.5/data"
}
}
}
2016-07-02 10:22:52 -04:00
},
2017-04-12 19:17:39 -04:00
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
"db-path=/var/lib/pgsql/9.5/data",
"recovery-option=standby_mode=on",
2017-06-12 11:36:00 -04:00
"recovery-option=primary_conninfo=host=172.17.0.3 port=5432 user=replicator",
2017-04-12 19:17:39 -04:00
"",
"[global]",
2017-06-12 11:36:00 -04:00
"backup-host=backup"
2017-04-12 19:17:39 -04:00
]
}
},
{
"key" : {
"file" : "/etc/pgbackrest.conf",
"host" : "backup",
"option" : {
"demo" : {
"db1-path" : {
"value" : "/var/lib/pgsql/9.5/data"
},
"db2-path" : {
"value" : "/var/lib/pgsql/9.5/data"
}
},
"global" : {
"backup-standby" : {
"value" : "n"
}
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
"db1-host=db-master",
"db1-path=/var/lib/pgsql/9.5/data",
"db1-user=postgres",
"db2-host=db-standby",
"db2-path=/var/lib/pgsql/9.5/data",
"db2-user=postgres",
"",
"[global]",
"backup-standby=n",
"process-max=3",
"repo-path=/var/lib/pgbackrest",
"retention-full=2",
"start-fast=y"
]
}
2016-07-02 10:22:52 -04:00
},
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo cp /var/lib/pgsql/9.4/data/pg_hba.conf \\",
" /var/lib/pgsql/9.5/data/pg_hba.conf"
2016-07-02 10:22:52 -04:00
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo -u backrest pgbackrest --stanza=demo --no-online \\",
" --log-level-console=info stanza-upgrade"
2016-06-02 11:10:24 -04:00
],
2017-04-12 19:17:39 -04:00
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"completed successfully"
]
},
"host" : "backup",
"output" : true
2016-06-02 11:10:24 -04:00
},
2017-04-12 19:17:39 -04:00
"type" : "exe",
"value" : {
"output" : [
2017-06-12 11:36:00 -04:00
"2017-06-12 15:23:46.319 P00 INFO: stanza-upgrade command begin 1.19: --no-backup-standby --db-host=db-master --db-path=/var/lib/pgsql/9.5/data --db-user=postgres --db2-host=db-standby --db2-path=/var/lib/pgsql/9.5/data --db2-user=postgres --log-level-console=info --no-online --repo-path=/var/lib/pgbackrest --stanza=demo",
"2017-06-12 15:23:47.033 P00 INFO: stanza-upgrade command end: completed successfully"
2017-04-12 19:17:39 -04:00
]
}
2016-06-02 11:10:24 -04:00
},
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo service postgresql-9.5 start"
2016-06-02 11:10:24 -04:00
],
"host" : "db-master",
2017-04-12 19:17:39 -04:00
"output" : true
2016-06-02 11:10:24 -04:00
},
2017-04-12 19:17:39 -04:00
"type" : "exe",
"value" : {
"output" : [
"Starting postgresql-9.5 service: [ OK ]\r"
]
}
2016-06-02 11:10:24 -04:00
},
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo -u postgres service postgresql-9.5 status"
2016-06-02 11:10:24 -04:00
],
"host" : "db-master",
2017-04-12 19:17:39 -04:00
"output" : true
2016-06-02 11:10:24 -04:00
},
2017-04-12 19:17:39 -04:00
"type" : "exe",
"value" : {
"output" : [
2017-06-12 11:36:00 -04:00
"postgresql-9.5 (pid 4387) is running..."
2017-04-12 19:17:39 -04:00
]
}
2016-06-02 11:10:24 -04:00
},
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo -u postgres pgbackrest --stanza=demo check"
2016-06-02 11:10:24 -04:00
],
"host" : "db-master",
2017-04-12 19:17:39 -04:00
"output" : true
2016-06-02 11:10:24 -04:00
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo -u backrest pgbackrest --stanza=demo check"
2016-06-02 11:10:24 -04:00
],
2017-04-12 19:17:39 -04:00
"host" : "backup",
2016-06-02 11:10:24 -04:00
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-06-12 11:36:00 -04:00
"P00 WARN: [056]: raised on 'db-standby remote' host: could not connect to server: No such file or directory",
2017-04-12 19:17:39 -04:00
" \tIs the server running locally and accepting",
" \tconnections on Unix domain socket \"/var/run/postgresql/.s.PGSQL.5432\"?"
2016-06-02 11:10:24 -04:00
]
}
},
v1.12: Page Checksums, Configuration, and Bug Fixes
IMPORTANT NOTE: In prior releases it was possible to specify options on the command-line that were invalid for the current command without getting an error. An error will now be generated for invalid options so it is important to carefully check command-line options in your environment to prevent disruption.
Bug Fixes:
* Fixed an issue where options that were invalid for the specified command could be provided on the command-line without generating an error. The options were ignored and did not cause any change in behavior, but it did lead to some confusion. Invalid options will now generate an error. (Reported by Nikhilchandra Kulkarni.)
* Fixed an issue where internal symlinks were not being created for tablespaces in the repository. This issue was only apparent when trying to bring up clusters in-place manually using filesystem snapshots and did not affect normal backup and restore.
* Fixed an issue that prevented errors from being output to the console before the logging system was initialized, i.e. while parsing options. Error codes were still being returned accurately so this would not have made a process look like it succeeded when it did not. (Reported by Adrian Vondendriesch.)
* Fixed an issue where the db-port option specified on the backup server would not be properly passed to the remote unless it was from the first configured database. (Reported by Michael Vitale.)
Features:
* Added the --checksum-page option to allow pgBackRest to validate page checksums in data files when checksums are enabled on PostgreSQL >= 9.3. Note that this functionality requires a C library which may not initially be available in OS packages. The option will automatically be enabled when the library is present and checksums are enabled on the cluster. (Suggested by Stephen Frost.)
* Added the --repo-link option to allow internal symlinks to be suppressed when the repository is located on a filesystem that does not support symlinks. This does not affect any pgBackRest functionality, but the convenience link latest will not be created and neither will internal tablespace symlinks, which will affect the ability to bring up clusters in-place manually using filesystem snapshots.
* Added the --repo-sync option to allow directory syncs in the repository to be disabled for file systems that do not support them, e.g. NTFS.
* Added a predictable log entry to signal that a command has completed successfully. For example a backup ends successfully with: INFO: backup command end: completed successfully. (Suggested by Jens Wilke.)
Refactoring:
* Abstracted code to determine which database cluster is the master and which are standbys. (Contributed by Cynthia Shang.)
* Improved consistency and flexibility of the protocol layer by using JSON for all messages.
* File copy protocol now accepts a function that can do additional processing on the copy buffers and return a result to the calling process.
* Improved IO->bufferRead to always return requested number of bytes until EOF.
* For simplicity, the pg_control file is now copied with the rest of the files instead of by itself of at the end of the process. The backup command does not require this behavior and the restore copies to a temporary file which is renamed at the end of the restore.
* Simplified the result hash of File->manifest(), Db->tablespaceMapGet(), and Db->databaseMapGet().
* Improved errors returned from child processes by removing redundant error level and code.
* Code cleanup in preparation for improved stanza-create command. (Contributed by Cynthia Shang.)
* Improved parameter/result logging in debug/trace functions.
2016-12-12 19:18:27 -05:00
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo rm -rf /var/lib/pgsql/9.4/data"
v1.12: Page Checksums, Configuration, and Bug Fixes
IMPORTANT NOTE: In prior releases it was possible to specify options on the command-line that were invalid for the current command without getting an error. An error will now be generated for invalid options so it is important to carefully check command-line options in your environment to prevent disruption.
Bug Fixes:
* Fixed an issue where options that were invalid for the specified command could be provided on the command-line without generating an error. The options were ignored and did not cause any change in behavior, but it did lead to some confusion. Invalid options will now generate an error. (Reported by Nikhilchandra Kulkarni.)
* Fixed an issue where internal symlinks were not being created for tablespaces in the repository. This issue was only apparent when trying to bring up clusters in-place manually using filesystem snapshots and did not affect normal backup and restore.
* Fixed an issue that prevented errors from being output to the console before the logging system was initialized, i.e. while parsing options. Error codes were still being returned accurately so this would not have made a process look like it succeeded when it did not. (Reported by Adrian Vondendriesch.)
* Fixed an issue where the db-port option specified on the backup server would not be properly passed to the remote unless it was from the first configured database. (Reported by Michael Vitale.)
Features:
* Added the --checksum-page option to allow pgBackRest to validate page checksums in data files when checksums are enabled on PostgreSQL >= 9.3. Note that this functionality requires a C library which may not initially be available in OS packages. The option will automatically be enabled when the library is present and checksums are enabled on the cluster. (Suggested by Stephen Frost.)
* Added the --repo-link option to allow internal symlinks to be suppressed when the repository is located on a filesystem that does not support symlinks. This does not affect any pgBackRest functionality, but the convenience link latest will not be created and neither will internal tablespace symlinks, which will affect the ability to bring up clusters in-place manually using filesystem snapshots.
* Added the --repo-sync option to allow directory syncs in the repository to be disabled for file systems that do not support them, e.g. NTFS.
* Added a predictable log entry to signal that a command has completed successfully. For example a backup ends successfully with: INFO: backup command end: completed successfully. (Suggested by Jens Wilke.)
Refactoring:
* Abstracted code to determine which database cluster is the master and which are standbys. (Contributed by Cynthia Shang.)
* Improved consistency and flexibility of the protocol layer by using JSON for all messages.
* File copy protocol now accepts a function that can do additional processing on the copy buffers and return a result to the calling process.
* Improved IO->bufferRead to always return requested number of bytes until EOF.
* For simplicity, the pg_control file is now copied with the rest of the files instead of by itself of at the end of the process. The backup command does not require this behavior and the restore copies to a temporary file which is renamed at the end of the restore.
* Simplified the result hash of File->manifest(), Db->tablespaceMapGet(), and Db->databaseMapGet().
* Improved errors returned from child processes by removing redundant error level and code.
* Code cleanup in preparation for improved stanza-create command. (Contributed by Cynthia Shang.)
* Improved parameter/result logging in debug/trace functions.
2016-12-12 19:18:27 -05:00
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
2016-06-02 11:10:24 -04:00
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo -u backrest pgbackrest --stanza=demo --type=full backup"
2016-06-02 11:10:24 -04:00
],
2017-04-12 19:17:39 -04:00
"host" : "backup",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo rm -rf /var/lib/pgsql/9.4/data"
],
"host" : "db-standby",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo service postgresql-9.5 initdb"
],
"host" : "db-standby",
2016-06-02 11:10:24 -04:00
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-04-12 19:17:39 -04:00
"Initializing database: [ OK ]\r"
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
2017-04-12 19:17:39 -04:00
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --delta restore"
],
"host" : "db-standby",
"output" : false
2016-06-02 11:10:24 -04:00
},
2017-04-12 19:17:39 -04:00
"type" : "exe"
2016-06-02 11:10:24 -04:00
},
{
"key" : {
2017-04-12 19:17:39 -04:00
"file" : "/var/lib/pgsql/9.5/data/postgresql.conf",
"host" : "db-standby",
2016-06-02 11:10:24 -04:00
"option" : {
2017-04-12 19:17:39 -04:00
"hot_standby" : {
"value" : "on"
2016-06-02 11:10:24 -04:00
}
}
},
"type" : "cfg-postgresql",
"value" : {
"config" : [
2017-04-12 19:17:39 -04:00
"hot_standby = on"
2016-06-02 11:10:24 -04:00
]
}
},
2017-04-12 19:17:39 -04:00
{
"key" : {
"cmd" : [
"sudo service postgresql-9.5 start"
],
"host" : "db-standby",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres sleep 1"
],
"host" : "db-standby",
"output" : false
},
"type" : "exe"
},
2016-06-02 11:10:24 -04:00
{
"key" : {
"file" : "/etc/pgbackrest.conf",
2017-04-12 19:17:39 -04:00
"host" : "backup",
2016-06-02 11:10:24 -04:00
"option" : {
2016-10-10 17:35:58 -04:00
"global" : {
2017-04-12 19:17:39 -04:00
"backup-standby" : {
"value" : "y"
2016-10-10 17:35:58 -04:00
}
2016-06-02 11:10:24 -04:00
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
2017-04-12 19:17:39 -04:00
"db1-host=db-master",
"db1-path=/var/lib/pgsql/9.5/data",
"db1-user=postgres",
"db2-host=db-standby",
"db2-path=/var/lib/pgsql/9.5/data",
"db2-user=postgres",
"",
"[global]",
"backup-standby=y",
"process-max=3",
"repo-path=/var/lib/pgbackrest",
"retention-full=2",
"start-fast=y"
2016-06-02 11:10:24 -04:00
]
}
2017-04-12 19:17:39 -04:00
}
]
}
},
"default" : {
"all" : {
"user-guide" : [
{
"key" : {
2017-06-12 11:36:00 -04:00
"image" : "pgbackrest/test:u14-s3-server",
"name" : "demo-bucket.s3.amazonaws.com",
"os" : "u14",
"user" : "root"
},
"type" : "host",
"value" : {
"ip" : "172.17.0.2"
}
},
{
"key" : {
"image" : "pgbackrest/test:u14-db-9.4-doc",
2017-04-12 19:17:39 -04:00
"mount" : "/backrest:/backrest",
"name" : "db-master",
"os" : "u14",
"user" : "ubuntu"
},
"type" : "host",
"value" : {
2017-06-12 11:36:00 -04:00
"ip" : "172.17.0.3"
2017-04-12 19:17:39 -04:00
}
2016-06-02 11:10:24 -04:00
},
{
"key" : {
"cmd" : [
2017-06-12 11:36:00 -04:00
"sudo apt-get install libdbd-pg-perl libio-socket-ssl-perl libxml-libxml-perl"
2016-06-02 11:10:24 -04:00
],
2017-06-12 11:36:00 -04:00
"cmd-extra" : "-y 2>&1",
2016-06-02 11:10:24 -04:00
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo rm -f /usr/bin/pgbackrest"
2016-06-02 11:10:24 -04:00
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo rm -f /usr/bin/pg_backrest"
2016-06-02 11:10:24 -04:00
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
2017-04-12 19:17:39 -04:00
"cmd" : [
"sudo rm -rf /usr/lib/perl5/BackRest"
],
2016-06-02 11:10:24 -04:00
"host" : "db-master",
2017-04-12 19:17:39 -04:00
"output" : false
2016-06-02 11:10:24 -04:00
},
2017-04-12 19:17:39 -04:00
"type" : "exe"
2016-06-02 11:10:24 -04:00
},
{
"key" : {
2017-04-12 19:17:39 -04:00
"cmd" : [
"sudo rm -rf /usr/share/perl5/BackRest"
],
2016-06-02 11:10:24 -04:00
"host" : "db-master",
2017-04-12 19:17:39 -04:00
"output" : false
2016-06-02 11:10:24 -04:00
},
2017-04-12 19:17:39 -04:00
"type" : "exe"
2016-06-02 11:10:24 -04:00
},
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo rm -rf /usr/lib/perl5/pgBackRest"
2016-06-02 11:10:24 -04:00
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo rm -rf /usr/share/perl5/pgBackRest"
2016-06-02 11:10:24 -04:00
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
v1.12: Page Checksums, Configuration, and Bug Fixes
IMPORTANT NOTE: In prior releases it was possible to specify options on the command-line that were invalid for the current command without getting an error. An error will now be generated for invalid options so it is important to carefully check command-line options in your environment to prevent disruption.
Bug Fixes:
* Fixed an issue where options that were invalid for the specified command could be provided on the command-line without generating an error. The options were ignored and did not cause any change in behavior, but it did lead to some confusion. Invalid options will now generate an error. (Reported by Nikhilchandra Kulkarni.)
* Fixed an issue where internal symlinks were not being created for tablespaces in the repository. This issue was only apparent when trying to bring up clusters in-place manually using filesystem snapshots and did not affect normal backup and restore.
* Fixed an issue that prevented errors from being output to the console before the logging system was initialized, i.e. while parsing options. Error codes were still being returned accurately so this would not have made a process look like it succeeded when it did not. (Reported by Adrian Vondendriesch.)
* Fixed an issue where the db-port option specified on the backup server would not be properly passed to the remote unless it was from the first configured database. (Reported by Michael Vitale.)
Features:
* Added the --checksum-page option to allow pgBackRest to validate page checksums in data files when checksums are enabled on PostgreSQL >= 9.3. Note that this functionality requires a C library which may not initially be available in OS packages. The option will automatically be enabled when the library is present and checksums are enabled on the cluster. (Suggested by Stephen Frost.)
* Added the --repo-link option to allow internal symlinks to be suppressed when the repository is located on a filesystem that does not support symlinks. This does not affect any pgBackRest functionality, but the convenience link latest will not be created and neither will internal tablespace symlinks, which will affect the ability to bring up clusters in-place manually using filesystem snapshots.
* Added the --repo-sync option to allow directory syncs in the repository to be disabled for file systems that do not support them, e.g. NTFS.
* Added a predictable log entry to signal that a command has completed successfully. For example a backup ends successfully with: INFO: backup command end: completed successfully. (Suggested by Jens Wilke.)
Refactoring:
* Abstracted code to determine which database cluster is the master and which are standbys. (Contributed by Cynthia Shang.)
* Improved consistency and flexibility of the protocol layer by using JSON for all messages.
* File copy protocol now accepts a function that can do additional processing on the copy buffers and return a result to the calling process.
* Improved IO->bufferRead to always return requested number of bytes until EOF.
* For simplicity, the pg_control file is now copied with the rest of the files instead of by itself of at the end of the process. The backup command does not require this behavior and the restore copies to a temporary file which is renamed at the end of the restore.
* Simplified the result hash of File->manifest(), Db->tablespaceMapGet(), and Db->databaseMapGet().
* Improved errors returned from child processes by removing redundant error level and code.
* Code cleanup in preparation for improved stanza-create command. (Contributed by Cynthia Shang.)
* Improved parameter/result logging in debug/trace functions.
2016-12-12 19:18:27 -05:00
{
"key" : {
2017-04-12 19:17:39 -04:00
"cmd" : [
2017-06-12 11:36:00 -04:00
"sudo cp -r /root/pgbackrest-release-1.19/lib/pgBackRest \\",
2017-04-12 19:17:39 -04:00
" /usr/share/perl5"
],
v1.12: Page Checksums, Configuration, and Bug Fixes
IMPORTANT NOTE: In prior releases it was possible to specify options on the command-line that were invalid for the current command without getting an error. An error will now be generated for invalid options so it is important to carefully check command-line options in your environment to prevent disruption.
Bug Fixes:
* Fixed an issue where options that were invalid for the specified command could be provided on the command-line without generating an error. The options were ignored and did not cause any change in behavior, but it did lead to some confusion. Invalid options will now generate an error. (Reported by Nikhilchandra Kulkarni.)
* Fixed an issue where internal symlinks were not being created for tablespaces in the repository. This issue was only apparent when trying to bring up clusters in-place manually using filesystem snapshots and did not affect normal backup and restore.
* Fixed an issue that prevented errors from being output to the console before the logging system was initialized, i.e. while parsing options. Error codes were still being returned accurately so this would not have made a process look like it succeeded when it did not. (Reported by Adrian Vondendriesch.)
* Fixed an issue where the db-port option specified on the backup server would not be properly passed to the remote unless it was from the first configured database. (Reported by Michael Vitale.)
Features:
* Added the --checksum-page option to allow pgBackRest to validate page checksums in data files when checksums are enabled on PostgreSQL >= 9.3. Note that this functionality requires a C library which may not initially be available in OS packages. The option will automatically be enabled when the library is present and checksums are enabled on the cluster. (Suggested by Stephen Frost.)
* Added the --repo-link option to allow internal symlinks to be suppressed when the repository is located on a filesystem that does not support symlinks. This does not affect any pgBackRest functionality, but the convenience link latest will not be created and neither will internal tablespace symlinks, which will affect the ability to bring up clusters in-place manually using filesystem snapshots.
* Added the --repo-sync option to allow directory syncs in the repository to be disabled for file systems that do not support them, e.g. NTFS.
* Added a predictable log entry to signal that a command has completed successfully. For example a backup ends successfully with: INFO: backup command end: completed successfully. (Suggested by Jens Wilke.)
Refactoring:
* Abstracted code to determine which database cluster is the master and which are standbys. (Contributed by Cynthia Shang.)
* Improved consistency and flexibility of the protocol layer by using JSON for all messages.
* File copy protocol now accepts a function that can do additional processing on the copy buffers and return a result to the calling process.
* Improved IO->bufferRead to always return requested number of bytes until EOF.
* For simplicity, the pg_control file is now copied with the rest of the files instead of by itself of at the end of the process. The backup command does not require this behavior and the restore copies to a temporary file which is renamed at the end of the restore.
* Simplified the result hash of File->manifest(), Db->tablespaceMapGet(), and Db->databaseMapGet().
* Improved errors returned from child processes by removing redundant error level and code.
* Code cleanup in preparation for improved stanza-create command. (Contributed by Cynthia Shang.)
* Improved parameter/result logging in debug/trace functions.
2016-12-12 19:18:27 -05:00
"host" : "db-master",
2017-04-12 19:17:39 -04:00
"output" : false
v1.12: Page Checksums, Configuration, and Bug Fixes
IMPORTANT NOTE: In prior releases it was possible to specify options on the command-line that were invalid for the current command without getting an error. An error will now be generated for invalid options so it is important to carefully check command-line options in your environment to prevent disruption.
Bug Fixes:
* Fixed an issue where options that were invalid for the specified command could be provided on the command-line without generating an error. The options were ignored and did not cause any change in behavior, but it did lead to some confusion. Invalid options will now generate an error. (Reported by Nikhilchandra Kulkarni.)
* Fixed an issue where internal symlinks were not being created for tablespaces in the repository. This issue was only apparent when trying to bring up clusters in-place manually using filesystem snapshots and did not affect normal backup and restore.
* Fixed an issue that prevented errors from being output to the console before the logging system was initialized, i.e. while parsing options. Error codes were still being returned accurately so this would not have made a process look like it succeeded when it did not. (Reported by Adrian Vondendriesch.)
* Fixed an issue where the db-port option specified on the backup server would not be properly passed to the remote unless it was from the first configured database. (Reported by Michael Vitale.)
Features:
* Added the --checksum-page option to allow pgBackRest to validate page checksums in data files when checksums are enabled on PostgreSQL >= 9.3. Note that this functionality requires a C library which may not initially be available in OS packages. The option will automatically be enabled when the library is present and checksums are enabled on the cluster. (Suggested by Stephen Frost.)
* Added the --repo-link option to allow internal symlinks to be suppressed when the repository is located on a filesystem that does not support symlinks. This does not affect any pgBackRest functionality, but the convenience link latest will not be created and neither will internal tablespace symlinks, which will affect the ability to bring up clusters in-place manually using filesystem snapshots.
* Added the --repo-sync option to allow directory syncs in the repository to be disabled for file systems that do not support them, e.g. NTFS.
* Added a predictable log entry to signal that a command has completed successfully. For example a backup ends successfully with: INFO: backup command end: completed successfully. (Suggested by Jens Wilke.)
Refactoring:
* Abstracted code to determine which database cluster is the master and which are standbys. (Contributed by Cynthia Shang.)
* Improved consistency and flexibility of the protocol layer by using JSON for all messages.
* File copy protocol now accepts a function that can do additional processing on the copy buffers and return a result to the calling process.
* Improved IO->bufferRead to always return requested number of bytes until EOF.
* For simplicity, the pg_control file is now copied with the rest of the files instead of by itself of at the end of the process. The backup command does not require this behavior and the restore copies to a temporary file which is renamed at the end of the restore.
* Simplified the result hash of File->manifest(), Db->tablespaceMapGet(), and Db->databaseMapGet().
* Improved errors returned from child processes by removing redundant error level and code.
* Code cleanup in preparation for improved stanza-create command. (Contributed by Cynthia Shang.)
* Improved parameter/result logging in debug/trace functions.
2016-12-12 19:18:27 -05:00
},
2017-04-12 19:17:39 -04:00
"type" : "exe"
v1.12: Page Checksums, Configuration, and Bug Fixes
IMPORTANT NOTE: In prior releases it was possible to specify options on the command-line that were invalid for the current command without getting an error. An error will now be generated for invalid options so it is important to carefully check command-line options in your environment to prevent disruption.
Bug Fixes:
* Fixed an issue where options that were invalid for the specified command could be provided on the command-line without generating an error. The options were ignored and did not cause any change in behavior, but it did lead to some confusion. Invalid options will now generate an error. (Reported by Nikhilchandra Kulkarni.)
* Fixed an issue where internal symlinks were not being created for tablespaces in the repository. This issue was only apparent when trying to bring up clusters in-place manually using filesystem snapshots and did not affect normal backup and restore.
* Fixed an issue that prevented errors from being output to the console before the logging system was initialized, i.e. while parsing options. Error codes were still being returned accurately so this would not have made a process look like it succeeded when it did not. (Reported by Adrian Vondendriesch.)
* Fixed an issue where the db-port option specified on the backup server would not be properly passed to the remote unless it was from the first configured database. (Reported by Michael Vitale.)
Features:
* Added the --checksum-page option to allow pgBackRest to validate page checksums in data files when checksums are enabled on PostgreSQL >= 9.3. Note that this functionality requires a C library which may not initially be available in OS packages. The option will automatically be enabled when the library is present and checksums are enabled on the cluster. (Suggested by Stephen Frost.)
* Added the --repo-link option to allow internal symlinks to be suppressed when the repository is located on a filesystem that does not support symlinks. This does not affect any pgBackRest functionality, but the convenience link latest will not be created and neither will internal tablespace symlinks, which will affect the ability to bring up clusters in-place manually using filesystem snapshots.
* Added the --repo-sync option to allow directory syncs in the repository to be disabled for file systems that do not support them, e.g. NTFS.
* Added a predictable log entry to signal that a command has completed successfully. For example a backup ends successfully with: INFO: backup command end: completed successfully. (Suggested by Jens Wilke.)
Refactoring:
* Abstracted code to determine which database cluster is the master and which are standbys. (Contributed by Cynthia Shang.)
* Improved consistency and flexibility of the protocol layer by using JSON for all messages.
* File copy protocol now accepts a function that can do additional processing on the copy buffers and return a result to the calling process.
* Improved IO->bufferRead to always return requested number of bytes until EOF.
* For simplicity, the pg_control file is now copied with the rest of the files instead of by itself of at the end of the process. The backup command does not require this behavior and the restore copies to a temporary file which is renamed at the end of the restore.
* Simplified the result hash of File->manifest(), Db->tablespaceMapGet(), and Db->databaseMapGet().
* Improved errors returned from child processes by removing redundant error level and code.
* Code cleanup in preparation for improved stanza-create command. (Contributed by Cynthia Shang.)
* Improved parameter/result logging in debug/trace functions.
2016-12-12 19:18:27 -05:00
},
2016-11-08 10:47:47 +00:00
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo find /usr/share/perl5/pgBackRest -type f -exec chmod 644 {} +"
2016-11-08 10:47:47 +00:00
],
"host" : "db-master",
2017-04-12 19:17:39 -04:00
"output" : false
2016-11-08 10:47:47 +00:00
},
2017-04-12 19:17:39 -04:00
"type" : "exe"
2016-11-08 10:47:47 +00:00
},
2016-07-02 10:22:52 -04:00
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo find /usr/share/perl5/pgBackRest -type d -exec chmod 755 {} +"
2016-07-02 10:22:52 -04:00
],
"host" : "db-master",
2017-04-12 19:17:39 -04:00
"output" : false
2016-07-02 10:22:52 -04:00
},
2017-04-12 19:17:39 -04:00
"type" : "exe"
2016-07-02 10:22:52 -04:00
},
2016-06-02 11:10:24 -04:00
{
"key" : {
"cmd" : [
2017-06-12 11:36:00 -04:00
"sudo cp /root/pgbackrest-release-1.19/bin/pgbackrest /usr/bin/pgbackrest"
2016-06-02 11:10:24 -04:00
],
"host" : "db-master",
2017-04-12 19:17:39 -04:00
"output" : false
2016-06-02 11:10:24 -04:00
},
2017-04-12 19:17:39 -04:00
"type" : "exe"
2016-06-02 11:10:24 -04:00
},
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo chmod 755 /usr/bin/pgbackrest"
2016-06-02 11:10:24 -04:00
],
"host" : "db-master",
2017-04-12 19:17:39 -04:00
"output" : false
2016-06-02 11:10:24 -04:00
},
2017-04-12 19:17:39 -04:00
"type" : "exe"
2016-06-02 11:10:24 -04:00
},
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo mkdir -m 770 /var/log/pgbackrest"
2016-06-02 11:10:24 -04:00
],
"host" : "db-master",
2017-04-12 19:17:39 -04:00
"output" : false
2016-06-02 11:10:24 -04:00
},
2017-04-12 19:17:39 -04:00
"type" : "exe"
2016-06-02 11:10:24 -04:00
},
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo chown postgres:postgres /var/log/pgbackrest"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest"
2016-06-02 11:10:24 -04:00
],
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-06-12 11:36:00 -04:00
"pgBackRest 1.19 - General help",
2016-06-02 11:10:24 -04:00
"",
2017-04-12 19:17:39 -04:00
"Usage:",
" pgbackrest [options] [command]",
2016-06-02 11:10:24 -04:00
"",
2017-04-12 19:17:39 -04:00
"Commands:",
" archive-get Get a WAL segment from the archive.",
" archive-push Push a WAL segment to the archive.",
" backup Backup a database cluster.",
" check Check the configuration.",
" expire Expire backups that exceed retention.",
" help Get help.",
" info Retrieve information about backups.",
" restore Restore a database cluster.",
" stanza-create Create the required stanza data.",
" stanza-upgrade Upgrade a stanza.",
" start Allow pgBackRest processes to run.",
" stop Stop pgBackRest processes from running.",
" version Get version.",
"",
"Use 'pgbackrest help [command]' for more information."
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo -u postgres /usr/lib/postgresql/9.4/bin/initdb \\",
" -D /var/lib/postgresql/9.4/demo -k -A peer"
2016-06-02 11:10:24 -04:00
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo pg_createcluster 9.4 demo"
2016-06-02 11:10:24 -04:00
],
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-04-12 19:17:39 -04:00
"Configuring already existing cluster (configuration: /etc/postgresql/9.4/demo, data: /var/lib/postgresql/9.4/demo, owner: 5000:5000)",
2017-06-12 11:36:00 -04:00
"Ver Cluster Port Status Owner Data directory Log file",
"9.4 demo 5432 down postgres /var/lib/postgresql/9.4/demo /var/log/postgresql/postgresql-9.4-demo.log"
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
2017-04-12 19:17:39 -04:00
"file" : "/etc/postgresql/9.4/demo/postgresql.conf",
2016-06-02 11:10:24 -04:00
"host" : "db-master",
2017-04-12 19:17:39 -04:00
"option" : {
"listen_addresses" : {
"value" : "'*'"
}
}
2016-06-02 11:10:24 -04:00
},
2017-04-12 19:17:39 -04:00
"type" : "cfg-postgresql",
"value" : {
"config" : [
"listen_addresses = '*'"
]
}
2016-06-02 11:10:24 -04:00
},
{
"key" : {
2017-04-12 19:17:39 -04:00
"file" : "/etc/postgresql/9.4/demo/postgresql.conf",
2016-06-02 11:10:24 -04:00
"host" : "db-master",
2017-04-12 19:17:39 -04:00
"option" : {
"log_line_prefix" : {
"value" : "''"
}
}
2016-06-02 11:10:24 -04:00
},
2017-04-12 19:17:39 -04:00
"type" : "cfg-postgresql",
"value" : {
"config" : [
"listen_addresses = '*'",
"log_line_prefix = ''"
]
}
2016-06-02 11:10:24 -04:00
},
{
"key" : {
2017-04-12 19:17:39 -04:00
"file" : "/etc/pgbackrest.conf",
2016-06-02 11:10:24 -04:00
"host" : "db-master",
2017-04-12 19:17:39 -04:00
"option" : {
"demo" : {
"db-path" : {
"value" : "/var/lib/postgresql/9.4/demo"
}
},
"global" : {
"log-level-stderr" : {
"value" : "off"
},
"log-timestamp" : {
"value" : "n"
}
}
}
2016-06-02 11:10:24 -04:00
},
2017-04-12 19:17:39 -04:00
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
"db-path=/var/lib/postgresql/9.4/demo"
]
}
2016-06-02 11:10:24 -04:00
},
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo mkdir /var/lib/pgbackrest"
2016-06-02 11:10:24 -04:00
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo chmod 750 /var/lib/pgbackrest"
2016-06-02 11:10:24 -04:00
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo chown postgres:postgres /var/lib/pgbackrest"
2016-06-02 11:10:24 -04:00
],
"host" : "db-master",
2017-04-12 19:17:39 -04:00
"output" : false
2016-06-02 11:10:24 -04:00
},
2017-04-12 19:17:39 -04:00
"type" : "exe"
2016-06-02 11:10:24 -04:00
},
{
"key" : {
"file" : "/etc/pgbackrest.conf",
"host" : "db-master",
"option" : {
"global" : {
2017-04-12 19:17:39 -04:00
"repo-path" : {
"value" : "/var/lib/pgbackrest"
2016-06-02 11:10:24 -04:00
}
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
"db-path=/var/lib/postgresql/9.4/demo",
"",
"[global]",
2017-04-12 19:17:39 -04:00
"repo-path=/var/lib/pgbackrest"
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
2017-04-12 19:17:39 -04:00
"file" : "/etc/postgresql/9.4/demo/postgresql.conf",
2016-06-02 11:10:24 -04:00
"host" : "db-master",
2017-04-12 19:17:39 -04:00
"option" : {
"archive_command" : {
"value" : "'pgbackrest --stanza=demo archive-push %p'"
},
"archive_mode" : {
"value" : "on"
},
"max_wal_senders" : {
"value" : "3"
},
"wal_level" : {
"value" : "hot_standby"
}
}
2016-06-02 11:10:24 -04:00
},
2017-04-12 19:17:39 -04:00
"type" : "cfg-postgresql",
2016-06-02 11:10:24 -04:00
"value" : {
2017-04-12 19:17:39 -04:00
"config" : [
"archive_command = 'pgbackrest --stanza=demo archive-push %p'",
"archive_mode = on",
"listen_addresses = '*'",
"log_line_prefix = ''",
"max_wal_senders = 3",
"wal_level = hot_standby"
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo pg_ctlcluster 9.4 demo restart"
2016-06-02 11:10:24 -04:00
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo -u postgres sleep 1"
2016-06-02 11:10:24 -04:00
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"file" : "/etc/pgbackrest.conf",
"host" : "db-master",
"option" : {
"global" : {
2017-04-12 19:17:39 -04:00
"retention-full" : {
"value" : "2"
2016-06-02 11:10:24 -04:00
}
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
"db-path=/var/lib/postgresql/9.4/demo",
"",
"[global]",
"repo-path=/var/lib/pgbackrest",
2017-04-12 19:17:39 -04:00
"retention-full=2"
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo -u postgres pgbackrest --stanza=demo --log-level-console=info stanza-create"
2016-06-02 11:10:24 -04:00
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
2017-04-12 19:17:39 -04:00
"completed successfully"
2016-06-02 11:10:24 -04:00
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-06-12 11:36:00 -04:00
"P00 INFO: stanza-create command begin 1.19: --db-path=/var/lib/postgresql/9.4/demo --log-level-console=info --no-log-timestamp --repo-path=/var/lib/pgbackrest --stanza=demo",
2017-04-12 19:17:39 -04:00
"P00 INFO: stanza-create command end: completed successfully"
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
2017-04-12 19:17:39 -04:00
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --log-level-console=info check"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
" successfully stored in the archive at "
]
},
2016-06-02 11:10:24 -04:00
"host" : "db-master",
2017-04-12 19:17:39 -04:00
"output" : true
2016-06-02 11:10:24 -04:00
},
2017-04-12 19:17:39 -04:00
"type" : "exe",
2016-06-02 11:10:24 -04:00
"value" : {
2017-04-12 19:17:39 -04:00
"output" : [
2017-06-12 11:36:00 -04:00
"P00 INFO: check command begin 1.19: --db-path=/var/lib/postgresql/9.4/demo --log-level-console=info --log-level-stderr=off --no-log-timestamp --repo-path=/var/lib/pgbackrest --stanza=demo",
"P00 INFO: WAL segment 000000010000000000000001 successfully stored in the archive at '/var/lib/pgbackrest/archive/demo/9.4-1/0000000100000000/000000010000000000000001-c9b38811df64d6a5729fd95b93bba57e30059912.gz'",
2017-04-12 19:17:39 -04:00
"P00 INFO: check command end: completed successfully"
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo -u postgres pgbackrest --stanza=demo \\",
" --log-level-console=info backup"
2016-06-02 11:10:24 -04:00
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
2017-04-12 19:17:39 -04:00
"no prior backup exists|full backup size"
2016-06-02 11:10:24 -04:00
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-06-12 11:36:00 -04:00
"P00 INFO: backup command begin 1.19: --db-path=/var/lib/postgresql/9.4/demo --log-level-console=info --log-level-stderr=off --no-log-timestamp --repo-path=/var/lib/pgbackrest --retention-full=2 --stanza=demo",
2017-04-12 19:17:39 -04:00
"P00 WARN: no prior backup exists, incr backup has been changed to full",
2017-06-12 11:36:00 -04:00
"P00 INFO: execute exclusive pg_start_backup() with label \"pgBackRest backup started at 2017-06-12 15:24:51\": backup begins after the next regular checkpoint completes",
2017-04-12 19:17:39 -04:00
"P00 INFO: backup start archive = 000000010000000000000002, lsn = 0/2000028",
" [filtered 757 lines of output]",
"P01 INFO: backup file /var/lib/postgresql/9.4/demo/base/1/11895 (0B, 100%)",
"P01 INFO: backup file /var/lib/postgresql/9.4/demo/base/1/11885 (0B, 100%)",
"P00 INFO: full backup size = 19.3MB",
"P00 INFO: execute exclusive pg_stop_backup() and wait for all WAL segments to archive",
"P00 INFO: backup stop archive = 000000010000000000000002, lsn = 0/20000F0",
" [filtered 4 lines of output]"
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
"cmd" : [
2017-06-12 11:36:00 -04:00
"sudo -u postgres ls -1 /var/lib/pgbackrest/backup/demo | tail -5 | head -1"
2016-06-02 11:10:24 -04:00
],
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-06-12 11:36:00 -04:00
"20170612-152451F"
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo -u postgres pgbackrest --stanza=demo --type=diff \\",
2016-06-02 11:10:24 -04:00
" --log-level-console=info backup"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
2017-04-12 19:17:39 -04:00
"diff backup size"
2016-06-02 11:10:24 -04:00
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-04-12 19:17:39 -04:00
" [filtered 4 lines of output]",
2017-06-12 11:36:00 -04:00
"P01 INFO: backup file /var/lib/postgresql/9.4/demo/global/pg_control (8KB, 97%) checksum 3ef4a8084c7b28aa356bb43ed59942692fed29a9",
"P01 INFO: backup file /var/lib/postgresql/9.4/demo/backup_label (236B, 100%) checksum cea5bd57ee29ae47366e0ea3a5a1e5377307d06d",
2017-04-12 19:17:39 -04:00
"P00 INFO: diff backup size = 8.2KB",
"P00 INFO: execute exclusive pg_stop_backup() and wait for all WAL segments to archive",
"P00 INFO: backup stop archive = 000000010000000000000003, lsn = 0/30000F0",
" [filtered 4 lines of output]"
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
2017-04-12 19:17:39 -04:00
"cmd" : [
"sudo -u postgres pgbackrest info"
],
"highlight" : {
"filter" : false,
"filter-context" : 2,
"list" : [
"(full|incr|diff) backup"
]
},
2016-06-02 11:10:24 -04:00
"host" : "db-master",
2017-04-12 19:17:39 -04:00
"output" : true
2016-06-02 11:10:24 -04:00
},
2017-04-12 19:17:39 -04:00
"type" : "exe",
2016-06-02 11:10:24 -04:00
"value" : {
2017-04-12 19:17:39 -04:00
"output" : [
"stanza: demo",
" status: ok",
" wal archive min/max: 000000010000000000000002 / 000000010000000000000003",
2016-06-02 11:10:24 -04:00
"",
2017-06-12 11:36:00 -04:00
" full backup: 20170612-152451F",
" timestamp start/stop: 2017-06-12 15:24:51 / 2017-06-12 15:24:56",
2017-04-12 19:17:39 -04:00
" wal start/stop: 000000010000000000000002 / 000000010000000000000002",
" database size: 19.3MB, backup size: 19.3MB",
" repository size: 2.2MB, repository backup size: 2.2MB",
"",
2017-06-12 11:36:00 -04:00
" diff backup: 20170612-152451F_20170612-152457D",
" timestamp start/stop: 2017-06-12 15:24:57 / 2017-06-12 15:25:00",
2017-04-12 19:17:39 -04:00
" wal start/stop: 000000010000000000000003 / 000000010000000000000003",
" database size: 19.3MB, backup size: 8.2KB",
" repository size: 2.2MB, repository backup size: 345B",
2017-06-12 11:36:00 -04:00
" backup reference list: 20170612-152451F"
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo pg_ctlcluster 9.4 demo stop"
2016-06-02 11:10:24 -04:00
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo -u postgres rm /var/lib/postgresql/9.4/demo/global/pg_control"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo pg_ctlcluster 9.4 demo start"
2016-06-02 11:10:24 -04:00
],
2017-04-12 19:17:39 -04:00
"err-expect" : "1",
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"could not find the database system"
]
},
2016-06-02 11:10:24 -04:00
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-04-12 19:17:39 -04:00
"The PostgreSQL server failed to start. Please check the log output:",
"postgres: could not find the database system",
"Expected to find it in the directory \"/var/lib/postgresql/9.4/demo\",",
"but could not open file \"/var/lib/postgresql/9.4/demo/global/pg_control\": No such file or directory"
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo -u postgres sleep 1"
2016-06-02 11:10:24 -04:00
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo -u postgres find /var/lib/postgresql/9.4/demo -mindepth 1 -delete"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo restore"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo pg_ctlcluster 9.4 demo start"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres sleep 1"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --type=incr \\",
2016-06-02 11:10:24 -04:00
" --log-level-console=info backup"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
2017-04-12 19:17:39 -04:00
"backup begins after the next regular checkpoint completes"
2016-06-02 11:10:24 -04:00
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-06-12 11:36:00 -04:00
"P00 INFO: backup command begin 1.19: --db-path=/var/lib/postgresql/9.4/demo --log-level-console=info --log-level-stderr=off --no-log-timestamp --repo-path=/var/lib/pgbackrest --retention-full=2 --stanza=demo --type=incr",
"P00 INFO: last backup label = 20170612-152451F_20170612-152457D, version = 1.19",
"P00 INFO: execute exclusive pg_start_backup() with label \"pgBackRest backup started at 2017-06-12 15:25:11\": backup begins after the next regular checkpoint completes",
"P00 INFO: backup start archive = 000000020000000000000006, lsn = 0/6000028",
"P01 INFO: backup file /var/lib/postgresql/9.4/demo/base/12139/pg_internal.init (115.2KB, 72%) checksum 3abf3a38996087b40206059f53f5443f142b3bfe",
2017-04-12 19:17:39 -04:00
" [filtered 13 lines of output]"
2016-09-07 08:29:21 -04:00
]
}
},
{
"key" : {
"file" : "/etc/pgbackrest.conf",
"host" : "db-master",
"option" : {
"global" : {
2017-04-12 19:17:39 -04:00
"start-fast" : {
"value" : "y"
2016-09-07 08:29:21 -04:00
}
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
"db-path=/var/lib/postgresql/9.4/demo",
"",
"[global]",
"repo-path=/var/lib/pgbackrest",
"retention-full=2",
2017-04-12 19:17:39 -04:00
"start-fast=y"
2016-09-07 08:29:21 -04:00
]
}
},
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo -u postgres pgbackrest --stanza=demo --type=incr \\",
" --log-level-console=info backup"
2016-09-07 08:29:21 -04:00
],
2017-04-12 19:17:39 -04:00
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"backup begins after the requested immediate checkpoint completes"
]
},
2016-09-07 08:29:21 -04:00
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-06-12 11:36:00 -04:00
"P00 INFO: backup command begin 1.19: --db-path=/var/lib/postgresql/9.4/demo --log-level-console=info --log-level-stderr=off --no-log-timestamp --repo-path=/var/lib/pgbackrest --retention-full=2 --stanza=demo --start-fast --type=incr",
"P00 INFO: last backup label = 20170612-152451F_20170612-152511I, version = 1.19",
"P00 INFO: execute exclusive pg_start_backup() with label \"pgBackRest backup started at 2017-06-12 15:25:16\": backup begins after the requested immediate checkpoint completes",
"P00 INFO: backup start archive = 000000020000000000000007, lsn = 0/7000028",
"P01 INFO: backup file /var/lib/postgresql/9.4/demo/global/pg_control (8KB, 97%) checksum 0148b44ae4ac0464f410b92239a8eaee73f19aa7",
2017-04-12 19:17:39 -04:00
" [filtered 8 lines of output]"
]
2016-09-07 08:29:21 -04:00
}
},
{
"key" : {
"cmd" : [
2017-06-12 11:36:00 -04:00
"sudo chmod 550 /var/lib/pgbackrest/backup/demo/"
2016-09-07 08:29:21 -04:00
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo -u postgres pgbackrest --stanza=demo --type=incr \\",
2016-09-07 08:29:21 -04:00
" --log-level-console=info backup"
],
2017-04-12 19:17:39 -04:00
"err-expect" : "47",
2016-09-07 08:29:21 -04:00
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
2017-04-12 19:17:39 -04:00
"ERROR:"
2016-09-07 08:29:21 -04:00
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-04-12 19:17:39 -04:00
" [filtered 2 lines of output]",
2017-06-12 11:36:00 -04:00
"P00 INFO: execute exclusive pg_start_backup() with label \"pgBackRest backup started at 2017-06-12 15:25:20\": backup begins after the requested immediate checkpoint completes",
"P00 INFO: backup start archive = 000000020000000000000008, lsn = 0/8000028",
"P00 ERROR: [047]: unable to create path '/var/lib/pgbackrest/backup/demo/20170612-152451F_20170612-152520I': Permission denied",
2017-04-12 19:17:39 -04:00
"P00 INFO: backup command end: aborted with exception [047]"
2016-09-07 08:29:21 -04:00
]
}
},
{
"key" : {
"cmd" : [
2017-06-12 11:36:00 -04:00
"sudo chmod 750 /var/lib/pgbackrest/backup/demo/"
2016-09-07 08:29:21 -04:00
],
"host" : "db-master",
2017-04-12 19:17:39 -04:00
"output" : false
2016-09-07 08:29:21 -04:00
},
2017-04-12 19:17:39 -04:00
"type" : "exe"
2016-09-07 08:29:21 -04:00
},
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo -u postgres pgbackrest --stanza=demo --type=incr \\",
" --log-level-console=info backup"
2016-09-07 08:29:21 -04:00
],
2017-04-12 19:17:39 -04:00
"err-expect" : "57",
2016-09-07 08:29:21 -04:00
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
2017-04-12 19:17:39 -04:00
"ERROR:"
2016-09-07 08:29:21 -04:00
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-06-12 11:36:00 -04:00
"P00 INFO: backup command begin 1.19: --db-path=/var/lib/postgresql/9.4/demo --log-level-console=info --log-level-stderr=off --no-log-timestamp --repo-path=/var/lib/pgbackrest --retention-full=2 --stanza=demo --start-fast --type=incr",
"P00 INFO: last backup label = 20170612-152451F_20170612-152516I, version = 1.19",
"P00 INFO: execute exclusive pg_start_backup() with label \"pgBackRest backup started at 2017-06-12 15:25:22\": backup begins after the requested immediate checkpoint completes",
2017-04-12 19:17:39 -04:00
"P00 ERROR: [057]: ERROR: a backup is already in progress",
" HINT: Run pg_stop_backup() and try again.:",
2017-06-12 11:36:00 -04:00
" select to_char(current_timestamp, 'YYYY-MM-DD HH24:MI:SS.US TZ'), pg_xlogfile_name(lsn), lsn::text from pg_start_backup('pgBackRest backup started at 2017-06-12 15:25:22', true) as lsn"
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
2017-04-12 19:17:39 -04:00
"file" : "/etc/pgbackrest.conf",
2016-06-02 11:10:24 -04:00
"host" : "db-master",
2017-04-12 19:17:39 -04:00
"option" : {
"global" : {
"stop-auto" : {
"value" : "y"
}
}
}
2016-06-02 11:10:24 -04:00
},
2017-04-12 19:17:39 -04:00
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
"db-path=/var/lib/postgresql/9.4/demo",
"",
"[global]",
"repo-path=/var/lib/pgbackrest",
"retention-full=2",
"start-fast=y",
"stop-auto=y"
]
}
2016-06-02 11:10:24 -04:00
},
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo -u postgres pgbackrest --stanza=demo --type=incr \\",
" --log-level-console=info backup"
2016-06-02 11:10:24 -04:00
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
2017-04-12 19:17:39 -04:00
"cluster is already in backup mode|backup begins after the requested immediate checkpoint completes"
2016-06-02 11:10:24 -04:00
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-06-12 11:36:00 -04:00
"P00 INFO: backup command begin 1.19: --db-path=/var/lib/postgresql/9.4/demo --log-level-console=info --log-level-stderr=off --no-log-timestamp --repo-path=/var/lib/pgbackrest --retention-full=2 --stanza=demo --start-fast --stop-auto --type=incr",
"P00 INFO: last backup label = 20170612-152451F_20170612-152516I, version = 1.19",
2017-04-12 19:17:39 -04:00
"P00 WARN: the cluster is already in backup mode but no pgBackRest backup process is running. pg_stop_backup() will be called so a new backup can be started.",
"P00 INFO: execute exclusive pg_stop_backup() and wait for all WAL segments to archive",
2017-06-12 11:36:00 -04:00
"P00 INFO: execute exclusive pg_start_backup() with label \"pgBackRest backup started at 2017-06-12 15:25:24\": backup begins after the requested immediate checkpoint completes",
"P00 INFO: backup start archive = 000000020000000000000009, lsn = 0/9000028",
"P01 INFO: backup file /var/lib/postgresql/9.4/demo/global/pg_control (8KB, 97%) checksum 567b575cf8b1ab285b30362c11ec33c2b914ff69",
2017-04-12 19:17:39 -04:00
" [filtered 8 lines of output]"
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
2017-04-12 19:17:39 -04:00
"file" : "/etc/pgbackrest.conf",
2016-06-02 11:10:24 -04:00
"host" : "db-master",
2017-04-12 19:17:39 -04:00
"option" : {
"global" : {
"retention-full" : {
"value" : "2"
}
}
}
2016-06-02 11:10:24 -04:00
},
2017-04-12 19:17:39 -04:00
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
"db-path=/var/lib/postgresql/9.4/demo",
"",
"[global]",
"repo-path=/var/lib/pgbackrest",
"retention-full=2",
"start-fast=y",
"stop-auto=y"
]
}
2016-06-02 11:10:24 -04:00
},
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo -u postgres pgbackrest --stanza=demo --type=full \\",
" --log-level-console=detail backup"
2016-06-02 11:10:24 -04:00
],
2017-04-12 19:17:39 -04:00
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
2017-06-12 11:36:00 -04:00
"archive retention on backup 20170612-152451F|remove archive"
2017-04-12 19:17:39 -04:00
]
},
2016-06-02 11:10:24 -04:00
"host" : "db-master",
2017-04-12 19:17:39 -04:00
"output" : true
2016-06-02 11:10:24 -04:00
},
2017-04-12 19:17:39 -04:00
"type" : "exe",
"value" : {
"output" : [
" [filtered 766 lines of output]",
"P00 INFO: backup command end: completed successfully",
2017-06-12 11:36:00 -04:00
"P00 INFO: expire command begin 1.19: --log-level-console=detail --log-level-stderr=off --no-log-timestamp --repo-path=/var/lib/pgbackrest --retention-archive=2 --retention-full=2 --stanza=demo",
"P00 DETAIL: archive retention on backup 20170612-152451F, archiveId = 9.4-1, start = 000000010000000000000002",
2017-04-12 19:17:39 -04:00
"P00 DETAIL: no archive to remove, archiveId = 9.4-1",
"P00 INFO: expire command end: completed successfully"
]
}
2016-06-02 11:10:24 -04:00
},
{
"key" : {
"cmd" : [
2017-06-12 11:36:00 -04:00
"sudo -u postgres ls -1 /var/lib/pgbackrest/backup/demo | tail -5 | head -1"
2016-06-02 11:10:24 -04:00
],
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-06-12 11:36:00 -04:00
"20170612-152529F"
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo -u postgres pgbackrest --stanza=demo --type=full \\",
" --log-level-console=info backup"
2016-06-02 11:10:24 -04:00
],
2017-04-12 19:17:39 -04:00
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
2017-06-12 11:36:00 -04:00
"expire full backup set\\: 20170612-152451F|archive retention on backup 20170612-152529F|remove archive"
2017-04-12 19:17:39 -04:00
]
},
2016-06-02 11:10:24 -04:00
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-04-12 19:17:39 -04:00
" [filtered 766 lines of output]",
"P00 INFO: backup command end: completed successfully",
2017-06-12 11:36:00 -04:00
"P00 INFO: expire command begin 1.19: --log-level-console=info --log-level-stderr=off --no-log-timestamp --repo-path=/var/lib/pgbackrest --retention-archive=2 --retention-full=2 --stanza=demo",
"P00 INFO: expire full backup set: 20170612-152451F, 20170612-152451F_20170612-152457D, 20170612-152451F_20170612-152511I, 20170612-152451F_20170612-152516I, 20170612-152451F_20170612-152524I",
"P00 INFO: remove expired backup 20170612-152451F_20170612-152524I",
"P00 INFO: remove expired backup 20170612-152451F_20170612-152516I",
2017-04-12 19:17:39 -04:00
" [filtered 3 lines of output]"
]
}
},
{
"key" : {
"file" : "/etc/pgbackrest.conf",
"host" : "db-master",
"option" : {
"global" : {
"retention-diff" : {
"value" : "1"
}
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
"db-path=/var/lib/postgresql/9.4/demo",
"",
"[global]",
"repo-path=/var/lib/pgbackrest",
"retention-diff=1",
"retention-full=2",
"start-fast=y",
"stop-auto=y"
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo -u postgres pgbackrest --stanza=demo --type=diff backup"
2016-06-02 11:10:24 -04:00
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
2017-06-12 11:36:00 -04:00
"sudo -u postgres ls -1 /var/lib/pgbackrest/backup/demo | tail -5 | head -1"
2016-06-02 11:10:24 -04:00
],
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-06-12 11:36:00 -04:00
"20170612-152535F_20170612-152542D"
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo -u postgres pgbackrest --stanza=demo --type=incr backup"
2016-06-02 11:10:24 -04:00
],
"host" : "db-master",
2017-04-12 19:17:39 -04:00
"output" : false
2016-06-02 11:10:24 -04:00
},
2017-04-12 19:17:39 -04:00
"type" : "exe"
2016-06-02 11:10:24 -04:00
},
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo -u postgres pgbackrest --stanza=demo --type=diff \\",
" --log-level-console=info backup"
2016-06-02 11:10:24 -04:00
],
2017-04-12 19:17:39 -04:00
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
2017-06-12 11:36:00 -04:00
"expire diff backup set: 20170612-152535F_20170612-152542D"
2017-04-12 19:17:39 -04:00
]
},
2016-06-02 11:10:24 -04:00
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-04-12 19:17:39 -04:00
" [filtered 10 lines of output]",
"P00 INFO: backup command end: completed successfully",
2017-06-12 11:36:00 -04:00
"P00 INFO: expire command begin 1.19: --log-level-console=info --log-level-stderr=off --no-log-timestamp --repo-path=/var/lib/pgbackrest --retention-archive=2 --retention-diff=1 --retention-full=2 --stanza=demo",
"P00 INFO: expire diff backup set: 20170612-152535F_20170612-152542D, 20170612-152535F_20170612-152547I",
"P00 INFO: remove expired backup 20170612-152535F_20170612-152547I",
"P00 INFO: remove expired backup 20170612-152535F_20170612-152542D"
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
2017-04-12 19:17:39 -04:00
"file" : "/etc/pgbackrest.conf",
2016-06-02 11:10:24 -04:00
"host" : "db-master",
2017-04-12 19:17:39 -04:00
"option" : {
"global" : {
"retention-diff" : {
"value" : "2"
}
}
}
2016-06-02 11:10:24 -04:00
},
2017-04-12 19:17:39 -04:00
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
"db-path=/var/lib/postgresql/9.4/demo",
"",
"[global]",
"repo-path=/var/lib/pgbackrest",
"retention-diff=2",
"retention-full=2",
"start-fast=y",
"stop-auto=y"
]
}
2016-06-02 11:10:24 -04:00
},
{
"key" : {
"cmd" : [
2017-06-12 11:36:00 -04:00
"sudo -u postgres ls -1 /var/lib/pgbackrest/backup/demo | tail -5 | head -1"
2016-06-02 11:10:24 -04:00
],
"host" : "db-master",
2017-04-12 19:17:39 -04:00
"output" : true
2016-06-02 11:10:24 -04:00
},
2017-04-12 19:17:39 -04:00
"type" : "exe",
"value" : {
"output" : [
2017-06-12 11:36:00 -04:00
"20170612-152535F_20170612-152551D"
2017-04-12 19:17:39 -04:00
]
}
2016-06-02 11:10:24 -04:00
},
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo -u postgres psql -c \" \\",
" select pg_create_restore_point('generate WAL'); select pg_switch_xlog(); \\",
" select pg_create_restore_point('generate WAL'); select pg_switch_xlog();\""
2016-06-02 11:10:24 -04:00
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo -u postgres pgbackrest --stanza=demo --type=diff \\",
" --log-level-console=info backup"
2016-06-02 11:10:24 -04:00
],
2017-04-12 19:17:39 -04:00
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"new backup label"
]
},
2016-06-02 11:10:24 -04:00
"host" : "db-master",
2017-04-12 19:17:39 -04:00
"output" : true
2016-06-02 11:10:24 -04:00
},
2017-04-12 19:17:39 -04:00
"type" : "exe",
"value" : {
"output" : [
" [filtered 7 lines of output]",
"P00 INFO: execute exclusive pg_stop_backup() and wait for all WAL segments to archive",
"P00 INFO: backup stop archive = 000000020000000000000012, lsn = 0/120000F0",
2017-06-12 11:36:00 -04:00
"P00 INFO: new backup label = 20170612-152535F_20170612-152556D",
2017-04-12 19:17:39 -04:00
"P00 INFO: backup command end: completed successfully",
2017-06-12 11:36:00 -04:00
"P00 INFO: expire command begin 1.19: --log-level-console=info --log-level-stderr=off --no-log-timestamp --repo-path=/var/lib/pgbackrest --retention-archive=2 --retention-diff=2 --retention-full=2 --stanza=demo"
2017-04-12 19:17:39 -04:00
]
}
},
{
"key" : {
"cmd" : [
2017-06-12 11:36:00 -04:00
"sudo -u postgres ls -1 /var/lib/pgbackrest/backup/demo | tail -5 | head -1"
2017-04-12 19:17:39 -04:00
],
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-06-12 11:36:00 -04:00
"20170612-152535F_20170612-152556D"
2017-04-12 19:17:39 -04:00
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --log-level-console=detail \\",
" --retention-archive-type=diff --retention-archive=1 expire"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
2017-06-12 11:36:00 -04:00
"archive retention on backup 20170612-152535F_20170612-152551D|remove archive"
2017-04-12 19:17:39 -04:00
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-06-12 11:36:00 -04:00
"P00 INFO: expire command begin 1.19: --log-level-console=detail --log-level-stderr=off --no-log-timestamp --repo-path=/var/lib/pgbackrest --retention-archive=1 --retention-archive-type=diff --retention-diff=2 --retention-full=2 --stanza=demo",
"P00 DETAIL: archive retention on backup 20170612-152529F, archiveId = 9.4-1, start = 00000002000000000000000A, stop = 00000002000000000000000A",
"P00 DETAIL: archive retention on backup 20170612-152535F, archiveId = 9.4-1, start = 00000002000000000000000B, stop = 00000002000000000000000B",
"P00 DETAIL: archive retention on backup 20170612-152535F_20170612-152551D, archiveId = 9.4-1, start = 00000002000000000000000E, stop = 00000002000000000000000E",
"P00 DETAIL: archive retention on backup 20170612-152535F_20170612-152556D, archiveId = 9.4-1, start = 000000020000000000000012",
"P00 DETAIL: remove archive: archiveId = 9.4-1, start = 00000002000000000000000C, stop = 00000002000000000000000D",
2017-04-12 19:17:39 -04:00
"P00 DETAIL: remove archive: archiveId = 9.4-1, start = 00000002000000000000000F, stop = 000000020000000000000011",
"P00 INFO: expire command end: completed successfully"
]
}
},
{
"key" : {
"cmd" : [
"sudo pg_ctlcluster 9.4 demo stop"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --delta \\",
" --log-level-console=detail restore"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"demo\\/PG_VERSION - exists and matches backup|check\\/clean db path|restore global\\/pg_control"
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-06-12 11:36:00 -04:00
" [filtered 693 lines of output]",
2017-04-12 19:17:39 -04:00
"P01 DETAIL: restore file /var/lib/postgresql/9.4/demo/base/12134/PG_VERSION - exists and matches backup (4B, 99%) checksum 8dbabb96e032b8d9f1993c0e4b9141e71ade01a1",
"P01 DETAIL: restore file /var/lib/postgresql/9.4/demo/base/1/PG_VERSION - exists and matches backup (4B, 99%) checksum 8dbabb96e032b8d9f1993c0e4b9141e71ade01a1",
"P01 DETAIL: restore file /var/lib/postgresql/9.4/demo/PG_VERSION - exists and matches backup (4B, 100%) checksum 8dbabb96e032b8d9f1993c0e4b9141e71ade01a1",
"P01 DETAIL: restore file /var/lib/postgresql/9.4/demo/global/12086 - exists and is zero size (0B, 100%)",
"P01 DETAIL: restore file /var/lib/postgresql/9.4/demo/global/12038 - exists and is zero size (0B, 100%)",
" [filtered 83 lines of output]",
"P01 DETAIL: restore file /var/lib/postgresql/9.4/demo/base/1/11885 - exists and is zero size (0B, 100%)",
"P00 INFO: write /var/lib/postgresql/9.4/demo/recovery.conf",
2017-06-12 11:36:00 -04:00
"P00 INFO: restore global/pg_control (performed last to ensure aborted restores cannot be started)",
2017-04-12 19:17:39 -04:00
"P00 INFO: restore command end: completed successfully"
]
}
},
{
"key" : {
"cmd" : [
"sudo pg_ctlcluster 9.4 demo start"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres sleep 1"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres psql -c \"create database test1;\""
],
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
"CREATE DATABASE"
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres psql -c \"create database test2;\""
],
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
"CREATE DATABASE"
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --type=incr backup"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres psql -c \"create table test1_table (id int); \\",
" insert into test1_table (id) values (1);\" test1"
],
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
"INSERT 0 1"
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres psql -c \"create table test2_table (id int); \\",
" insert into test2_table (id) values (2);\" test2"
],
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
"INSERT 0 1"
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres du -sh /var/lib/postgresql/9.4/demo/base/16384"
],
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
"6.4M\t/var/lib/postgresql/9.4/demo/base/16384"
]
}
},
{
"key" : {
"cmd" : [
"sudo pg_ctlcluster 9.4 demo stop"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --delta \\",
" --db-include=test2 restore"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo pg_ctlcluster 9.4 demo start"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres sleep 1"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
2016-06-02 11:10:24 -04:00
"key" : {
"cmd" : [
"sudo -u postgres psql -c \"select * from test2_table;\" test2"
],
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
" id ",
"----",
" 2",
"(1 row)"
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres psql -c \"select * from test1_table;\" test1"
],
"err-expect" : "2",
"highlight" : {
"filter" : false,
"filter-context" : 2,
"list" : [
"relation mapping file.*contains invalid data"
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
"psql: FATAL: relation mapping file \"base/16384/pg_filenode.map\" contains invalid data"
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres du -sh /var/lib/postgresql/9.4/demo/base/16384"
],
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
"152K\t/var/lib/postgresql/9.4/demo/base/16384"
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres psql -c \"drop database test1;\""
],
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
"DROP DATABASE"
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres psql -c \"select oid, datname from pg_database order by oid;\""
],
"highlight" : {
"filter" : false,
"filter-context" : 2,
"list" : [
"test2"
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
" oid | datname ",
"-------+-----------",
" 1 | template1",
" 12134 | template0",
" 12139 | postgres",
" 16385 | test2",
"(4 rows)"
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --type=diff backup"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres psql -c \"begin; \\",
" create table important_table (message text); \\",
" insert into important_table values ('Important Data'); \\",
" commit; \\",
" select * from important_table;\""
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"Important Data"
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
" message ",
"----------------",
" Important Data",
"(1 row)"
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres psql -Atc \"select current_timestamp\""
],
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-06-12 11:36:00 -04:00
"2017-06-12 15:26:29.948788+00"
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres psql -c \"begin; \\",
" drop table important_table; \\",
" commit; \\",
" select * from important_table;\""
],
"err-expect" : "1",
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"does not exist"
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
"ERROR: relation \"important_table\" does not exist",
"LINE 1: ...le important_table; commit; select * from important_...",
" ^"
]
}
},
{
"key" : {
"cmd" : [
"sudo pg_ctlcluster 9.4 demo stop"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --delta \\",
2017-06-12 11:36:00 -04:00
" --type=time \"--target=2017-06-12 15:26:29.948788+00\" restore"
2016-06-02 11:10:24 -04:00
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo rm /var/log/postgresql/postgresql-9.4-demo.log"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres cat /var/lib/postgresql/9.4/demo/recovery.conf"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"recovery_target_time"
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
"restore_command = '/usr/bin/pgbackrest --stanza=demo archive-get %f \"%p\"'",
2017-06-12 11:36:00 -04:00
"recovery_target_time = '2017-06-12 15:26:29.948788+00'"
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
"cmd" : [
"sudo pg_ctlcluster 9.4 demo start"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres sleep 1"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres psql -c \"select * from important_table\""
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"Important Data"
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
" message ",
"----------------",
" Important Data",
"(1 row)"
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres cat /var/log/postgresql/postgresql-9.4-demo.log"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"recovery stopping before|last completed transaction|starting point-in-time recovery"
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-06-12 11:36:00 -04:00
"LOG: database system was interrupted; last known up at 2017-06-12 15:26:25 UTC",
2016-06-02 11:10:24 -04:00
"LOG: creating missing WAL directory \"pg_xlog/archive_status\"",
2017-06-12 11:36:00 -04:00
"LOG: starting point-in-time recovery to 2017-06-12 15:26:29.948788+00",
2016-06-02 11:10:24 -04:00
"LOG: restored log file \"00000004.history\" from archive",
2017-06-12 11:36:00 -04:00
"LOG: restored log file \"000000040000000000000017\" from archive",
2017-03-02 20:15:14 -05:00
" [filtered 2 lines of output]",
2017-03-13 16:54:51 -04:00
"LOG: incomplete startup packet",
2017-06-12 11:36:00 -04:00
"LOG: restored log file \"000000040000000000000018\" from archive",
"LOG: recovery stopping before commit of transaction 686, time 2017-06-12 15:26:30.059103+00",
"LOG: redo done at 0/180157F0",
"LOG: last completed transaction was at log time 2017-06-12 15:26:29.835568+00",
2016-06-02 11:10:24 -04:00
"LOG: selected new timeline ID: 5",
2016-11-17 09:57:59 -05:00
"LOG: restored log file \"00000004.history\" from archive",
2017-04-12 19:17:39 -04:00
" [filtered 4 lines of output]"
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres psql -c \"begin; \\",
" drop table important_table; \\",
" commit; \\",
" select * from important_table;\""
],
"err-expect" : "1",
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"does not exist"
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
"ERROR: relation \"important_table\" does not exist",
"LINE 1: ...le important_table; commit; select * from important_...",
" ^"
]
}
},
{
"key" : {
"cmd" : [
2017-06-12 11:36:00 -04:00
"sudo -u postgres ls -1 /var/lib/pgbackrest/backup/demo | tail -5 | head -1"
2016-06-02 11:10:24 -04:00
],
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-06-12 11:36:00 -04:00
"20170612-152535F_20170612-152624D"
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --type=incr backup"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo pg_ctlcluster 9.4 demo stop"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --delta \\",
2017-06-12 11:36:00 -04:00
" --type=time \"--target=2017-06-12 15:26:29.948788+00\" restore"
2016-06-02 11:10:24 -04:00
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo rm /var/log/postgresql/postgresql-9.4-demo.log"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo pg_ctlcluster 9.4 demo start"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres sleep 1"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres psql -c \"select * from important_table\""
],
"err-expect" : "1",
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"does not exist"
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
"ERROR: relation \"important_table\" does not exist",
"LINE 1: select * from important_table",
" ^"
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres cat /var/log/postgresql/postgresql-9.4-demo.log"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
2016-07-02 10:22:52 -04:00
"starting point-in-time recovery|consistent recovery state reached"
2016-06-02 11:10:24 -04:00
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-06-12 11:36:00 -04:00
"LOG: database system was interrupted; last known up at 2017-06-12 15:26:38 UTC",
2016-06-02 11:10:24 -04:00
"LOG: creating missing WAL directory \"pg_xlog/archive_status\"",
2017-06-12 11:36:00 -04:00
"LOG: starting point-in-time recovery to 2017-06-12 15:26:29.948788+00",
2017-03-13 16:54:51 -04:00
"LOG: restored log file \"00000005.history\" from archive",
2017-06-12 11:36:00 -04:00
"LOG: restored log file \"000000050000000000000019\" from archive",
"LOG: redo starts at 0/19000028",
"LOG: consistent recovery state reached at 0/190000F0",
"LOG: redo done at 0/190000F0",
2017-03-13 16:54:51 -04:00
"LOG: incomplete startup packet",
2017-06-12 11:36:00 -04:00
" [filtered 8 lines of output]"
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest info"
],
"highlight" : {
"filter" : false,
"filter-context" : 2,
"list" : [
2017-06-12 11:36:00 -04:00
"20170612-152535F_20170612-152624D"
2016-06-02 11:10:24 -04:00
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
"stanza: demo",
" status: ok",
2017-06-12 11:36:00 -04:00
" wal archive min/max: 00000002000000000000000A / 000000050000000000000019",
2016-06-02 11:10:24 -04:00
"",
2017-06-12 11:36:00 -04:00
" full backup: 20170612-152529F",
" timestamp start/stop: 2017-06-12 15:25:29 / 2017-06-12 15:25:34",
" wal start/stop: 00000002000000000000000A / 00000002000000000000000A",
2016-06-02 11:10:24 -04:00
" database size: 19.3MB, backup size: 19.3MB",
" repository size: 2.2MB, repository backup size: 2.2MB",
"",
2017-06-12 11:36:00 -04:00
" full backup: 20170612-152535F",
" timestamp start/stop: 2017-06-12 15:25:35 / 2017-06-12 15:25:40",
" wal start/stop: 00000002000000000000000B / 00000002000000000000000B",
2016-06-02 11:10:24 -04:00
" database size: 19.3MB, backup size: 19.3MB",
" repository size: 2.2MB, repository backup size: 2.2MB",
"",
2017-06-12 11:36:00 -04:00
" diff backup: 20170612-152535F_20170612-152556D",
" timestamp start/stop: 2017-06-12 15:25:56 / 2017-06-12 15:25:59",
2017-02-13 10:07:04 -05:00
" wal start/stop: 000000020000000000000012 / 000000020000000000000012",
2016-09-07 08:29:21 -04:00
" database size: 19.3MB, backup size: 8.2KB",
2017-06-12 11:36:00 -04:00
" repository size: 2.2MB, repository backup size: 347B",
" backup reference list: 20170612-152535F",
2016-09-07 08:29:21 -04:00
"",
2017-06-12 11:36:00 -04:00
" incr backup: 20170612-152535F_20170612-152608I",
" timestamp start/stop: 2017-06-12 15:26:08 / 2017-06-12 15:26:13",
" wal start/stop: 000000030000000000000014 / 000000030000000000000014",
2016-09-07 08:29:21 -04:00
" database size: 31.8MB, backup size: 12.7MB",
" repository size: 3.7MB, repository backup size: 1.5MB",
2017-06-12 11:36:00 -04:00
" backup reference list: 20170612-152535F",
2016-09-07 08:29:21 -04:00
"",
2017-06-12 11:36:00 -04:00
" diff backup: 20170612-152535F_20170612-152624D",
" timestamp start/stop: 2017-06-12 15:26:24 / 2017-06-12 15:26:28",
" wal start/stop: 000000040000000000000017 / 000000040000000000000017",
2016-06-02 11:10:24 -04:00
" database size: 25.7MB, backup size: 6.5MB",
2017-06-12 11:36:00 -04:00
" repository size: 3MB, repository backup size: 793.7KB",
" backup reference list: 20170612-152535F",
2016-06-02 11:10:24 -04:00
"",
2017-06-12 11:36:00 -04:00
" incr backup: 20170612-152535F_20170612-152637I",
" timestamp start/stop: 2017-06-12 15:26:37 / 2017-06-12 15:26:41",
" wal start/stop: 000000050000000000000019 / 000000050000000000000019",
2016-06-02 11:10:24 -04:00
" database size: 25.6MB, backup size: 1.9MB",
v1.12: Page Checksums, Configuration, and Bug Fixes
IMPORTANT NOTE: In prior releases it was possible to specify options on the command-line that were invalid for the current command without getting an error. An error will now be generated for invalid options so it is important to carefully check command-line options in your environment to prevent disruption.
Bug Fixes:
* Fixed an issue where options that were invalid for the specified command could be provided on the command-line without generating an error. The options were ignored and did not cause any change in behavior, but it did lead to some confusion. Invalid options will now generate an error. (Reported by Nikhilchandra Kulkarni.)
* Fixed an issue where internal symlinks were not being created for tablespaces in the repository. This issue was only apparent when trying to bring up clusters in-place manually using filesystem snapshots and did not affect normal backup and restore.
* Fixed an issue that prevented errors from being output to the console before the logging system was initialized, i.e. while parsing options. Error codes were still being returned accurately so this would not have made a process look like it succeeded when it did not. (Reported by Adrian Vondendriesch.)
* Fixed an issue where the db-port option specified on the backup server would not be properly passed to the remote unless it was from the first configured database. (Reported by Michael Vitale.)
Features:
* Added the --checksum-page option to allow pgBackRest to validate page checksums in data files when checksums are enabled on PostgreSQL >= 9.3. Note that this functionality requires a C library which may not initially be available in OS packages. The option will automatically be enabled when the library is present and checksums are enabled on the cluster. (Suggested by Stephen Frost.)
* Added the --repo-link option to allow internal symlinks to be suppressed when the repository is located on a filesystem that does not support symlinks. This does not affect any pgBackRest functionality, but the convenience link latest will not be created and neither will internal tablespace symlinks, which will affect the ability to bring up clusters in-place manually using filesystem snapshots.
* Added the --repo-sync option to allow directory syncs in the repository to be disabled for file systems that do not support them, e.g. NTFS.
* Added a predictable log entry to signal that a command has completed successfully. For example a backup ends successfully with: INFO: backup command end: completed successfully. (Suggested by Jens Wilke.)
Refactoring:
* Abstracted code to determine which database cluster is the master and which are standbys. (Contributed by Cynthia Shang.)
* Improved consistency and flexibility of the protocol layer by using JSON for all messages.
* File copy protocol now accepts a function that can do additional processing on the copy buffers and return a result to the calling process.
* Improved IO->bufferRead to always return requested number of bytes until EOF.
* For simplicity, the pg_control file is now copied with the rest of the files instead of by itself of at the end of the process. The backup command does not require this behavior and the restore copies to a temporary file which is renamed at the end of the restore.
* Simplified the result hash of File->manifest(), Db->tablespaceMapGet(), and Db->databaseMapGet().
* Improved errors returned from child processes by removing redundant error level and code.
* Code cleanup in preparation for improved stanza-create command. (Contributed by Cynthia Shang.)
* Improved parameter/result logging in debug/trace functions.
2016-12-12 19:18:27 -05:00
" repository size: 3MB, repository backup size: 215.3KB",
2017-06-12 11:36:00 -04:00
" backup reference list: 20170612-152535F, 20170612-152535F_20170612-152624D"
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
"cmd" : [
"sudo pg_ctlcluster 9.4 demo stop"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --delta \\",
2017-06-12 11:36:00 -04:00
" --type=time \"--target=2017-06-12 15:26:29.948788+00\" \\",
" --set=20170612-152535F_20170612-152624D restore"
2016-06-02 11:10:24 -04:00
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo rm /var/log/postgresql/postgresql-9.4-demo.log"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo pg_ctlcluster 9.4 demo start"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres sleep 1"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres psql -c \"select * from important_table\""
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"Important Data"
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
" message ",
"----------------",
" Important Data",
"(1 row)"
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres cat /var/log/postgresql/postgresql-9.4-demo.log"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"recovery stopping before|last completed transaction|starting point-in-time recovery"
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-06-12 11:36:00 -04:00
"LOG: database system was interrupted; last known up at 2017-06-12 15:26:25 UTC",
2016-06-02 11:10:24 -04:00
"LOG: creating missing WAL directory \"pg_xlog/archive_status\"",
2017-06-12 11:36:00 -04:00
"LOG: starting point-in-time recovery to 2017-06-12 15:26:29.948788+00",
2016-11-08 10:47:47 +00:00
"LOG: restored log file \"00000004.history\" from archive",
2017-06-12 11:36:00 -04:00
"LOG: restored log file \"000000040000000000000017\" from archive",
" [filtered 2 lines of output]",
2017-03-13 16:54:51 -04:00
"LOG: incomplete startup packet",
2017-06-12 11:36:00 -04:00
"LOG: restored log file \"000000040000000000000018\" from archive",
"LOG: recovery stopping before commit of transaction 686, time 2017-06-12 15:26:30.059103+00",
"LOG: redo done at 0/180157F0",
"LOG: last completed transaction was at log time 2017-06-12 15:26:29.835568+00",
2016-06-02 11:10:24 -04:00
"LOG: restored log file \"00000005.history\" from archive",
2017-03-13 16:54:51 -04:00
"LOG: restored log file \"00000006.history\" from archive",
2017-06-12 11:36:00 -04:00
" [filtered 7 lines of output]"
]
}
},
{
"key" : {
"file" : "/etc/pgbackrest.conf",
"host" : "db-master",
"option" : {
"global" : {
"process-max" : {
"value" : "4"
},
"repo-path" : {
"value" : "/"
},
"repo-s3-bucket" : {
"value" : "demo-bucket"
},
"repo-s3-endpoint" : {
"value" : "s3.amazonaws.com"
},
"repo-s3-key" : {
"value" : "accessKey1"
},
"repo-s3-key-secret" : {
"value" : "verySecretKey1"
},
"repo-s3-region" : {
"value" : "us-east-1"
},
"repo-s3-verify-ssl" : {
"value" : "n"
},
"repo-type" : {
"value" : "s3"
}
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
"db-path=/var/lib/postgresql/9.4/demo",
"",
"[global]",
"process-max=4",
"repo-path=/",
"repo-s3-bucket=demo-bucket",
"repo-s3-endpoint=s3.amazonaws.com",
"repo-s3-key=accessKey1",
"repo-s3-key-secret=verySecretKey1",
"repo-s3-region=us-east-1",
"repo-type=s3",
"retention-diff=2",
"retention-full=2",
"start-fast=y",
"stop-auto=y"
]
}
},
{
"key" : {
"cmd" : [
"aws s3 --no-verify-ssl mb s3://demo-bucket 2>&1"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --log-level-console=info stanza-create"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"completed successfully"
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
"P00 INFO: stanza-create command begin 1.19: --db-path=/var/lib/postgresql/9.4/demo --log-level-console=info --no-log-timestamp --repo-path=/ --repo-s3-bucket=demo-bucket --repo-s3-endpoint=s3.amazonaws.com --repo-s3-region=us-east-1 --no-repo-s3-verify-ssl --repo-type=s3 --stanza=demo",
"P00 INFO: stanza-create command end: completed successfully"
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo \\",
" --log-level-console=info backup"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"no prior backup exists|full backup size"
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
"P00 INFO: backup command begin 1.19: --db-path=/var/lib/postgresql/9.4/demo --log-level-console=info --log-level-stderr=off --no-log-timestamp --process-max=4 --repo-path=/ --repo-s3-bucket=demo-bucket --repo-s3-endpoint=s3.amazonaws.com --repo-s3-region=us-east-1 --no-repo-s3-verify-ssl --repo-type=s3 --retention-diff=2 --retention-full=2 --stanza=demo --start-fast --stop-auto",
"P00 WARN: no prior backup exists, incr backup has been changed to full",
"P00 INFO: execute exclusive pg_start_backup() with label \"pgBackRest backup started at 2017-06-12 15:27:00\": backup begins after the requested immediate checkpoint completes",
"P00 INFO: backup start archive = 000000070000000000000019, lsn = 0/19000028",
" [filtered 998 lines of output]",
"P01 INFO: backup file /var/lib/postgresql/9.4/demo/base/1/11905 (0B, 100%)",
"P03 INFO: backup file /var/lib/postgresql/9.4/demo/base/1/11885 (0B, 100%)",
"P00 INFO: full backup size = 25.6MB",
"P00 INFO: execute exclusive pg_stop_backup() and wait for all WAL segments to archive",
"P00 INFO: backup stop archive = 000000070000000000000019, lsn = 0/19000128",
" [filtered 4 lines of output]"
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
2017-03-02 20:15:14 -05:00
"image" : "pgbackrest/test:u14-backup-doc-pre",
2016-06-02 11:10:24 -04:00
"mount" : "/backrest:/backrest",
"name" : "backup",
"os" : "u14",
2017-04-12 19:17:39 -04:00
"user" : "ubuntu"
2016-06-02 11:10:24 -04:00
},
"type" : "host",
"value" : {
2017-06-12 11:36:00 -04:00
"ip" : "172.17.0.4"
2016-06-02 11:10:24 -04:00
}
},
{
"key" : {
"file" : "/etc/pgbackrest.conf",
"host" : "backup",
"option" : {
"global" : {
"repo-path" : {
"value" : "/var/lib/pgbackrest"
}
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[global]",
"repo-path=/var/lib/pgbackrest"
]
}
},
{
"key" : {
"file" : "/etc/pgbackrest.conf",
"host" : "backup",
"option" : {
"demo" : {
v1.06: Backup from Standby and Bug Fixes
Bug Fixes:
* Fixed an issue where a tablespace link that referenced another link would not produce an error, but instead skip the tablespace entirely. (Reported by Michael Vitale.)
* Fixed an issue where options that should not allow multiple values could be specified multiple times in pgbackrest.conf without an error being raised. (Reported by Michael Vitale.)
* Fixed an issue where the protocol-timeout option was not automatically increased when the db-timeout option was increased. (Reported by Todd Vernick.)
Features:
* Backup from a standby cluster. A connection to the primary cluster is still required to start/stop the backup and copy files that are not replicated, but the vast majority of files are copied from the standby in order to reduce load on the master.
* More flexible configuration for databases. Master and standby can both be configured on the backup server and pgBackRest will automatically determine which is the master. This means no configuration changes for backup are required after failing over from a master to standby when a separate backup server is used.
* Exclude directories during backup that are cleaned, recreated, or zeroed by PostgreSQL at startup. These include pgsql_tmp and pg_stat_tmp. The postgresql.auto.conf.tmp file is now excluded in addition to files that were already excluded: backup_label.old, postmaster.opts, postmaster.pid, recovery.conf, recovery.done.
* Experimental support for non-exclusive backups in PostgreSQL 9.6 beta4. Changes to the control/catalog/WAL versions in subsequent betas may break compatibility but pgBackRest will be updated with each release to keep pace.
Refactoring:
* Simplify protocol creation and identifying which host is local/remote.
* Removed all OP_* function constants that were used only for debugging, not in the protocol, and replaced with __PACKAGE__.
* Improvements in Db module: separated out connect() function, allow executeSql() calls that do not return data, and improve error handling.
* Improve error message for links that reference links in manifest build.
* Added hints to error message when relative paths are detected in archive-push or archive-get.
* Improve backup log messages to indicate which host the files are being copied from.
2016-08-25 11:49:09 -04:00
"db1-host" : {
2016-06-02 11:10:24 -04:00
"value" : "db-master"
},
v1.06: Backup from Standby and Bug Fixes
Bug Fixes:
* Fixed an issue where a tablespace link that referenced another link would not produce an error, but instead skip the tablespace entirely. (Reported by Michael Vitale.)
* Fixed an issue where options that should not allow multiple values could be specified multiple times in pgbackrest.conf without an error being raised. (Reported by Michael Vitale.)
* Fixed an issue where the protocol-timeout option was not automatically increased when the db-timeout option was increased. (Reported by Todd Vernick.)
Features:
* Backup from a standby cluster. A connection to the primary cluster is still required to start/stop the backup and copy files that are not replicated, but the vast majority of files are copied from the standby in order to reduce load on the master.
* More flexible configuration for databases. Master and standby can both be configured on the backup server and pgBackRest will automatically determine which is the master. This means no configuration changes for backup are required after failing over from a master to standby when a separate backup server is used.
* Exclude directories during backup that are cleaned, recreated, or zeroed by PostgreSQL at startup. These include pgsql_tmp and pg_stat_tmp. The postgresql.auto.conf.tmp file is now excluded in addition to files that were already excluded: backup_label.old, postmaster.opts, postmaster.pid, recovery.conf, recovery.done.
* Experimental support for non-exclusive backups in PostgreSQL 9.6 beta4. Changes to the control/catalog/WAL versions in subsequent betas may break compatibility but pgBackRest will be updated with each release to keep pace.
Refactoring:
* Simplify protocol creation and identifying which host is local/remote.
* Removed all OP_* function constants that were used only for debugging, not in the protocol, and replaced with __PACKAGE__.
* Improvements in Db module: separated out connect() function, allow executeSql() calls that do not return data, and improve error handling.
* Improve error message for links that reference links in manifest build.
* Added hints to error message when relative paths are detected in archive-push or archive-get.
* Improve backup log messages to indicate which host the files are being copied from.
2016-08-25 11:49:09 -04:00
"db1-path" : {
2016-06-02 11:10:24 -04:00
"value" : "/var/lib/postgresql/9.4/demo"
2016-07-30 09:42:35 -04:00
},
v1.06: Backup from Standby and Bug Fixes
Bug Fixes:
* Fixed an issue where a tablespace link that referenced another link would not produce an error, but instead skip the tablespace entirely. (Reported by Michael Vitale.)
* Fixed an issue where options that should not allow multiple values could be specified multiple times in pgbackrest.conf without an error being raised. (Reported by Michael Vitale.)
* Fixed an issue where the protocol-timeout option was not automatically increased when the db-timeout option was increased. (Reported by Todd Vernick.)
Features:
* Backup from a standby cluster. A connection to the primary cluster is still required to start/stop the backup and copy files that are not replicated, but the vast majority of files are copied from the standby in order to reduce load on the master.
* More flexible configuration for databases. Master and standby can both be configured on the backup server and pgBackRest will automatically determine which is the master. This means no configuration changes for backup are required after failing over from a master to standby when a separate backup server is used.
* Exclude directories during backup that are cleaned, recreated, or zeroed by PostgreSQL at startup. These include pgsql_tmp and pg_stat_tmp. The postgresql.auto.conf.tmp file is now excluded in addition to files that were already excluded: backup_label.old, postmaster.opts, postmaster.pid, recovery.conf, recovery.done.
* Experimental support for non-exclusive backups in PostgreSQL 9.6 beta4. Changes to the control/catalog/WAL versions in subsequent betas may break compatibility but pgBackRest will be updated with each release to keep pace.
Refactoring:
* Simplify protocol creation and identifying which host is local/remote.
* Removed all OP_* function constants that were used only for debugging, not in the protocol, and replaced with __PACKAGE__.
* Improvements in Db module: separated out connect() function, allow executeSql() calls that do not return data, and improve error handling.
* Improve error message for links that reference links in manifest build.
* Added hints to error message when relative paths are detected in archive-push or archive-get.
* Improve backup log messages to indicate which host the files are being copied from.
2016-08-25 11:49:09 -04:00
"db1-user" : {
2016-07-30 09:42:35 -04:00
"value" : "postgres"
2016-06-02 11:10:24 -04:00
}
},
"global" : {
2016-10-10 17:35:58 -04:00
"log-level-stderr" : {
"value" : "off"
},
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-05 20:23:03 -05:00
"log-timestamp" : {
"value" : "n"
},
v1.12: Page Checksums, Configuration, and Bug Fixes
IMPORTANT NOTE: In prior releases it was possible to specify options on the command-line that were invalid for the current command without getting an error. An error will now be generated for invalid options so it is important to carefully check command-line options in your environment to prevent disruption.
Bug Fixes:
* Fixed an issue where options that were invalid for the specified command could be provided on the command-line without generating an error. The options were ignored and did not cause any change in behavior, but it did lead to some confusion. Invalid options will now generate an error. (Reported by Nikhilchandra Kulkarni.)
* Fixed an issue where internal symlinks were not being created for tablespaces in the repository. This issue was only apparent when trying to bring up clusters in-place manually using filesystem snapshots and did not affect normal backup and restore.
* Fixed an issue that prevented errors from being output to the console before the logging system was initialized, i.e. while parsing options. Error codes were still being returned accurately so this would not have made a process look like it succeeded when it did not. (Reported by Adrian Vondendriesch.)
* Fixed an issue where the db-port option specified on the backup server would not be properly passed to the remote unless it was from the first configured database. (Reported by Michael Vitale.)
Features:
* Added the --checksum-page option to allow pgBackRest to validate page checksums in data files when checksums are enabled on PostgreSQL >= 9.3. Note that this functionality requires a C library which may not initially be available in OS packages. The option will automatically be enabled when the library is present and checksums are enabled on the cluster. (Suggested by Stephen Frost.)
* Added the --repo-link option to allow internal symlinks to be suppressed when the repository is located on a filesystem that does not support symlinks. This does not affect any pgBackRest functionality, but the convenience link latest will not be created and neither will internal tablespace symlinks, which will affect the ability to bring up clusters in-place manually using filesystem snapshots.
* Added the --repo-sync option to allow directory syncs in the repository to be disabled for file systems that do not support them, e.g. NTFS.
* Added a predictable log entry to signal that a command has completed successfully. For example a backup ends successfully with: INFO: backup command end: completed successfully. (Suggested by Jens Wilke.)
Refactoring:
* Abstracted code to determine which database cluster is the master and which are standbys. (Contributed by Cynthia Shang.)
* Improved consistency and flexibility of the protocol layer by using JSON for all messages.
* File copy protocol now accepts a function that can do additional processing on the copy buffers and return a result to the calling process.
* Improved IO->bufferRead to always return requested number of bytes until EOF.
* For simplicity, the pg_control file is now copied with the rest of the files instead of by itself of at the end of the process. The backup command does not require this behavior and the restore copies to a temporary file which is renamed at the end of the restore.
* Simplified the result hash of File->manifest(), Db->tablespaceMapGet(), and Db->databaseMapGet().
* Improved errors returned from child processes by removing redundant error level and code.
* Code cleanup in preparation for improved stanza-create command. (Contributed by Cynthia Shang.)
* Improved parameter/result logging in debug/trace functions.
2016-12-12 19:18:27 -05:00
"retention-full" : {
"value" : "2"
},
2016-06-02 11:10:24 -04:00
"start-fast" : {
"value" : "y"
}
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
v1.06: Backup from Standby and Bug Fixes
Bug Fixes:
* Fixed an issue where a tablespace link that referenced another link would not produce an error, but instead skip the tablespace entirely. (Reported by Michael Vitale.)
* Fixed an issue where options that should not allow multiple values could be specified multiple times in pgbackrest.conf without an error being raised. (Reported by Michael Vitale.)
* Fixed an issue where the protocol-timeout option was not automatically increased when the db-timeout option was increased. (Reported by Todd Vernick.)
Features:
* Backup from a standby cluster. A connection to the primary cluster is still required to start/stop the backup and copy files that are not replicated, but the vast majority of files are copied from the standby in order to reduce load on the master.
* More flexible configuration for databases. Master and standby can both be configured on the backup server and pgBackRest will automatically determine which is the master. This means no configuration changes for backup are required after failing over from a master to standby when a separate backup server is used.
* Exclude directories during backup that are cleaned, recreated, or zeroed by PostgreSQL at startup. These include pgsql_tmp and pg_stat_tmp. The postgresql.auto.conf.tmp file is now excluded in addition to files that were already excluded: backup_label.old, postmaster.opts, postmaster.pid, recovery.conf, recovery.done.
* Experimental support for non-exclusive backups in PostgreSQL 9.6 beta4. Changes to the control/catalog/WAL versions in subsequent betas may break compatibility but pgBackRest will be updated with each release to keep pace.
Refactoring:
* Simplify protocol creation and identifying which host is local/remote.
* Removed all OP_* function constants that were used only for debugging, not in the protocol, and replaced with __PACKAGE__.
* Improvements in Db module: separated out connect() function, allow executeSql() calls that do not return data, and improve error handling.
* Improve error message for links that reference links in manifest build.
* Added hints to error message when relative paths are detected in archive-push or archive-get.
* Improve backup log messages to indicate which host the files are being copied from.
2016-08-25 11:49:09 -04:00
"db1-host=db-master",
"db1-path=/var/lib/postgresql/9.4/demo",
"db1-user=postgres",
2016-06-02 11:10:24 -04:00
"",
"[global]",
"repo-path=/var/lib/pgbackrest",
v1.12: Page Checksums, Configuration, and Bug Fixes
IMPORTANT NOTE: In prior releases it was possible to specify options on the command-line that were invalid for the current command without getting an error. An error will now be generated for invalid options so it is important to carefully check command-line options in your environment to prevent disruption.
Bug Fixes:
* Fixed an issue where options that were invalid for the specified command could be provided on the command-line without generating an error. The options were ignored and did not cause any change in behavior, but it did lead to some confusion. Invalid options will now generate an error. (Reported by Nikhilchandra Kulkarni.)
* Fixed an issue where internal symlinks were not being created for tablespaces in the repository. This issue was only apparent when trying to bring up clusters in-place manually using filesystem snapshots and did not affect normal backup and restore.
* Fixed an issue that prevented errors from being output to the console before the logging system was initialized, i.e. while parsing options. Error codes were still being returned accurately so this would not have made a process look like it succeeded when it did not. (Reported by Adrian Vondendriesch.)
* Fixed an issue where the db-port option specified on the backup server would not be properly passed to the remote unless it was from the first configured database. (Reported by Michael Vitale.)
Features:
* Added the --checksum-page option to allow pgBackRest to validate page checksums in data files when checksums are enabled on PostgreSQL >= 9.3. Note that this functionality requires a C library which may not initially be available in OS packages. The option will automatically be enabled when the library is present and checksums are enabled on the cluster. (Suggested by Stephen Frost.)
* Added the --repo-link option to allow internal symlinks to be suppressed when the repository is located on a filesystem that does not support symlinks. This does not affect any pgBackRest functionality, but the convenience link latest will not be created and neither will internal tablespace symlinks, which will affect the ability to bring up clusters in-place manually using filesystem snapshots.
* Added the --repo-sync option to allow directory syncs in the repository to be disabled for file systems that do not support them, e.g. NTFS.
* Added a predictable log entry to signal that a command has completed successfully. For example a backup ends successfully with: INFO: backup command end: completed successfully. (Suggested by Jens Wilke.)
Refactoring:
* Abstracted code to determine which database cluster is the master and which are standbys. (Contributed by Cynthia Shang.)
* Improved consistency and flexibility of the protocol layer by using JSON for all messages.
* File copy protocol now accepts a function that can do additional processing on the copy buffers and return a result to the calling process.
* Improved IO->bufferRead to always return requested number of bytes until EOF.
* For simplicity, the pg_control file is now copied with the rest of the files instead of by itself of at the end of the process. The backup command does not require this behavior and the restore copies to a temporary file which is renamed at the end of the restore.
* Simplified the result hash of File->manifest(), Db->tablespaceMapGet(), and Db->databaseMapGet().
* Improved errors returned from child processes by removing redundant error level and code.
* Code cleanup in preparation for improved stanza-create command. (Contributed by Cynthia Shang.)
* Improved parameter/result logging in debug/trace functions.
2016-12-12 19:18:27 -05:00
"retention-full=2",
2016-06-02 11:10:24 -04:00
"start-fast=y"
]
}
},
{
"key" : {
"file" : "/etc/pgbackrest.conf",
"host" : "db-master",
"option" : {
"demo" : {
"db-path" : {
"value" : "/var/lib/postgresql/9.4/demo"
}
},
"global" : {
"backup-host" : {
"value" : "backup"
},
2016-07-30 09:42:35 -04:00
"backup-user" : {
"value" : "backrest"
},
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-05 20:23:03 -05:00
"log-level-file" : {
"value" : "detail"
},
2016-10-10 17:35:58 -04:00
"log-level-stderr" : {
"value" : "off"
},
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-05 20:23:03 -05:00
"log-timestamp" : {
"value" : "n"
2016-06-02 11:10:24 -04:00
}
}
},
"reset" : true
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
"db-path=/var/lib/postgresql/9.4/demo",
"",
"[global]",
"backup-host=backup",
2016-07-30 09:42:35 -04:00
"backup-user=backrest",
2017-06-12 11:36:00 -04:00
"log-level-file=detail"
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
"cmd" : [
"sudo find /var/lib/pgbackrest -delete"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-05 20:23:03 -05:00
{
"key" : {
"cmd" : [
"sudo -u backrest pgbackrest --stanza=demo stanza-create"
],
"host" : "backup",
"output" : true
},
"type" : "exe"
},
2016-07-02 10:22:52 -04:00
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo check"
],
"host" : "db-master",
"output" : true
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u backrest pgbackrest --stanza=demo check"
],
"host" : "backup",
"output" : true
},
2016-10-10 17:35:58 -04:00
"type" : "exe"
2016-07-02 10:22:52 -04:00
},
2016-06-02 11:10:24 -04:00
{
"key" : {
"cmd" : [
"sudo -u backrest pgbackrest --stanza=demo backup"
],
"host" : "backup",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2016-09-14 17:36:43 -05:00
"P00 WARN: no prior backup exists, incr backup has been changed to full"
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
"cmd" : [
"sudo pg_ctlcluster 9.4 demo stop"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --delta restore"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo pg_ctlcluster 9.4 demo start"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres sleep 1"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u backrest pgbackrest --stanza=demo backup"
],
"host" : "backup",
"output" : false
},
"type" : "exe"
},
2016-07-02 10:22:52 -04:00
{
"key" : {
"cmd" : [
"sudo mkdir -m 750 /var/spool/pgbackrest"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo chown postgres:postgres /var/spool/pgbackrest"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"file" : "/etc/pgbackrest.conf",
"host" : "db-master",
"option" : {
"global" : {
"archive-async" : {
"value" : "y"
},
"spool-path" : {
"value" : "/var/spool/pgbackrest"
}
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-05 20:23:03 -05:00
},
"global:archive-push" : {
"process-max" : {
"value" : "2"
}
2016-07-02 10:22:52 -04:00
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
"db-path=/var/lib/postgresql/9.4/demo",
"",
"[global]",
"archive-async=y",
"backup-host=backup",
2016-07-30 09:42:35 -04:00
"backup-user=backrest",
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-05 20:23:03 -05:00
"log-level-file=detail",
"spool-path=/var/spool/pgbackrest",
"",
"[global:archive-push]",
"process-max=2"
2016-07-02 10:22:52 -04:00
]
}
},
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-05 20:23:03 -05:00
{
"key" : {
"cmd" : [
"sudo -u postgres rm -f /var/log/pgbackrest/demo-archive-async.log"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres psql -c \" \\",
" select pg_create_restore_point('test async push'); select pg_switch_xlog(); \\",
" select pg_create_restore_point('test async push'); select pg_switch_xlog(); \\",
" select pg_create_restore_point('test async push'); select pg_switch_xlog(); \\",
" select pg_create_restore_point('test async push'); select pg_switch_xlog(); \\",
" select pg_create_restore_point('test async push'); select pg_switch_xlog();\""
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
2016-07-02 10:22:52 -04:00
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --log-level-console=info check"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"WAL segment"
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-06-12 11:36:00 -04:00
"P00 INFO: check command begin 1.19: --backup-host=backup --backup-user=backrest --db-path=/var/lib/postgresql/9.4/demo --log-level-console=info --log-level-file=detail --log-level-stderr=off --no-log-timestamp --stanza=demo",
"P00 INFO: WAL segment 000000080000000000000025 successfully stored in the archive at '/var/lib/pgbackrest/archive/demo/9.4-1/0000000800000000/000000080000000000000025-a4774966a2998586ad1a523e97ab7756d030173b.gz'",
v1.12: Page Checksums, Configuration, and Bug Fixes
IMPORTANT NOTE: In prior releases it was possible to specify options on the command-line that were invalid for the current command without getting an error. An error will now be generated for invalid options so it is important to carefully check command-line options in your environment to prevent disruption.
Bug Fixes:
* Fixed an issue where options that were invalid for the specified command could be provided on the command-line without generating an error. The options were ignored and did not cause any change in behavior, but it did lead to some confusion. Invalid options will now generate an error. (Reported by Nikhilchandra Kulkarni.)
* Fixed an issue where internal symlinks were not being created for tablespaces in the repository. This issue was only apparent when trying to bring up clusters in-place manually using filesystem snapshots and did not affect normal backup and restore.
* Fixed an issue that prevented errors from being output to the console before the logging system was initialized, i.e. while parsing options. Error codes were still being returned accurately so this would not have made a process look like it succeeded when it did not. (Reported by Adrian Vondendriesch.)
* Fixed an issue where the db-port option specified on the backup server would not be properly passed to the remote unless it was from the first configured database. (Reported by Michael Vitale.)
Features:
* Added the --checksum-page option to allow pgBackRest to validate page checksums in data files when checksums are enabled on PostgreSQL >= 9.3. Note that this functionality requires a C library which may not initially be available in OS packages. The option will automatically be enabled when the library is present and checksums are enabled on the cluster. (Suggested by Stephen Frost.)
* Added the --repo-link option to allow internal symlinks to be suppressed when the repository is located on a filesystem that does not support symlinks. This does not affect any pgBackRest functionality, but the convenience link latest will not be created and neither will internal tablespace symlinks, which will affect the ability to bring up clusters in-place manually using filesystem snapshots.
* Added the --repo-sync option to allow directory syncs in the repository to be disabled for file systems that do not support them, e.g. NTFS.
* Added a predictable log entry to signal that a command has completed successfully. For example a backup ends successfully with: INFO: backup command end: completed successfully. (Suggested by Jens Wilke.)
Refactoring:
* Abstracted code to determine which database cluster is the master and which are standbys. (Contributed by Cynthia Shang.)
* Improved consistency and flexibility of the protocol layer by using JSON for all messages.
* File copy protocol now accepts a function that can do additional processing on the copy buffers and return a result to the calling process.
* Improved IO->bufferRead to always return requested number of bytes until EOF.
* For simplicity, the pg_control file is now copied with the rest of the files instead of by itself of at the end of the process. The backup command does not require this behavior and the restore copies to a temporary file which is renamed at the end of the restore.
* Simplified the result hash of File->manifest(), Db->tablespaceMapGet(), and Db->databaseMapGet().
* Improved errors returned from child processes by removing redundant error level and code.
* Code cleanup in preparation for improved stanza-create command. (Contributed by Cynthia Shang.)
* Improved parameter/result logging in debug/trace functions.
2016-12-12 19:18:27 -05:00
"P00 INFO: check command end: completed successfully"
2016-07-02 10:22:52 -04:00
]
}
},
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-05 20:23:03 -05:00
{
"key" : {
"cmd" : [
"sudo -u postgres cat /var/log/pgbackrest/demo-archive-async.log"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
" WAL file\\(s\\) to archive|pushed WAL file 0000000"
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
"-------------------PROCESS START-------------------",
2017-06-12 11:36:00 -04:00
"P00 INFO: archive-push command begin 1.19: --archive-async --backup-host=backup --backup-user=backrest --db-path=/var/lib/postgresql/9.4/demo --log-level-file=detail --log-level-stderr=off --no-log-timestamp --process-max=2 --spool-path=/var/spool/pgbackrest --stanza=demo",
"P00 INFO: push 3 WAL file(s) to archive: 000000080000000000000020...000000080000000000000022",
2017-03-13 16:54:51 -04:00
"P01 DETAIL: pushed WAL file 000000080000000000000020 to archive",
"P02 DETAIL: pushed WAL file 000000080000000000000021 to archive",
2017-06-12 11:36:00 -04:00
"P01 DETAIL: pushed WAL file 000000080000000000000022 to archive",
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-05 20:23:03 -05:00
"P00 INFO: archive-push command end: completed successfully",
"",
"-------------------PROCESS START-------------------",
2017-06-12 11:36:00 -04:00
"P00 INFO: archive-push command begin 1.19: --archive-async --backup-host=backup --backup-user=backrest --db-path=/var/lib/postgresql/9.4/demo --log-level-file=detail --log-level-stderr=off --no-log-timestamp --process-max=2 --spool-path=/var/spool/pgbackrest --stanza=demo",
"P00 INFO: push 3 WAL file(s) to archive: 000000080000000000000023...000000080000000000000025",
"P01 DETAIL: pushed WAL file 000000080000000000000023 to archive",
"P02 DETAIL: pushed WAL file 000000080000000000000024 to archive",
"P01 DETAIL: pushed WAL file 000000080000000000000025 to archive",
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-05 20:23:03 -05:00
"P00 INFO: archive-push command end: completed successfully"
]
}
},
{
"key" : {
"cmd" : [
"sudo lscpu"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"^CPU\\(s\\)\\:"
]
},
"host" : "backup",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
"Architecture: x86_64",
"CPU op-mode(s): 32-bit, 64-bit",
"Byte Order: Little Endian",
"CPU(s): 8",
"On-line CPU(s) list: 0-7",
"Thread(s) per core: 1",
" [filtered 15 lines of output]"
]
}
},
{
"key" : {
"cmd" : [
"sudo -u backrest pgbackrest --stanza=demo --type=full backup"
],
"host" : "backup",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"file" : "/etc/pgbackrest.conf",
"host" : "backup",
"option" : {
"global" : {
"process-max" : {
"value" : "3"
}
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
"db1-host=db-master",
"db1-path=/var/lib/postgresql/9.4/demo",
"db1-user=postgres",
"",
"[global]",
"process-max=3",
"repo-path=/var/lib/pgbackrest",
"retention-full=2",
"start-fast=y"
]
}
},
{
"key" : {
"cmd" : [
"sudo -u backrest pgbackrest --stanza=demo --type=full backup"
],
"host" : "backup",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u backrest pgbackrest info"
],
"highlight" : {
"filter" : false,
"filter-context" : 2,
"list" : [
"timestamp start/stop"
]
},
"host" : "backup",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
"stanza: demo",
" status: ok",
2017-06-12 11:36:00 -04:00
" wal archive min/max: 000000080000000000000026 / 000000080000000000000027",
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-05 20:23:03 -05:00
"",
2017-06-12 11:36:00 -04:00
" full backup: 20170612-152803F",
" timestamp start/stop: 2017-06-12 15:28:03 / 2017-06-12 15:28:11",
" wal start/stop: 000000080000000000000026 / 000000080000000000000026",
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-05 20:23:03 -05:00
" database size: 25.6MB, backup size: 25.6MB",
" repository size: 3MB, repository backup size: 3MB",
"",
2017-06-12 11:36:00 -04:00
" full backup: 20170612-152813F",
" timestamp start/stop: 2017-06-12 15:28:13 / 2017-06-12 15:28:19",
" wal start/stop: 000000080000000000000027 / 000000080000000000000027",
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-05 20:23:03 -05:00
" database size: 25.6MB, backup size: 25.6MB",
" repository size: 3MB, repository backup size: 3MB"
]
}
},
2016-06-02 11:10:24 -04:00
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest stop"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
v1.12: Page Checksums, Configuration, and Bug Fixes
IMPORTANT NOTE: In prior releases it was possible to specify options on the command-line that were invalid for the current command without getting an error. An error will now be generated for invalid options so it is important to carefully check command-line options in your environment to prevent disruption.
Bug Fixes:
* Fixed an issue where options that were invalid for the specified command could be provided on the command-line without generating an error. The options were ignored and did not cause any change in behavior, but it did lead to some confusion. Invalid options will now generate an error. (Reported by Nikhilchandra Kulkarni.)
* Fixed an issue where internal symlinks were not being created for tablespaces in the repository. This issue was only apparent when trying to bring up clusters in-place manually using filesystem snapshots and did not affect normal backup and restore.
* Fixed an issue that prevented errors from being output to the console before the logging system was initialized, i.e. while parsing options. Error codes were still being returned accurately so this would not have made a process look like it succeeded when it did not. (Reported by Adrian Vondendriesch.)
* Fixed an issue where the db-port option specified on the backup server would not be properly passed to the remote unless it was from the first configured database. (Reported by Michael Vitale.)
Features:
* Added the --checksum-page option to allow pgBackRest to validate page checksums in data files when checksums are enabled on PostgreSQL >= 9.3. Note that this functionality requires a C library which may not initially be available in OS packages. The option will automatically be enabled when the library is present and checksums are enabled on the cluster. (Suggested by Stephen Frost.)
* Added the --repo-link option to allow internal symlinks to be suppressed when the repository is located on a filesystem that does not support symlinks. This does not affect any pgBackRest functionality, but the convenience link latest will not be created and neither will internal tablespace symlinks, which will affect the ability to bring up clusters in-place manually using filesystem snapshots.
* Added the --repo-sync option to allow directory syncs in the repository to be disabled for file systems that do not support them, e.g. NTFS.
* Added a predictable log entry to signal that a command has completed successfully. For example a backup ends successfully with: INFO: backup command end: completed successfully. (Suggested by Jens Wilke.)
Refactoring:
* Abstracted code to determine which database cluster is the master and which are standbys. (Contributed by Cynthia Shang.)
* Improved consistency and flexibility of the protocol layer by using JSON for all messages.
* File copy protocol now accepts a function that can do additional processing on the copy buffers and return a result to the calling process.
* Improved IO->bufferRead to always return requested number of bytes until EOF.
* For simplicity, the pg_control file is now copied with the rest of the files instead of by itself of at the end of the process. The backup command does not require this behavior and the restore copies to a temporary file which is renamed at the end of the restore.
* Simplified the result hash of File->manifest(), Db->tablespaceMapGet(), and Db->databaseMapGet().
* Improved errors returned from child processes by removing redundant error level and code.
* Code cleanup in preparation for improved stanza-create command. (Contributed by Cynthia Shang.)
* Improved parameter/result logging in debug/trace functions.
2016-12-12 19:18:27 -05:00
"sudo -u backrest pgbackrest --stanza=demo backup"
2016-06-02 11:10:24 -04:00
],
2017-04-12 19:17:39 -04:00
"err-expect" : "62",
2016-06-02 11:10:24 -04:00
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
2017-06-12 11:36:00 -04:00
"process .* terminated unexpectedly.*: stop file exists for all stanzas"
2016-06-02 11:10:24 -04:00
]
},
v1.12: Page Checksums, Configuration, and Bug Fixes
IMPORTANT NOTE: In prior releases it was possible to specify options on the command-line that were invalid for the current command without getting an error. An error will now be generated for invalid options so it is important to carefully check command-line options in your environment to prevent disruption.
Bug Fixes:
* Fixed an issue where options that were invalid for the specified command could be provided on the command-line without generating an error. The options were ignored and did not cause any change in behavior, but it did lead to some confusion. Invalid options will now generate an error. (Reported by Nikhilchandra Kulkarni.)
* Fixed an issue where internal symlinks were not being created for tablespaces in the repository. This issue was only apparent when trying to bring up clusters in-place manually using filesystem snapshots and did not affect normal backup and restore.
* Fixed an issue that prevented errors from being output to the console before the logging system was initialized, i.e. while parsing options. Error codes were still being returned accurately so this would not have made a process look like it succeeded when it did not. (Reported by Adrian Vondendriesch.)
* Fixed an issue where the db-port option specified on the backup server would not be properly passed to the remote unless it was from the first configured database. (Reported by Michael Vitale.)
Features:
* Added the --checksum-page option to allow pgBackRest to validate page checksums in data files when checksums are enabled on PostgreSQL >= 9.3. Note that this functionality requires a C library which may not initially be available in OS packages. The option will automatically be enabled when the library is present and checksums are enabled on the cluster. (Suggested by Stephen Frost.)
* Added the --repo-link option to allow internal symlinks to be suppressed when the repository is located on a filesystem that does not support symlinks. This does not affect any pgBackRest functionality, but the convenience link latest will not be created and neither will internal tablespace symlinks, which will affect the ability to bring up clusters in-place manually using filesystem snapshots.
* Added the --repo-sync option to allow directory syncs in the repository to be disabled for file systems that do not support them, e.g. NTFS.
* Added a predictable log entry to signal that a command has completed successfully. For example a backup ends successfully with: INFO: backup command end: completed successfully. (Suggested by Jens Wilke.)
Refactoring:
* Abstracted code to determine which database cluster is the master and which are standbys. (Contributed by Cynthia Shang.)
* Improved consistency and flexibility of the protocol layer by using JSON for all messages.
* File copy protocol now accepts a function that can do additional processing on the copy buffers and return a result to the calling process.
* Improved IO->bufferRead to always return requested number of bytes until EOF.
* For simplicity, the pg_control file is now copied with the rest of the files instead of by itself of at the end of the process. The backup command does not require this behavior and the restore copies to a temporary file which is renamed at the end of the restore.
* Simplified the result hash of File->manifest(), Db->tablespaceMapGet(), and Db->databaseMapGet().
* Improved errors returned from child processes by removing redundant error level and code.
* Code cleanup in preparation for improved stanza-create command. (Contributed by Cynthia Shang.)
* Improved parameter/result logging in debug/trace functions.
2016-12-12 19:18:27 -05:00
"host" : "backup",
2016-06-02 11:10:24 -04:00
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-06-12 11:36:00 -04:00
"P00 ERROR: [062]: process 'db-master remote' terminated unexpectedly [062]: stop file exists for all stanzas",
" "
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest stop"
],
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2016-09-14 17:36:43 -05:00
"P00 WARN: stop file already exists for all stanzas"
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest start"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo stop"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
v1.12: Page Checksums, Configuration, and Bug Fixes
IMPORTANT NOTE: In prior releases it was possible to specify options on the command-line that were invalid for the current command without getting an error. An error will now be generated for invalid options so it is important to carefully check command-line options in your environment to prevent disruption.
Bug Fixes:
* Fixed an issue where options that were invalid for the specified command could be provided on the command-line without generating an error. The options were ignored and did not cause any change in behavior, but it did lead to some confusion. Invalid options will now generate an error. (Reported by Nikhilchandra Kulkarni.)
* Fixed an issue where internal symlinks were not being created for tablespaces in the repository. This issue was only apparent when trying to bring up clusters in-place manually using filesystem snapshots and did not affect normal backup and restore.
* Fixed an issue that prevented errors from being output to the console before the logging system was initialized, i.e. while parsing options. Error codes were still being returned accurately so this would not have made a process look like it succeeded when it did not. (Reported by Adrian Vondendriesch.)
* Fixed an issue where the db-port option specified on the backup server would not be properly passed to the remote unless it was from the first configured database. (Reported by Michael Vitale.)
Features:
* Added the --checksum-page option to allow pgBackRest to validate page checksums in data files when checksums are enabled on PostgreSQL >= 9.3. Note that this functionality requires a C library which may not initially be available in OS packages. The option will automatically be enabled when the library is present and checksums are enabled on the cluster. (Suggested by Stephen Frost.)
* Added the --repo-link option to allow internal symlinks to be suppressed when the repository is located on a filesystem that does not support symlinks. This does not affect any pgBackRest functionality, but the convenience link latest will not be created and neither will internal tablespace symlinks, which will affect the ability to bring up clusters in-place manually using filesystem snapshots.
* Added the --repo-sync option to allow directory syncs in the repository to be disabled for file systems that do not support them, e.g. NTFS.
* Added a predictable log entry to signal that a command has completed successfully. For example a backup ends successfully with: INFO: backup command end: completed successfully. (Suggested by Jens Wilke.)
Refactoring:
* Abstracted code to determine which database cluster is the master and which are standbys. (Contributed by Cynthia Shang.)
* Improved consistency and flexibility of the protocol layer by using JSON for all messages.
* File copy protocol now accepts a function that can do additional processing on the copy buffers and return a result to the calling process.
* Improved IO->bufferRead to always return requested number of bytes until EOF.
* For simplicity, the pg_control file is now copied with the rest of the files instead of by itself of at the end of the process. The backup command does not require this behavior and the restore copies to a temporary file which is renamed at the end of the restore.
* Simplified the result hash of File->manifest(), Db->tablespaceMapGet(), and Db->databaseMapGet().
* Improved errors returned from child processes by removing redundant error level and code.
* Code cleanup in preparation for improved stanza-create command. (Contributed by Cynthia Shang.)
* Improved parameter/result logging in debug/trace functions.
2016-12-12 19:18:27 -05:00
"sudo -u backrest pgbackrest --stanza=demo backup"
2016-06-02 11:10:24 -04:00
],
2017-04-12 19:17:39 -04:00
"err-expect" : "62",
2016-06-02 11:10:24 -04:00
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
2017-06-12 11:36:00 -04:00
"process .* terminated unexpectedly.*: stop file exists for stanza demo"
2016-06-02 11:10:24 -04:00
]
},
v1.12: Page Checksums, Configuration, and Bug Fixes
IMPORTANT NOTE: In prior releases it was possible to specify options on the command-line that were invalid for the current command without getting an error. An error will now be generated for invalid options so it is important to carefully check command-line options in your environment to prevent disruption.
Bug Fixes:
* Fixed an issue where options that were invalid for the specified command could be provided on the command-line without generating an error. The options were ignored and did not cause any change in behavior, but it did lead to some confusion. Invalid options will now generate an error. (Reported by Nikhilchandra Kulkarni.)
* Fixed an issue where internal symlinks were not being created for tablespaces in the repository. This issue was only apparent when trying to bring up clusters in-place manually using filesystem snapshots and did not affect normal backup and restore.
* Fixed an issue that prevented errors from being output to the console before the logging system was initialized, i.e. while parsing options. Error codes were still being returned accurately so this would not have made a process look like it succeeded when it did not. (Reported by Adrian Vondendriesch.)
* Fixed an issue where the db-port option specified on the backup server would not be properly passed to the remote unless it was from the first configured database. (Reported by Michael Vitale.)
Features:
* Added the --checksum-page option to allow pgBackRest to validate page checksums in data files when checksums are enabled on PostgreSQL >= 9.3. Note that this functionality requires a C library which may not initially be available in OS packages. The option will automatically be enabled when the library is present and checksums are enabled on the cluster. (Suggested by Stephen Frost.)
* Added the --repo-link option to allow internal symlinks to be suppressed when the repository is located on a filesystem that does not support symlinks. This does not affect any pgBackRest functionality, but the convenience link latest will not be created and neither will internal tablespace symlinks, which will affect the ability to bring up clusters in-place manually using filesystem snapshots.
* Added the --repo-sync option to allow directory syncs in the repository to be disabled for file systems that do not support them, e.g. NTFS.
* Added a predictable log entry to signal that a command has completed successfully. For example a backup ends successfully with: INFO: backup command end: completed successfully. (Suggested by Jens Wilke.)
Refactoring:
* Abstracted code to determine which database cluster is the master and which are standbys. (Contributed by Cynthia Shang.)
* Improved consistency and flexibility of the protocol layer by using JSON for all messages.
* File copy protocol now accepts a function that can do additional processing on the copy buffers and return a result to the calling process.
* Improved IO->bufferRead to always return requested number of bytes until EOF.
* For simplicity, the pg_control file is now copied with the rest of the files instead of by itself of at the end of the process. The backup command does not require this behavior and the restore copies to a temporary file which is renamed at the end of the restore.
* Simplified the result hash of File->manifest(), Db->tablespaceMapGet(), and Db->databaseMapGet().
* Improved errors returned from child processes by removing redundant error level and code.
* Code cleanup in preparation for improved stanza-create command. (Contributed by Cynthia Shang.)
* Improved parameter/result logging in debug/trace functions.
2016-12-12 19:18:27 -05:00
"host" : "backup",
2016-06-02 11:10:24 -04:00
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-06-12 11:36:00 -04:00
"P00 ERROR: [062]: process 'db-master remote' terminated unexpectedly [062]: stop file exists for stanza demo",
" "
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo start"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
2017-06-12 11:36:00 -04:00
"image" : "pgbackrest/test:u14-db-9.4-doc",
2016-06-02 11:10:24 -04:00
"mount" : "/backrest:/backrest",
"name" : "db-standby",
"os" : "u14",
2017-04-12 19:17:39 -04:00
"user" : "ubuntu"
2016-06-02 11:10:24 -04:00
},
"type" : "host",
"value" : {
2017-06-12 11:36:00 -04:00
"ip" : "172.17.0.5"
2016-06-02 11:10:24 -04:00
}
},
{
"key" : {
"file" : "/etc/postgresql/9.4/demo/postgresql.conf",
"host" : "db-standby",
"option" : {
"log_filename" : {
"value" : "'postgresql.log'"
},
"log_line_prefix" : {
"value" : "''"
}
}
},
"type" : "cfg-postgresql",
"value" : {
"config" : [
"log_filename = 'postgresql.log'",
"log_line_prefix = ''"
]
}
},
{
"key" : {
"file" : "/etc/pgbackrest.conf",
"host" : "db-standby",
"option" : {
"demo" : {
"db-path" : {
"value" : "/var/lib/postgresql/9.4/demo"
},
"recovery-option" : {
"value" : "standby_mode=on"
}
},
"global" : {
"backup-host" : {
"value" : "backup"
},
2016-10-10 17:35:58 -04:00
"log-level-stderr" : {
"value" : "off"
},
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-05 20:23:03 -05:00
"log-timestamp" : {
"value" : "n"
2016-06-02 11:10:24 -04:00
}
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
"db-path=/var/lib/postgresql/9.4/demo",
"recovery-option=standby_mode=on",
"",
"[global]",
2017-06-12 11:36:00 -04:00
"backup-host=backup"
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --delta restore"
],
"host" : "db-standby",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres cat /var/lib/postgresql/9.4/demo/recovery.conf"
],
"host" : "db-standby",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
"standby_mode = 'on'",
"restore_command = '/usr/bin/pgbackrest --stanza=demo archive-get %f \"%p\"'"
]
}
},
{
"key" : {
"file" : "/etc/postgresql/9.4/demo/postgresql.conf",
"host" : "db-standby",
"option" : {
"hot_standby" : {
"value" : "on"
}
}
},
"type" : "cfg-postgresql",
"value" : {
"config" : [
"hot_standby = on",
"log_filename = 'postgresql.log'",
"log_line_prefix = ''"
]
}
},
{
"key" : {
"cmd" : [
"sudo rm /var/log/postgresql/postgresql-9.4-demo.log"
],
"host" : "db-standby",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo pg_ctlcluster 9.4 demo start"
],
"host" : "db-standby",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres sleep 1"
],
"host" : "db-standby",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres cat /var/log/postgresql/postgresql-9.4-demo.log"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"entering standby mode|database system is ready to accept read only connections"
]
},
"host" : "db-standby",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-04-12 19:17:39 -04:00
" [filtered 2 lines of output]",
2017-06-12 11:36:00 -04:00
"LOG: database system was interrupted; last known up at 2017-06-12 15:28:14 UTC",
2016-06-02 11:10:24 -04:00
"LOG: creating missing WAL directory \"pg_xlog/archive_status\"",
"LOG: entering standby mode",
2016-11-08 10:47:47 +00:00
"LOG: restored log file \"00000008.history\" from archive",
2016-11-17 09:57:59 -05:00
"LOG: incomplete startup packet",
2017-06-12 11:36:00 -04:00
"LOG: restored log file \"000000080000000000000027\" from archive",
"LOG: redo starts at 0/27000028",
"LOG: consistent recovery state reached at 0/270000F0",
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-05 20:23:03 -05:00
"LOG: database system is ready to accept read only connections"
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres psql -c \" \\",
" begin; \\",
" create table replicated_table (message text); \\",
" insert into replicated_table values ('Important Data'); \\",
" commit; \\",
" select * from replicated_table\";"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"Important Data"
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
" message ",
"----------------",
" Important Data",
"(1 row)"
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres psql -c \"select * from replicated_table;\""
],
"err-expect" : "1",
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"does not exist"
]
},
"host" : "db-standby",
"output" : true
},
2017-04-12 19:17:39 -04:00
"type" : "exe",
"value" : {
"output" : [
"ERROR: relation \"replicated_table\" does not exist",
"LINE 1: select * from replicated_table;",
" ^"
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres psql -c \"select *, current_timestamp from pg_switch_xlog()\";"
],
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
" pg_switch_xlog | now ",
"----------------+-------------------------------",
2017-06-12 11:36:00 -04:00
" 0/280199E0 | 2017-06-12 15:28:46.810546+00",
2017-04-12 19:17:39 -04:00
"(1 row)"
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres psql -c \" \\",
" select *, current_timestamp from replicated_table\""
],
"highlight" : {
"filter" : false,
"filter-context" : 2,
"list" : [
"Important Data"
]
},
"host" : "db-standby",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
" message | now ",
"----------------+-------------------------------",
2017-06-12 11:36:00 -04:00
" Important Data | 2017-06-12 15:28:50.084987+00",
2017-04-12 19:17:39 -04:00
"(1 row)"
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --log-level-console=info check"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"all other checks passed"
]
},
"host" : "db-standby",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-06-12 11:36:00 -04:00
"P00 INFO: check command begin 1.19: --backup-host=backup --db-path=/var/lib/postgresql/9.4/demo --log-level-console=info --log-level-stderr=off --no-log-timestamp --stanza=demo",
2017-04-12 19:17:39 -04:00
"P00 INFO: switch xlog cannot be performed on the standby, all other checks passed successfully",
"P00 INFO: check command end: completed successfully"
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres psql -c \" \\",
" create user replicator password 'jw8s0F4' replication\";"
],
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
"CREATE ROLE"
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres sh -c 'echo \\",
2017-06-12 11:36:00 -04:00
" \"host replication replicator 172.17.0.5/32 md5\" \\",
2017-04-12 19:17:39 -04:00
" >> /etc/postgresql/9.4/demo/pg_hba.conf'"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo pg_ctlcluster 9.4 demo reload"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"file" : "/etc/pgbackrest.conf",
"host" : "db-standby",
"option" : {
"demo" : {
"recovery-option" : {
2017-06-12 11:36:00 -04:00
"value" : "primary_conninfo=host=172.17.0.3 port=5432 user=replicator"
2017-04-12 19:17:39 -04:00
}
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
"db-path=/var/lib/postgresql/9.4/demo",
"recovery-option=standby_mode=on",
2017-06-12 11:36:00 -04:00
"recovery-option=primary_conninfo=host=172.17.0.3 port=5432 user=replicator",
2017-04-12 19:17:39 -04:00
"",
"[global]",
2017-06-12 11:36:00 -04:00
"backup-host=backup"
2017-04-12 19:17:39 -04:00
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres sh -c 'echo \\",
2017-06-12 11:36:00 -04:00
" \"172.17.0.3:*:replication:replicator:jw8s0F4\" \\",
2017-04-12 19:17:39 -04:00
" >> /home/postgres/.pgpass'"
],
"host" : "db-standby",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres chmod 600 /home/postgres/.pgpass"
],
"host" : "db-standby",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo pg_ctlcluster 9.4 demo stop"
],
"host" : "db-standby",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres pgbackrest --stanza=demo --delta restore"
],
"host" : "db-standby",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres cat /var/lib/postgresql/9.4/demo/recovery.conf"
],
"host" : "db-standby",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-06-12 11:36:00 -04:00
"primary_conninfo = 'host=172.17.0.3 port=5432 user=replicator'",
2017-04-12 19:17:39 -04:00
"standby_mode = 'on'",
"restore_command = '/usr/bin/pgbackrest --stanza=demo archive-get %f \"%p\"'"
]
}
},
{
"key" : {
"cmd" : [
"sudo rm /var/log/postgresql/postgresql-9.4-demo.log"
],
"host" : "db-standby",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo pg_ctlcluster 9.4 demo start"
],
"host" : "db-standby",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres sleep 1"
],
"host" : "db-standby",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres cat /var/log/postgresql/postgresql-9.4-demo.log"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"started streaming WAL from primary"
]
},
"host" : "db-standby",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
" [filtered 10 lines of output]",
"LOG: database system is ready to accept read only connections",
2017-06-12 11:36:00 -04:00
"LOG: restored log file \"000000080000000000000028\" from archive",
"LOG: started streaming WAL from primary at 0/29000000 on timeline 8"
2017-04-12 19:17:39 -04:00
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres psql -c \" \\",
" begin; \\",
" create table stream_table (message text); \\",
" insert into stream_table values ('Important Data'); \\",
" commit; \\",
" select *, current_timestamp from stream_table\";"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"Important Data"
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
" message | now ",
"----------------+-------------------------------",
2017-06-12 11:36:00 -04:00
" Important Data | 2017-06-12 15:28:59.595297+00",
2017-04-12 19:17:39 -04:00
"(1 row)"
]
}
},
{
"key" : {
"cmd" : [
"sudo -u postgres psql -c \" \\",
" select *, current_timestamp from stream_table\""
],
"highlight" : {
"filter" : false,
"filter-context" : 2,
"list" : [
"Important Data"
]
},
"host" : "db-standby",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
" message | now ",
"----------------+-------------------------------",
2017-06-12 11:36:00 -04:00
" Important Data | 2017-06-12 15:28:59.735448+00",
2017-04-12 19:17:39 -04:00
"(1 row)"
]
}
},
{
"key" : {
"file" : "/etc/pgbackrest.conf",
"host" : "backup",
"option" : {
"demo" : {
"db2-host" : {
"value" : "db-standby"
},
"db2-path" : {
"value" : "/var/lib/postgresql/9.4/demo"
},
"db2-user" : {
"value" : "postgres"
}
},
"global" : {
"backup-standby" : {
"value" : "y"
}
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
"db1-host=db-master",
"db1-path=/var/lib/postgresql/9.4/demo",
"db1-user=postgres",
"db2-host=db-standby",
"db2-path=/var/lib/postgresql/9.4/demo",
"db2-user=postgres",
"",
"[global]",
"backup-standby=y",
"process-max=3",
"repo-path=/var/lib/pgbackrest",
"retention-full=2",
"start-fast=y"
]
}
},
{
"key" : {
"cmd" : [
"sudo -u backrest pgbackrest --stanza=demo --log-level-console=detail backup"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"backup file db-master|replay on the standby"
]
},
"host" : "backup",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
" [filtered 2 lines of output]",
2017-06-12 11:36:00 -04:00
"P00 INFO: execute exclusive pg_start_backup() with label \"pgBackRest backup started at 2017-06-12 15:29:00\": backup begins after the requested immediate checkpoint completes",
"P00 INFO: backup start archive = 00000008000000000000002A, lsn = 0/2A000028",
"P00 INFO: wait for replay on the standby to reach 0/2A000028",
"P00 INFO: replay on the standby reached 0/2A0000C8",
"P01 INFO: backup file db-master:/var/lib/postgresql/9.4/demo/global/pg_control (8KB, 0%) checksum 852e30af793817f0366117297723ac7cd4378025",
"P01 INFO: backup file db-master:/var/lib/postgresql/9.4/demo/backup_label (238B, 0%) checksum 5d03055571cb09a0cb66420611cee388f3ecb618",
"P03 INFO: backup file db-standby:/var/lib/postgresql/9.4/demo/base/12139/11889 (344KB, 18%) checksum 74a36286869d638ebdcb83222500f13bb8dcd84c",
"P02 INFO: backup file db-standby:/var/lib/postgresql/9.4/demo/base/12139/12007 (392KB, 38%) checksum f564034faaa6f8df65c98672d2840bc5d17d091a",
2017-04-12 19:17:39 -04:00
" [filtered 35 lines of output]"
]
}
},
{
"key" : {
"cmd" : [
"sudo apt-get install postgresql-9.5"
],
"cmd-extra" : "-y",
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo pg_dropcluster 9.5 main"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres /usr/lib/postgresql/9.5/bin/initdb \\",
" -D /var/lib/postgresql/9.5/demo -k -A peer"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo pg_createcluster 9.5 demo"
],
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
"Configuring already existing cluster (configuration: /etc/postgresql/9.5/demo, data: /var/lib/postgresql/9.5/demo, owner: 5000:5000)",
2017-06-12 11:36:00 -04:00
"Ver Cluster Port Status Owner Data directory Log file",
"9.5 demo 5433 down postgres /var/lib/postgresql/9.5/demo /var/log/postgresql/postgresql-9.5-demo.log"
2017-04-12 19:17:39 -04:00
]
}
},
{
"key" : {
"cmd" : [
"sudo pg_ctlcluster 9.4 demo stop"
],
"host" : "db-standby",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo apt-get install postgresql-9.5"
],
"cmd-extra" : "-y",
"host" : "db-standby",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo pg_dropcluster 9.5 main"
],
"host" : "db-standby",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo pg_ctlcluster 9.4 demo stop"
],
"host" : "db-master",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
"sudo -u postgres sh -c 'cd /var/lib/postgresql && \\",
" /usr/lib/postgresql/9.5/bin/pg_upgrade \\",
" --old-bindir=/usr/lib/postgresql/9.4/bin \\",
" --new-bindir=/usr/lib/postgresql/9.5/bin \\",
" --old-datadir=/var/lib/postgresql/9.4/demo \\",
" --new-datadir=/var/lib/postgresql/9.5/demo \\",
" --old-options=\" -c config_file=/etc/postgresql/9.4/demo/postgresql.conf\" \\",
" --new-options=\" -c config_file=/etc/postgresql/9.5/demo/postgresql.conf\"'"
],
"highlight" : {
"filter" : true,
"filter-context" : 2,
"list" : [
"Upgrade Complete"
]
},
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
" [filtered 68 lines of output]",
"Creating script to delete old cluster ok",
"",
"Upgrade Complete",
"----------------",
"Optimizer statistics are not transferred by pg_upgrade so,",
" [filtered 4 lines of output]"
]
}
},
{
"key" : {
"file" : "/etc/postgresql/9.5/demo/postgresql.conf",
"host" : "db-master",
"option" : {
"archive_command" : {
"value" : "'pgbackrest --stanza=demo archive-push %p'"
},
"archive_mode" : {
"value" : "on"
},
"listen_addresses" : {
"value" : "'*'"
},
"log_line_prefix" : {
"value" : "''"
},
"max_wal_senders" : {
"value" : "3"
},
"port" : {
"value" : "5432"
},
"wal_level" : {
"value" : "hot_standby"
}
}
},
"type" : "cfg-postgresql",
"value" : {
"config" : [
"archive_command = 'pgbackrest --stanza=demo archive-push %p'",
"archive_mode = on",
"listen_addresses = '*'",
"log_line_prefix = ''",
"max_wal_senders = 3",
"port = 5432",
"wal_level = hot_standby"
]
}
},
{
"key" : {
"file" : "/etc/pgbackrest.conf",
"host" : "db-master",
"option" : {
"demo" : {
"db-path" : {
"value" : "/var/lib/postgresql/9.5/demo"
}
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
"db-path=/var/lib/postgresql/9.5/demo",
"",
"[global]",
"archive-async=y",
"backup-host=backup",
"backup-user=backrest",
"log-level-file=detail",
"spool-path=/var/spool/pgbackrest",
"",
"[global:archive-push]",
"process-max=2"
]
}
},
{
"key" : {
"file" : "/etc/pgbackrest.conf",
"host" : "db-standby",
"option" : {
"demo" : {
"db-path" : {
"value" : "/var/lib/postgresql/9.5/demo"
}
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
"db-path=/var/lib/postgresql/9.5/demo",
"recovery-option=standby_mode=on",
2017-06-12 11:36:00 -04:00
"recovery-option=primary_conninfo=host=172.17.0.3 port=5432 user=replicator",
2017-04-12 19:17:39 -04:00
"",
"[global]",
2017-06-12 11:36:00 -04:00
"backup-host=backup"
2017-04-12 19:17:39 -04:00
]
}
},
{
"key" : {
"file" : "/etc/pgbackrest.conf",
"host" : "backup",
"option" : {
"demo" : {
"db1-path" : {
"value" : "/var/lib/postgresql/9.5/demo"
},
"db2-path" : {
"value" : "/var/lib/postgresql/9.5/demo"
}
},
"global" : {
"backup-standby" : {
"value" : "n"
}
}
}
},
"type" : "cfg-pgbackrest",
2016-06-02 11:10:24 -04:00
"value" : {
2017-04-12 19:17:39 -04:00
"config" : [
"[demo]",
"db1-host=db-master",
"db1-path=/var/lib/postgresql/9.5/demo",
"db1-user=postgres",
"db2-host=db-standby",
"db2-path=/var/lib/postgresql/9.5/demo",
"db2-user=postgres",
"",
"[global]",
"backup-standby=n",
"process-max=3",
"repo-path=/var/lib/pgbackrest",
"retention-full=2",
"start-fast=y"
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo cp /etc/postgresql/9.4/demo/pg_hba.conf \\",
" /etc/postgresql/9.5/demo/pg_hba.conf"
2016-06-02 11:10:24 -04:00
],
"host" : "db-master",
2017-04-12 19:17:39 -04:00
"output" : false
2016-06-02 11:10:24 -04:00
},
2017-04-12 19:17:39 -04:00
"type" : "exe"
2016-06-02 11:10:24 -04:00
},
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo -u backrest pgbackrest --stanza=demo --no-online \\",
" --log-level-console=info stanza-upgrade"
2016-06-02 11:10:24 -04:00
],
"highlight" : {
2017-04-12 19:17:39 -04:00
"filter" : true,
2016-06-02 11:10:24 -04:00
"filter-context" : 2,
"list" : [
2017-04-12 19:17:39 -04:00
"completed successfully"
2016-06-02 11:10:24 -04:00
]
},
2017-04-12 19:17:39 -04:00
"host" : "backup",
2016-06-02 11:10:24 -04:00
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-06-12 11:36:00 -04:00
"2017-06-12 15:30:20.788 P00 INFO: stanza-upgrade command begin 1.19: --no-backup-standby --db-host=db-master --db-path=/var/lib/postgresql/9.5/demo --db-user=postgres --db2-host=db-standby --db2-path=/var/lib/postgresql/9.5/demo --db2-user=postgres --log-level-console=info --no-online --repo-path=/var/lib/pgbackrest --stanza=demo",
"2017-06-12 15:30:21.485 P00 INFO: stanza-upgrade command end: completed successfully"
2016-06-02 11:10:24 -04:00
]
}
},
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-05 20:23:03 -05:00
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo pg_ctlcluster 9.5 demo start"
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-05 20:23:03 -05:00
],
2017-04-12 19:17:39 -04:00
"host" : "db-master",
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-05 20:23:03 -05:00
"output" : true
},
2017-04-12 19:17:39 -04:00
"type" : "exe"
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-05 20:23:03 -05:00
},
2016-06-02 11:10:24 -04:00
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo -u postgres pg_lsclusters"
2016-06-02 11:10:24 -04:00
],
"host" : "db-master",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-04-12 19:17:39 -04:00
"Ver Cluster Port Status Owner Data directory Log file",
"9.4 demo 5432 down postgres /var/lib/postgresql/9.4/demo /var/log/postgresql/postgresql-9.4-demo.log",
"9.5 demo 5432 online postgres /var/lib/postgresql/9.5/demo /var/log/postgresql/postgresql-9.5-demo.log"
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo -u postgres pgbackrest --stanza=demo check"
2016-06-02 11:10:24 -04:00
],
"host" : "db-master",
2017-04-12 19:17:39 -04:00
"output" : true
2016-06-02 11:10:24 -04:00
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo -u backrest pgbackrest --stanza=demo check"
2016-06-02 11:10:24 -04:00
],
2017-04-12 19:17:39 -04:00
"host" : "backup",
"output" : true
2016-06-02 11:10:24 -04:00
},
2017-04-12 19:17:39 -04:00
"type" : "exe",
2016-06-02 11:10:24 -04:00
"value" : {
2017-04-12 19:17:39 -04:00
"output" : [
2017-06-12 11:36:00 -04:00
"P00 WARN: [056]: raised on 'db-standby remote' host: could not connect to server: No such file or directory",
2017-04-12 19:17:39 -04:00
" \tIs the server running locally and accepting",
" \tconnections on Unix domain socket \"/var/run/postgresql/.s.PGSQL.5432\"?"
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo pg_dropcluster 9.4 demo"
2016-06-02 11:10:24 -04:00
],
2017-04-12 19:17:39 -04:00
"host" : "db-master",
2016-06-02 11:10:24 -04:00
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo -u backrest pgbackrest --stanza=demo --type=full backup"
2016-06-02 11:10:24 -04:00
],
2017-04-12 19:17:39 -04:00
"host" : "backup",
2016-06-02 11:10:24 -04:00
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo pg_dropcluster 9.4 demo"
2016-06-02 11:10:24 -04:00
],
"host" : "db-standby",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo -u postgres /usr/lib/postgresql/9.5/bin/initdb \\",
" -D /var/lib/postgresql/9.5/demo -k -A peer"
2016-06-02 11:10:24 -04:00
],
"host" : "db-standby",
"output" : false
},
"type" : "exe"
},
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo pg_createcluster 9.5 demo"
2016-06-02 11:10:24 -04:00
],
"host" : "db-standby",
"output" : true
},
"type" : "exe",
"value" : {
"output" : [
2017-04-12 19:17:39 -04:00
"Configuring already existing cluster (configuration: /etc/postgresql/9.5/demo, data: /var/lib/postgresql/9.5/demo, owner: 5000:5000)",
2017-06-12 11:36:00 -04:00
"Ver Cluster Port Status Owner Data directory Log file",
"9.5 demo 5432 down postgres /var/lib/postgresql/9.5/demo /var/log/postgresql/postgresql-9.5-demo.log"
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo -u postgres pgbackrest --stanza=demo --delta restore"
2016-06-02 11:10:24 -04:00
],
"host" : "db-standby",
"output" : false
},
"type" : "exe"
},
{
"key" : {
2017-04-12 19:17:39 -04:00
"file" : "/etc/postgresql/9.5/demo/postgresql.conf",
2016-06-02 11:10:24 -04:00
"host" : "db-standby",
2017-04-12 19:17:39 -04:00
"option" : {
"hot_standby" : {
"value" : "on"
}
}
2016-06-02 11:10:24 -04:00
},
2017-04-12 19:17:39 -04:00
"type" : "cfg-postgresql",
2016-06-02 11:10:24 -04:00
"value" : {
2017-04-12 19:17:39 -04:00
"config" : [
"hot_standby = on"
2016-06-02 11:10:24 -04:00
]
}
},
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo pg_ctlcluster 9.5 demo start"
2016-06-02 11:10:24 -04:00
],
2017-04-12 19:17:39 -04:00
"host" : "db-standby",
"output" : false
2016-06-02 11:10:24 -04:00
},
2017-04-12 19:17:39 -04:00
"type" : "exe"
2016-06-02 11:10:24 -04:00
},
{
"key" : {
"cmd" : [
2017-04-12 19:17:39 -04:00
"sudo -u postgres sleep 1"
2016-06-02 11:10:24 -04:00
],
"host" : "db-standby",
2017-04-12 19:17:39 -04:00
"output" : false
2016-06-02 11:10:24 -04:00
},
2017-04-12 19:17:39 -04:00
"type" : "exe"
v1.06: Backup from Standby and Bug Fixes
Bug Fixes:
* Fixed an issue where a tablespace link that referenced another link would not produce an error, but instead skip the tablespace entirely. (Reported by Michael Vitale.)
* Fixed an issue where options that should not allow multiple values could be specified multiple times in pgbackrest.conf without an error being raised. (Reported by Michael Vitale.)
* Fixed an issue where the protocol-timeout option was not automatically increased when the db-timeout option was increased. (Reported by Todd Vernick.)
Features:
* Backup from a standby cluster. A connection to the primary cluster is still required to start/stop the backup and copy files that are not replicated, but the vast majority of files are copied from the standby in order to reduce load on the master.
* More flexible configuration for databases. Master and standby can both be configured on the backup server and pgBackRest will automatically determine which is the master. This means no configuration changes for backup are required after failing over from a master to standby when a separate backup server is used.
* Exclude directories during backup that are cleaned, recreated, or zeroed by PostgreSQL at startup. These include pgsql_tmp and pg_stat_tmp. The postgresql.auto.conf.tmp file is now excluded in addition to files that were already excluded: backup_label.old, postmaster.opts, postmaster.pid, recovery.conf, recovery.done.
* Experimental support for non-exclusive backups in PostgreSQL 9.6 beta4. Changes to the control/catalog/WAL versions in subsequent betas may break compatibility but pgBackRest will be updated with each release to keep pace.
Refactoring:
* Simplify protocol creation and identifying which host is local/remote.
* Removed all OP_* function constants that were used only for debugging, not in the protocol, and replaced with __PACKAGE__.
* Improvements in Db module: separated out connect() function, allow executeSql() calls that do not return data, and improve error handling.
* Improve error message for links that reference links in manifest build.
* Added hints to error message when relative paths are detected in archive-push or archive-get.
* Improve backup log messages to indicate which host the files are being copied from.
2016-08-25 11:49:09 -04:00
},
{
"key" : {
"file" : "/etc/pgbackrest.conf",
"host" : "backup",
"option" : {
"global" : {
"backup-standby" : {
"value" : "y"
}
}
}
},
"type" : "cfg-pgbackrest",
"value" : {
"config" : [
"[demo]",
"db1-host=db-master",
2017-04-12 19:17:39 -04:00
"db1-path=/var/lib/postgresql/9.5/demo",
v1.06: Backup from Standby and Bug Fixes
Bug Fixes:
* Fixed an issue where a tablespace link that referenced another link would not produce an error, but instead skip the tablespace entirely. (Reported by Michael Vitale.)
* Fixed an issue where options that should not allow multiple values could be specified multiple times in pgbackrest.conf without an error being raised. (Reported by Michael Vitale.)
* Fixed an issue where the protocol-timeout option was not automatically increased when the db-timeout option was increased. (Reported by Todd Vernick.)
Features:
* Backup from a standby cluster. A connection to the primary cluster is still required to start/stop the backup and copy files that are not replicated, but the vast majority of files are copied from the standby in order to reduce load on the master.
* More flexible configuration for databases. Master and standby can both be configured on the backup server and pgBackRest will automatically determine which is the master. This means no configuration changes for backup are required after failing over from a master to standby when a separate backup server is used.
* Exclude directories during backup that are cleaned, recreated, or zeroed by PostgreSQL at startup. These include pgsql_tmp and pg_stat_tmp. The postgresql.auto.conf.tmp file is now excluded in addition to files that were already excluded: backup_label.old, postmaster.opts, postmaster.pid, recovery.conf, recovery.done.
* Experimental support for non-exclusive backups in PostgreSQL 9.6 beta4. Changes to the control/catalog/WAL versions in subsequent betas may break compatibility but pgBackRest will be updated with each release to keep pace.
Refactoring:
* Simplify protocol creation and identifying which host is local/remote.
* Removed all OP_* function constants that were used only for debugging, not in the protocol, and replaced with __PACKAGE__.
* Improvements in Db module: separated out connect() function, allow executeSql() calls that do not return data, and improve error handling.
* Improve error message for links that reference links in manifest build.
* Added hints to error message when relative paths are detected in archive-push or archive-get.
* Improve backup log messages to indicate which host the files are being copied from.
2016-08-25 11:49:09 -04:00
"db1-user=postgres",
"db2-host=db-standby",
2017-04-12 19:17:39 -04:00
"db2-path=/var/lib/postgresql/9.5/demo",
v1.06: Backup from Standby and Bug Fixes
Bug Fixes:
* Fixed an issue where a tablespace link that referenced another link would not produce an error, but instead skip the tablespace entirely. (Reported by Michael Vitale.)
* Fixed an issue where options that should not allow multiple values could be specified multiple times in pgbackrest.conf without an error being raised. (Reported by Michael Vitale.)
* Fixed an issue where the protocol-timeout option was not automatically increased when the db-timeout option was increased. (Reported by Todd Vernick.)
Features:
* Backup from a standby cluster. A connection to the primary cluster is still required to start/stop the backup and copy files that are not replicated, but the vast majority of files are copied from the standby in order to reduce load on the master.
* More flexible configuration for databases. Master and standby can both be configured on the backup server and pgBackRest will automatically determine which is the master. This means no configuration changes for backup are required after failing over from a master to standby when a separate backup server is used.
* Exclude directories during backup that are cleaned, recreated, or zeroed by PostgreSQL at startup. These include pgsql_tmp and pg_stat_tmp. The postgresql.auto.conf.tmp file is now excluded in addition to files that were already excluded: backup_label.old, postmaster.opts, postmaster.pid, recovery.conf, recovery.done.
* Experimental support for non-exclusive backups in PostgreSQL 9.6 beta4. Changes to the control/catalog/WAL versions in subsequent betas may break compatibility but pgBackRest will be updated with each release to keep pace.
Refactoring:
* Simplify protocol creation and identifying which host is local/remote.
* Removed all OP_* function constants that were used only for debugging, not in the protocol, and replaced with __PACKAGE__.
* Improvements in Db module: separated out connect() function, allow executeSql() calls that do not return data, and improve error handling.
* Improve error message for links that reference links in manifest build.
* Added hints to error message when relative paths are detected in archive-push or archive-get.
* Improve backup log messages to indicate which host the files are being copied from.
2016-08-25 11:49:09 -04:00
"db2-user=postgres",
"",
"[global]",
"backup-standby=y",
v1.13: Parallel Archiving, Stanza Create, Improved Info and Check
IMPORTANT NOTE: The new implementation of asynchronous archiving no longer copies WAL to a separate queue. If there is any WAL left over in the old queue after upgrading to 1.13, it will be abandoned and not pushed to the repository.
To prevent this outcome, stop archiving by setting archive_command = false. Next, drain the async queue by running pgbackrest --stanza=[stanza-name] archive-push and wait for the process to complete. Check that the queue in [spool-path]/archive/[stanza-name]/out is empty. Finally, install 1.13 and restore the original archive_command.
IMPORTANT NOTE: The stanza-create command is not longer optional and must be executed before backup or archiving can be performed on a new stanza. Pre-existing stanzas do not require stanza-create to be executed.
Bug Fixes:
* Fixed const assignment giving compiler warning in C library. (Fixed by Adrian Vondendriesch.)
* Fixed a few directory syncs that were missed for the --repo-sync option.
* Fixed an issue where a missing user/group on restore could cause an "uninitialized value" error in File->owner(). (Reported by Leonardo Avellar.)
* Fixed an issue where protocol mismatch errors did not output the expected value.
* Fixed a spurious archive-get log message that indicated an exit code of 1 was an abnormal termination.
Features:
* Improved, multi-process implementation of asynchronous archiving.
* Improved stanza-create command so that it can repair broken repositories in most cases and is robust enough to be made mandatory. (Contributed by Cynthia Shang.)
* Improved check command to run on a standby, though only basic checks are done because pg_switch_xlog() cannot be executed on a replica. (Contributed by Cynthia Shang.)
* Added archive and backup WAL ranges to the info command.
* Added warning to update pg_tablespace.spclocation when remapping tablespaces in PostgreSQL < 9.2. (Contributed by blogh.)
* Remove remote lock requirements for the archive-get, restore, info, and check commands since they are read-only operations. (Suggested by Michael Vitale.)
Refactoring:
* Refactor File and BackupCommon modules to improve test coverage.
* Return proper error code when unable to convert a relative path to an absolute path. (Suggested by Yogesh Sharma.)
* Log file banner is not output until the first log entry is written. (Suggested by Jens Wilke.)
* Moved File->manifest() into the FileCommon.pm module.
* Moved the Archive modules to the Archive directory and split the archive-get and archive-push commands into separate modules.
* Split the check command out of the Archive.pm module.
* Allow logging to be suppressed via logDisable() and logEnable().
* Allow for locks to be taken more than once in the same process without error.
* Lock directories can be created when more than one directory level is required.
* Clean up optionValid()/optionTest() logic in Lock.pm.
* Added Exception::exceptionCode() and Exception::exceptionMessage() to simplify error handling logic.
* Represent .gz extension with a constant.
* Allow empty files to be created with FileCommon::fileStringWrite() and use temp files to avoid partial reads.
* Refactor process IO and process master/minion code out from the common protocol code.
* Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
* Remove Intel-specific optimization from C library build flags. (Contributed by Adrian Vondendriesch.)
* Removed --lock option. This option was introduced before the lock directory could be located outside the repository and is now obsolete.
* Added --log-timestamp option to allow timestamps to be suppressed in logging. This is primarily used to avoid filters in the automated documentation.
* Fixed alignment issues with multiline logging.
2017-02-05 20:23:03 -05:00
"process-max=3",
v1.06: Backup from Standby and Bug Fixes
Bug Fixes:
* Fixed an issue where a tablespace link that referenced another link would not produce an error, but instead skip the tablespace entirely. (Reported by Michael Vitale.)
* Fixed an issue where options that should not allow multiple values could be specified multiple times in pgbackrest.conf without an error being raised. (Reported by Michael Vitale.)
* Fixed an issue where the protocol-timeout option was not automatically increased when the db-timeout option was increased. (Reported by Todd Vernick.)
Features:
* Backup from a standby cluster. A connection to the primary cluster is still required to start/stop the backup and copy files that are not replicated, but the vast majority of files are copied from the standby in order to reduce load on the master.
* More flexible configuration for databases. Master and standby can both be configured on the backup server and pgBackRest will automatically determine which is the master. This means no configuration changes for backup are required after failing over from a master to standby when a separate backup server is used.
* Exclude directories during backup that are cleaned, recreated, or zeroed by PostgreSQL at startup. These include pgsql_tmp and pg_stat_tmp. The postgresql.auto.conf.tmp file is now excluded in addition to files that were already excluded: backup_label.old, postmaster.opts, postmaster.pid, recovery.conf, recovery.done.
* Experimental support for non-exclusive backups in PostgreSQL 9.6 beta4. Changes to the control/catalog/WAL versions in subsequent betas may break compatibility but pgBackRest will be updated with each release to keep pace.
Refactoring:
* Simplify protocol creation and identifying which host is local/remote.
* Removed all OP_* function constants that were used only for debugging, not in the protocol, and replaced with __PACKAGE__.
* Improvements in Db module: separated out connect() function, allow executeSql() calls that do not return data, and improve error handling.
* Improve error message for links that reference links in manifest build.
* Added hints to error message when relative paths are detected in archive-push or archive-get.
* Improve backup log messages to indicate which host the files are being copied from.
2016-08-25 11:49:09 -04:00
"repo-path=/var/lib/pgbackrest",
v1.12: Page Checksums, Configuration, and Bug Fixes
IMPORTANT NOTE: In prior releases it was possible to specify options on the command-line that were invalid for the current command without getting an error. An error will now be generated for invalid options so it is important to carefully check command-line options in your environment to prevent disruption.
Bug Fixes:
* Fixed an issue where options that were invalid for the specified command could be provided on the command-line without generating an error. The options were ignored and did not cause any change in behavior, but it did lead to some confusion. Invalid options will now generate an error. (Reported by Nikhilchandra Kulkarni.)
* Fixed an issue where internal symlinks were not being created for tablespaces in the repository. This issue was only apparent when trying to bring up clusters in-place manually using filesystem snapshots and did not affect normal backup and restore.
* Fixed an issue that prevented errors from being output to the console before the logging system was initialized, i.e. while parsing options. Error codes were still being returned accurately so this would not have made a process look like it succeeded when it did not. (Reported by Adrian Vondendriesch.)
* Fixed an issue where the db-port option specified on the backup server would not be properly passed to the remote unless it was from the first configured database. (Reported by Michael Vitale.)
Features:
* Added the --checksum-page option to allow pgBackRest to validate page checksums in data files when checksums are enabled on PostgreSQL >= 9.3. Note that this functionality requires a C library which may not initially be available in OS packages. The option will automatically be enabled when the library is present and checksums are enabled on the cluster. (Suggested by Stephen Frost.)
* Added the --repo-link option to allow internal symlinks to be suppressed when the repository is located on a filesystem that does not support symlinks. This does not affect any pgBackRest functionality, but the convenience link latest will not be created and neither will internal tablespace symlinks, which will affect the ability to bring up clusters in-place manually using filesystem snapshots.
* Added the --repo-sync option to allow directory syncs in the repository to be disabled for file systems that do not support them, e.g. NTFS.
* Added a predictable log entry to signal that a command has completed successfully. For example a backup ends successfully with: INFO: backup command end: completed successfully. (Suggested by Jens Wilke.)
Refactoring:
* Abstracted code to determine which database cluster is the master and which are standbys. (Contributed by Cynthia Shang.)
* Improved consistency and flexibility of the protocol layer by using JSON for all messages.
* File copy protocol now accepts a function that can do additional processing on the copy buffers and return a result to the calling process.
* Improved IO->bufferRead to always return requested number of bytes until EOF.
* For simplicity, the pg_control file is now copied with the rest of the files instead of by itself of at the end of the process. The backup command does not require this behavior and the restore copies to a temporary file which is renamed at the end of the restore.
* Simplified the result hash of File->manifest(), Db->tablespaceMapGet(), and Db->databaseMapGet().
* Improved errors returned from child processes by removing redundant error level and code.
* Code cleanup in preparation for improved stanza-create command. (Contributed by Cynthia Shang.)
* Improved parameter/result logging in debug/trace functions.
2016-12-12 19:18:27 -05:00
"retention-full=2",
v1.06: Backup from Standby and Bug Fixes
Bug Fixes:
* Fixed an issue where a tablespace link that referenced another link would not produce an error, but instead skip the tablespace entirely. (Reported by Michael Vitale.)
* Fixed an issue where options that should not allow multiple values could be specified multiple times in pgbackrest.conf without an error being raised. (Reported by Michael Vitale.)
* Fixed an issue where the protocol-timeout option was not automatically increased when the db-timeout option was increased. (Reported by Todd Vernick.)
Features:
* Backup from a standby cluster. A connection to the primary cluster is still required to start/stop the backup and copy files that are not replicated, but the vast majority of files are copied from the standby in order to reduce load on the master.
* More flexible configuration for databases. Master and standby can both be configured on the backup server and pgBackRest will automatically determine which is the master. This means no configuration changes for backup are required after failing over from a master to standby when a separate backup server is used.
* Exclude directories during backup that are cleaned, recreated, or zeroed by PostgreSQL at startup. These include pgsql_tmp and pg_stat_tmp. The postgresql.auto.conf.tmp file is now excluded in addition to files that were already excluded: backup_label.old, postmaster.opts, postmaster.pid, recovery.conf, recovery.done.
* Experimental support for non-exclusive backups in PostgreSQL 9.6 beta4. Changes to the control/catalog/WAL versions in subsequent betas may break compatibility but pgBackRest will be updated with each release to keep pace.
Refactoring:
* Simplify protocol creation and identifying which host is local/remote.
* Removed all OP_* function constants that were used only for debugging, not in the protocol, and replaced with __PACKAGE__.
* Improvements in Db module: separated out connect() function, allow executeSql() calls that do not return data, and improve error handling.
* Improve error message for links that reference links in manifest build.
* Added hints to error message when relative paths are detected in archive-push or archive-get.
* Improve backup log messages to indicate which host the files are being copied from.
2016-08-25 11:49:09 -04:00
"start-fast=y"
]
}
2016-06-02 11:10:24 -04:00
}
]
}
}
}