From 4353a4cf5b85dc1bce1e728dbb8aaf8eb416aee7 Mon Sep 17 00:00:00 2001 From: Iain Date: Tue, 26 Nov 2024 15:02:58 +0100 Subject: [PATCH 1/7] chore: play with the logical backup page. --- self-hosted/backup-and-restore/index.md | 5 +- .../backup-and-restore/logical-backup.md | 179 ++++++++++++++++++ self-hosted/page-index/page-index.js | 5 + 3 files changed, 187 insertions(+), 2 deletions(-) create mode 100644 self-hosted/backup-and-restore/logical-backup.md diff --git a/self-hosted/backup-and-restore/index.md b/self-hosted/backup-and-restore/index.md index ef311ad61a..dcf55fb714 100644 --- a/self-hosted/backup-and-restore/index.md +++ b/self-hosted/backup-and-restore/index.md @@ -14,8 +14,8 @@ TimescaleDB takes advantage of the reliable backup and restore functionality provided by PostgreSQL. There are a few different mechanisms you can use to backup your self-hosted TimescaleDB database: -* Logical backups with pg_dump and pg_restore. -* [Physical backups][physical-backups] with `pg_basebackup` or another tool. +* [Logical backup][logical-backups] with pg_dump and pg_restore. +* [Physical backup][physical-backups] with `pg_basebackup` or another tool. * _DEPRECATED_ [Ongoing physical backups][ongoing-physical-backups] using write-ahead log (WAL) archiving. @@ -23,3 +23,4 @@ backup your self-hosted TimescaleDB database: [ongoing-physical-backups]: /self-hosted/:currentVersion:/backup-and-restore/docker-and-wale/ [physical-backups]: /self-hosted/:currentVersion:/backup-and-restore/physical/ +[logical-backups]: /self-hosted/:currentVersion:/backup-and-restore/logical-backup/ diff --git a/self-hosted/backup-and-restore/logical-backup.md b/self-hosted/backup-and-restore/logical-backup.md new file mode 100644 index 0000000000..6ed862bf35 --- /dev/null +++ b/self-hosted/backup-and-restore/logical-backup.md @@ -0,0 +1,179 @@ +--- +title: Logical backup with pg_dump and pg_restore +excerpt: Back up and restore a hypertable or an entire database using native PostgreSQL commands +keywords: [backups, restore] +tags: [recovery, logical backup, pg_dump, pg_restore] +--- + +# Logical backup with `pg_dump` and `pg_restore` + +You can backup and restore an entire database or individual hypertables using +the native PostgreSQL [`pg_dump`][pg_dump] and [`pg_restore`][pg_restore] +commands. This works even for compressed hypertables, without having to +decompress the chunks before you begin. + +Upgrades between different versions of TimescaleDB can be done in place; you +don't need to backup and restore your data. See +the [upgrading instructions][timescaledb-upgrade]. + + +If you are using this `pg_dump` backup method regularly, make sure you keep +track of which versions of PostgreSQL and TimescaleDB you are running. For more +information, see "Versions are mismatched when dumping and restoring a database" +in the [Troubleshooting section](https://docs.timescale.com/timescaledb/latest/how-to-guides/backup-and-restore/troubleshooting/). + + +## Back up your entire database + +You can perform a backup using the `pg_dump` command at the command prompt. For +example, to backup a database named `tsdb`: + +```bash +pg_dump -Fc -f tsdb.bak tsdb +``` + +To backup a database named `tsdb` hosted on a remote server: + +```bash +pg_dump -h -p 55555 -U tsdbadmin -Fc -f tsdb.bak tsdb +``` + +You might see some errors when running `pg_dump`. To learn if they can be safely +ignored, see the [troubleshooting section][troubleshooting]. + + +Do not use the `pg_dump` command to backup individual hypertables. Dumps created +using this method lack the necessary information to correctly restore the +hypertable from backup. + + +## Restore your entire database from backup + +When you need to restore data from a backup, you can use `psql` to create a new +database and restore the data. + + + +### Restoring an entire database from backup + +1. In `psql`, create a new database to restore to, and connect to it: + + ```sql + CREATE DATABASE tsdb; + \c tsdb + CREATE EXTENSION IF NOT EXISTS timescaledb; + +1. Run [timescaledb_pre_restore][timescaledb_pre_restore] to put your database + in the right state for restoring: + + ```sql + SELECT timescaledb_pre_restore(); + ``` + +1. Restore the database: + + ```sql + \! pg_restore -Fc -d tsdb tsdb.bak + +1. Run [`timescaledb_post_restore`][timescaledb_post_restore] to return your + database to normal operations: + + ```sql + SELECT timescaledb_post_restore(); + ``` + + + + +Do not use the `pg_restore` command with -j option. This option does not +correctly restore the Timescale catalogs. + + +## Back up individual hypertables + +The `pg_dump` command provides flags that allow you to specify tables or schemas +to back up. However, using these flags means that the dump lacks necessary +information that TimescaleDB requires to understand the relationship between +them. Even if you explicitly specify both the hypertable and all of its +constituent chunks, the dump would still not contain all the information it +needs to recreate the hypertable on restore. + + +Do not use the `pg_dump` command to backup individual hypertables. Dumps created +using this method lack the necessary information to correctly restore the +hypertable from backup. + + +You can backup individual hypertables by backing up the entire database, and +then excluding the tables you do not want to backup. You can also use this +method to backup individual plain tables that are not hypertables. + + + +### Backing up individual hypertables + +1. At the command prompt, back up the hypertable schema: + + ```bash + pg_dump -s -d old_db --table conditions -N _timescaledb_internal | \ + grep -v _timescaledb_internal > schema.sql + ``` + +1. Backup the hypertable data to a CSV file: + + ```bash + psql -d old_db \ + -c "\COPY (SELECT * FROM conditions) TO data.csv DELIMITER ',' CSV" + ``` + + + + + +### Restoring individual hypertables from backup + +1. At the command prompt, restore the schema: + + ```bash + psql -d new_db < schema.sql + ``` + +1. Recreate the hypertables: + + ```bash + psql -d new_db -c "SELECT create_hypertable('conditions', 'time')" + ``` + +1. Restore the data: + + ```bash + psql -d new_db -c "\COPY conditions FROM data.csv CSV" + ``` + + The standard `COPY` command in PostgreSQL is single threaded. If you have a + lot of data, you can speed up the copy using the [parallel importer][] + instead. + +When you create the new hypertable with the `create_hypertable` command, you +do not need to use the same parameters as existed in the old database. This +can provide a good opportunity for you to re-organize your hypertables if +you need to. For example, you can change the partitioning key, the number of +partitions, or the chunk interval sizes. + + + +On a self hosted TimescaleDB instance with `postgres` superuser access you can +take a complete dump of all PostgreSQL databases in a cluster including global +objects that are common to all databases, namely database roles, tablespaces, +and privilege grants using `pg_dumpall`. For more +information about how to use the `pg_dumpall` utility, see +[PostgreSQL documentation][postgres-docs]. + +[parallel importer]: https://github.com/timescale/timescaledb-parallel-copy +[pg_dump]: https://www.postgresql.org/docs/current/static/app-pgdump.html +[pg_restore]: https://www.postgresql.org/docs/current/static/app-pgrestore.html +[timescaledb_pre_restore]: /api/:currentVersion:/administration/#timescaledb_pre_restore +[timescaledb_post_restore]: /api/:currentVersion:/administration/#timescaledb_post_restore +[timescaledb-upgrade]: /self-hosted/:currentVersion:/upgrades/ +[troubleshooting]: /self-hosted/:currentVersion:/troubleshooting/ +[postgres-docs]: https://www.postgresql.org/docs/current/app-pg-dumpall.html diff --git a/self-hosted/page-index/page-index.js b/self-hosted/page-index/page-index.js index 1cbaeba80c..544d5f9d5a 100644 --- a/self-hosted/page-index/page-index.js +++ b/self-hosted/page-index/page-index.js @@ -101,6 +101,11 @@ module.exports = [ title: "Backup and restore", href: "backup-and-restore", children: [ + { + title: "Logical backup", + href: "logical-backup", + excerpt: "Back up and restore a hypertable or an entire database using native PostgreSQL commands", + }, { title: "Docker & WAL-E", href: "docker-and-wale", From 827ad4583a64b82ba29033e2cfbdef163d607646 Mon Sep 17 00:00:00 2001 From: Iain Date: Thu, 28 Nov 2024 13:02:03 +0100 Subject: [PATCH 2/7] chore: updates. --- .../backup-and-restore/logical-backup.md | 216 +++++++++--------- 1 file changed, 114 insertions(+), 102 deletions(-) diff --git a/self-hosted/backup-and-restore/logical-backup.md b/self-hosted/backup-and-restore/logical-backup.md index 6ed862bf35..c5b8e18994 100644 --- a/self-hosted/backup-and-restore/logical-backup.md +++ b/self-hosted/backup-and-restore/logical-backup.md @@ -7,158 +7,165 @@ tags: [recovery, logical backup, pg_dump, pg_restore] # Logical backup with `pg_dump` and `pg_restore` -You can backup and restore an entire database or individual hypertables using -the native PostgreSQL [`pg_dump`][pg_dump] and [`pg_restore`][pg_restore] -commands. This works even for compressed hypertables, without having to -decompress the chunks before you begin. +You can backup and restore using native PostgreSQL [`pg_dump`][pg_dump] and [`pg_restore`][pg_restore] +commands. This also works for compressed hypertables, you don't have to decompress the chunks +before you begin. -Upgrades between different versions of TimescaleDB can be done in place; you -don't need to backup and restore your data. See -the [upgrading instructions][timescaledb-upgrade]. +If you are using `pg_dump` to backup regularly, make sure you keep +track of the versions of PostgreSQL and TimescaleDB you are running. For more +information, see [Versions are mismatched when dumping and restoring a database][troubleshooting-version-mismatch]. - -If you are using this `pg_dump` backup method regularly, make sure you keep -track of which versions of PostgreSQL and TimescaleDB you are running. For more -information, see "Versions are mismatched when dumping and restoring a database" -in the [Troubleshooting section](https://docs.timescale.com/timescaledb/latest/how-to-guides/backup-and-restore/troubleshooting/). - +This page shows you how to: -## Back up your entire database +- [Back up and restore an entire database][backup-entire-database] +- [Back up and restore individual hypertables][backup-individual-tables] -You can perform a backup using the `pg_dump` command at the command prompt. For -example, to backup a database named `tsdb`: +You can [upgrade between different versions of TimescaleDB in place][timescaledb-upgrade]; you +don't need to backup and restore your data. -```bash -pg_dump -Fc -f tsdb.bak tsdb -``` -To backup a database named `tsdb` hosted on a remote server: +## Prerequisites -```bash -pg_dump -h -p 55555 -U tsdbadmin -Fc -f tsdb.bak tsdb -``` +- A source database to backup from, and a target database to restore to. +- Install the PostgreSQL client tools on your migration machine. -You might see some errors when running `pg_dump`. To learn if they can be safely -ignored, see the [troubleshooting section][troubleshooting]. + This includes `psql`, and `pg_dump`. - -Do not use the `pg_dump` command to backup individual hypertables. Dumps created -using this method lack the necessary information to correctly restore the -hypertable from backup. - +## Back up and restore an entire database -## Restore your entire database from backup +You backup and restore an entire database using `pg_dump` and `psql`. in Terminal: -When you need to restore data from a backup, you can use `psql` to create a new -database and restore the data. + - +In Terminal: -### Restoring an entire database from backup +1. **Set your connection strings** -1. In `psql`, create a new database to restore to, and connect to it: + These variables hold the connection information for the source database to backup from and + the target database to restore to: - ```sql - CREATE DATABASE tsdb; - \c tsdb - CREATE EXTENSION IF NOT EXISTS timescaledb; + ```bash + export SOURCE=postgres://:@:/ + export TARGET=postgres://:@: + ``` -1. Run [timescaledb_pre_restore][timescaledb_pre_restore] to put your database - in the right state for restoring: +1. **Backup your database** - ```sql - SELECT timescaledb_pre_restore(); - ``` + ```bash + pg_dump -d "$SOURCE" \ + -Fc -f .bak + ``` + You may see some errors while `pg_dump` is running. See [Troubleshooting self-hosted TimescaleDB][troubleshooting] + to check if they can be safely ignored. -1. Restore the database: +1. **Restore your database from the backup** - ```sql - \! pg_restore -Fc -d tsdb tsdb.bak + 1. Connect to your target database: + ```bash + psql -d "$TARGET" + ``` -1. Run [`timescaledb_post_restore`][timescaledb_post_restore] to return your - database to normal operations: + 1. Create a new database and enable TimescaleDB: - ```sql - SELECT timescaledb_post_restore(); - ``` + ```sql + CREATE DATABASE ; + \c + CREATE EXTENSION IF NOT EXISTS timescaledb; + ``` + + 1. Put your database in the right state for restoring: - + ```sql + SELECT timescaledb_pre_restore(); + ``` + + 1. Restore the database: + + ```sql + \! pg_restore -Fc -d .bak + ``` + + 1. Return your database to normal operations: - -Do not use the `pg_restore` command with -j option. This option does not -correctly restore the Timescale catalogs. - + ```sql + SELECT timescaledb_post_restore(); + ``` + Do not use `pg_restore` with the `-j` option. This option does not correctly restore the + TimescaleDB catalogs. -## Back up individual hypertables + -The `pg_dump` command provides flags that allow you to specify tables or schemas + +## Back up and restore individual hypertables + +`pg_dump` provides flags that allow you to specify tables or schemas to back up. However, using these flags means that the dump lacks necessary information that TimescaleDB requires to understand the relationship between them. Even if you explicitly specify both the hypertable and all of its constituent chunks, the dump would still not contain all the information it needs to recreate the hypertable on restore. - -Do not use the `pg_dump` command to backup individual hypertables. Dumps created -using this method lack the necessary information to correctly restore the -hypertable from backup. - - -You can backup individual hypertables by backing up the entire database, and -then excluding the tables you do not want to backup. You can also use this -method to backup individual plain tables that are not hypertables. +To backup individual hypertables, backup the database schema, then backup only the tables +you need. You also use this method to backup individual plain tables. +In Terminal: -### Backing up individual hypertables +1. **Set your connection strings** -1. At the command prompt, back up the hypertable schema: + These variables hold the connection information for the source database to backup from and + the target database to restore to: - ```bash - pg_dump -s -d old_db --table conditions -N _timescaledb_internal | \ - grep -v _timescaledb_internal > schema.sql - ``` + ```bash + export SOURCE=postgres://:@:/ + export TARGET=postgres://:@:/ + ``` -1. Backup the hypertable data to a CSV file: +1. **Backup the database schema and individual tables** - ```bash - psql -d old_db \ - -c "\COPY (SELECT * FROM conditions) TO data.csv DELIMITER ',' CSV" - ``` + 1. Back up the hypertable schema: - - - + ```bash + pg_dump -s -d $SOURCE --table conditions -N _timescaledb_internal | \ + grep -v _timescaledb_internal > schema.sql + ``` -### Restoring individual hypertables from backup + 1. Backup hypertable data to a CSV file: + + For each hypertable to backup: + ```bash + psql -d $SOURCE \ + -c "\COPY (SELECT * FROM ) TO .csv DELIMITER ',' CSV" + ``` -1. At the command prompt, restore the schema: +1. **Restore the schema to the target database** ```bash - psql -d new_db < schema.sql + psql -d $TARGET < schema.sql ``` -1. Recreate the hypertables: +1. **Restore hypertables from the backup** - ```bash - psql -d new_db -c "SELECT create_hypertable('conditions', 'time')" - ``` + For each hypertable to backup: + 1. Recreate the hypertable: -1. Restore the data: + ```bash + psql -d $TARGET -c "SELECT create_hypertable(, )" + ``` + When you [create the new hypertable][create_hypertable], you do not need to use the + same parameters as existed in the source database. This + can provide a good opportunity for you to re-organize your hypertables if + you need to. For example, you can change the partitioning key, the number of + partitions, or the chunk interval sizes. - ```bash - psql -d new_db -c "\COPY conditions FROM data.csv CSV" - ``` + 1. Restore the data: - The standard `COPY` command in PostgreSQL is single threaded. If you have a - lot of data, you can speed up the copy using the [parallel importer][] - instead. + ```bash + psql -d $TARGET -c "\COPY FROM .csv CSV" + ``` -When you create the new hypertable with the `create_hypertable` command, you -do not need to use the same parameters as existed in the old database. This -can provide a good opportunity for you to re-organize your hypertables if -you need to. For example, you can change the partitioning key, the number of -partitions, or the chunk interval sizes. + The standard `COPY` command in PostgreSQL is single threaded. If you have a + lot of data, you can speed up the copy using the [timescaledb-parallel-copy][parallel importer]. @@ -169,6 +176,7 @@ and privilege grants using `pg_dumpall`. For more information about how to use the `pg_dumpall` utility, see [PostgreSQL documentation][postgres-docs]. + [parallel importer]: https://github.com/timescale/timescaledb-parallel-copy [pg_dump]: https://www.postgresql.org/docs/current/static/app-pgdump.html [pg_restore]: https://www.postgresql.org/docs/current/static/app-pgrestore.html @@ -176,4 +184,8 @@ information about how to use the `pg_dumpall` utility, see [timescaledb_post_restore]: /api/:currentVersion:/administration/#timescaledb_post_restore [timescaledb-upgrade]: /self-hosted/:currentVersion:/upgrades/ [troubleshooting]: /self-hosted/:currentVersion:/troubleshooting/ +[troubleshooting-version-mismatch]: /self-hosted/:currentVersion:/troubleshooting/#versions-are-mismatched-when-dumping-and-restoring-a-database [postgres-docs]: https://www.postgresql.org/docs/current/app-pg-dumpall.html +[backup-entire-database]: /self-hosted/:currentVersion:/backup-and-restore/logical-backup/#back-up-and-restore-an-entire-database +[backup-individual-tables]: /self-hosted/:currentVersion:/backup-and-restore/logical-backup/#back-up-and-restore-individual-hypertables +[create_hypertable]: /api/:currentVersion:/hypertable/create_hypertable/ From 32f20f2ad7a78933e4fa3641e8e36a57b63c658b Mon Sep 17 00:00:00 2001 From: Iain Date: Mon, 2 Dec 2024 13:16:19 +0100 Subject: [PATCH 3/7] chore: update on review. --- .../backup-and-restore/logical-backup.md | 21 ++++++++----------- 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/self-hosted/backup-and-restore/logical-backup.md b/self-hosted/backup-and-restore/logical-backup.md index c5b8e18994..6d00d63cad 100644 --- a/self-hosted/backup-and-restore/logical-backup.md +++ b/self-hosted/backup-and-restore/logical-backup.md @@ -7,9 +7,9 @@ tags: [recovery, logical backup, pg_dump, pg_restore] # Logical backup with `pg_dump` and `pg_restore` -You can backup and restore using native PostgreSQL [`pg_dump`][pg_dump] and [`pg_restore`][pg_restore] -commands. This also works for compressed hypertables, you don't have to decompress the chunks -before you begin. +You backup and restore each self-hosted PostgreSQL database with TimescaleDB enabled using the native +PostgreSQL [`pg_dump`][pg_dump] and [`pg_restore`][pg_restore] commands. This also works for compressed hypertables, +you don't have to decompress the chunks before you begin. If you are using `pg_dump` to backup regularly, make sure you keep track of the versions of PostgreSQL and TimescaleDB you are running. For more @@ -20,9 +20,7 @@ This page shows you how to: - [Back up and restore an entire database][backup-entire-database] - [Back up and restore individual hypertables][backup-individual-tables] -You can [upgrade between different versions of TimescaleDB in place][timescaledb-upgrade]; you -don't need to backup and restore your data. - +You can also [upgrade between different versions of TimescaleDB][timescaledb-upgrade]. ## Prerequisites @@ -169,11 +167,10 @@ In Terminal: -On a self hosted TimescaleDB instance with `postgres` superuser access you can -take a complete dump of all PostgreSQL databases in a cluster including global -objects that are common to all databases, namely database roles, tablespaces, -and privilege grants using `pg_dumpall`. For more -information about how to use the `pg_dumpall` utility, see +Best practice is to backup and restore a database at a time. However, if you have superuser access to +PostgreSQL instance with TimescaleDB installed, you can use `pg_dumpall` to backup all PostgreSQL databases in a +cluster, including global objects that are common to all databases, namely database roles, tablespaces, +and privilege grants. You restore the PostgreSQL instance using `psql`. For more information, see the [PostgreSQL documentation][postgres-docs]. @@ -185,7 +182,7 @@ information about how to use the `pg_dumpall` utility, see [timescaledb-upgrade]: /self-hosted/:currentVersion:/upgrades/ [troubleshooting]: /self-hosted/:currentVersion:/troubleshooting/ [troubleshooting-version-mismatch]: /self-hosted/:currentVersion:/troubleshooting/#versions-are-mismatched-when-dumping-and-restoring-a-database -[postgres-docs]: https://www.postgresql.org/docs/current/app-pg-dumpall.html +[postgres-docs]: https://www.postgresql.org/docs/17/backup-dump.html#BACKUP-DUMP-ALL [backup-entire-database]: /self-hosted/:currentVersion:/backup-and-restore/logical-backup/#back-up-and-restore-an-entire-database [backup-individual-tables]: /self-hosted/:currentVersion:/backup-and-restore/logical-backup/#back-up-and-restore-individual-hypertables [create_hypertable]: /api/:currentVersion:/hypertable/create_hypertable/ From 6a2e90032577b40d72a1eac57fe7c44596a8d51c Mon Sep 17 00:00:00 2001 From: Iain Cox Date: Thu, 5 Dec 2024 10:39:00 +0100 Subject: [PATCH 4/7] Update self-hosted/backup-and-restore/logical-backup.md Co-authored-by: Arunprasad Rajkumar Signed-off-by: Iain Cox --- self-hosted/backup-and-restore/logical-backup.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/self-hosted/backup-and-restore/logical-backup.md b/self-hosted/backup-and-restore/logical-backup.md index 6d00d63cad..ccd282c5ec 100644 --- a/self-hosted/backup-and-restore/logical-backup.md +++ b/self-hosted/backup-and-restore/logical-backup.md @@ -80,7 +80,7 @@ In Terminal: 1. Restore the database: ```sql - \! pg_restore -Fc -d .bak + pg_restore -Fc -d .bak ``` 1. Return your database to normal operations: From 5d15a867a02e85666777780812c47734ec708746 Mon Sep 17 00:00:00 2001 From: Iain Date: Thu, 5 Dec 2024 10:45:39 +0100 Subject: [PATCH 5/7] chore: update on review. --- self-hosted/backup-and-restore/logical-backup.md | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/self-hosted/backup-and-restore/logical-backup.md b/self-hosted/backup-and-restore/logical-backup.md index ccd282c5ec..089a22ad00 100644 --- a/self-hosted/backup-and-restore/logical-backup.md +++ b/self-hosted/backup-and-restore/logical-backup.md @@ -25,17 +25,15 @@ You can also [upgrade between different versions of TimescaleDB][timescaledb-upg ## Prerequisites - A source database to backup from, and a target database to restore to. -- Install the PostgreSQL client tools on your migration machine. - - This includes `psql`, and `pg_dump`. +- Install the `psql`, and `pg_dump`PostgreSQL client tools on your migration machine. ## Back up and restore an entire database -You backup and restore an entire database using `pg_dump` and `psql`. in Terminal: +You backup and restore an entire database using `pg_dump` and `psql`. -In Terminal: +In terminal: 1. **Set your connection strings** @@ -124,8 +122,7 @@ In Terminal: 1. Back up the hypertable schema: ```bash - pg_dump -s -d $SOURCE --table conditions -N _timescaledb_internal | \ - grep -v _timescaledb_internal > schema.sql + pg_dump -s -d $SOURCE --table > schema.sql ``` 1. Backup hypertable data to a CSV file: From f3df11d160b16eb3ed43247dc55dfbc781312e00 Mon Sep 17 00:00:00 2001 From: Iain Date: Thu, 5 Dec 2024 10:49:10 +0100 Subject: [PATCH 6/7] chore: update on review. --- self-hosted/backup-and-restore/logical-backup.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/self-hosted/backup-and-restore/logical-backup.md b/self-hosted/backup-and-restore/logical-backup.md index 089a22ad00..c5cdde1e92 100644 --- a/self-hosted/backup-and-restore/logical-backup.md +++ b/self-hosted/backup-and-restore/logical-backup.md @@ -25,7 +25,7 @@ You can also [upgrade between different versions of TimescaleDB][timescaledb-upg ## Prerequisites - A source database to backup from, and a target database to restore to. -- Install the `psql`, and `pg_dump`PostgreSQL client tools on your migration machine. +- Install the `psql`, and `pg_dump` PostgreSQL client tools on your migration machine. ## Back up and restore an entire database From cdbab1c4de076ea01105abbb0f37a0493ab65bf0 Mon Sep 17 00:00:00 2001 From: Iain Date: Thu, 5 Dec 2024 10:53:56 +0100 Subject: [PATCH 7/7] chore: update on review. --- self-hosted/backup-and-restore/logical-backup.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/self-hosted/backup-and-restore/logical-backup.md b/self-hosted/backup-and-restore/logical-backup.md index c5cdde1e92..e903b7f46c 100644 --- a/self-hosted/backup-and-restore/logical-backup.md +++ b/self-hosted/backup-and-restore/logical-backup.md @@ -25,7 +25,7 @@ You can also [upgrade between different versions of TimescaleDB][timescaledb-upg ## Prerequisites - A source database to backup from, and a target database to restore to. -- Install the `psql`, and `pg_dump` PostgreSQL client tools on your migration machine. +- Install the `psql` and `pg_dump` PostgreSQL client tools on your migration machine. ## Back up and restore an entire database