pg_dumpall and tablespaces
Hello all,
I have a dump file obtained from pg_dumpall on a MAC computer. I need to
load in onto my Linux laptop running postgres.
My scenario is software development. I'm trying to load the dump onto my Pg
installation running on Linux (and later possibly on Linux over Docker) in
order to perform my sw development against a fresh copy of the data.
I got 2 problems concerning tablespaces:
a) during the restore step I get lots of errors about the necessity to have
root permissions to re-create the tablespaces and
b) the tablespaces paths on the dump file are bound to the MAC filesystem
(/Users/..../pg/....). I would need to re-write that path to my home folder
or '/var/lib/....'
Obviously I'm a bit confused on how to do this.
pg_dumpall is very powerfull and simple, specially when using the
"--create" option that does all the work for me.
I would appreciate any directions on how to restore that dump
thank you
Joao
On 2/2/21 8:43 AM, Joao Miguel Ferreira wrote:
Hello all,
I have a dump file obtained from pg_dumpall on a MAC computer. I need to
load in onto my Linux laptop running postgres.My scenario is software development. I'm trying to load the dump onto my
Pg installation running on Linux (and later possibly on Linux over
Docker) in order to perform my sw development against a fresh copy of
the data.I got 2 problems concerning tablespaces:
a) during the restore step I get lots of errors about the necessity to
have root permissions to re-create the tablespaces and
b) the tablespaces paths on the dump file are bound to the MAC
filesystem (/Users/..../pg/....). I would need to re-write that path to
my home folder or '/var/lib/....'Obviously I'm a bit confused on how to do this.
pg_dumpall is very powerfull and simple, specially when using the
"--create" option that does all the work for me.I would appreciate any directions on how to restore that dump
Do you want to maintain tablespaces on the dev machine?
If not from here:
https://www.postgresql.org/docs/12/app-pg-dumpall.html
--no-tablespaces
Do not output commands to create tablespaces nor select tablespaces
for objects. With this option, all objects will be created in whichever
tablespace is the default during restore.
This would have to be done when the pg_dumpall is run.
thank you
Joao
--
Adrian Klaver
adrian.klaver@aklaver.com
On Tue, Feb 2, 2021 at 4:52 PM Adrian Klaver <adrian.klaver@aklaver.com>
wrote:
On 2/2/21 8:43 AM, Joao Miguel Ferreira wrote:
I got 2 problems concerning tablespaces:
a) during the restore step I get lots of errors about the necessity to
have root permissions to re-create the tablespaces and
b) the tablespaces paths on the dump file are bound to the MAC
filesystem (/Users/..../pg/....). I would need to re-write that path to
my home folder or '/var/lib/....'
Do you want to maintain tablespaces on the dev machine?
If not from here:
https://www.postgresql.org/docs/12/app-pg-dumpall.html
--no-tablespaces
Do not output commands to create tablespaces nor select tablespaces
for objects. With this option, all objects will be created in whichever
tablespace is the default during restore.This would have to be done when the pg_dumpall is run.
That's great. I really do not need the tablespaces for dev. I will try that
thank you
Adrian Klaver <adrian.klaver@aklaver.com> writes:
On 2/2/21 8:43 AM, Joao Miguel Ferreira wrote:
I have a dump file obtained from pg_dumpall on a MAC computer. I need to
load in onto my Linux laptop running postgres.
I got 2 problems concerning tablespaces:
a) during the restore step I get lots of errors about the necessity to
have root permissions to re-create the tablespaces and
b) the tablespaces paths on the dump file are bound to the MAC
filesystem (/Users/..../pg/....). I would need to re-write that path to
my home folder or '/var/lib/....'
Do you want to maintain tablespaces on the dev machine?
If not from here:
https://www.postgresql.org/docs/12/app-pg-dumpall.html
--no-tablespaces
Also, if you're not in a position to re-make the dump file, you
can just restore it and ignore all the tablespace-related errors.
You'll end up with the same situation either way, i.e. all the
tables exist in the default tablespace.
If you do need to preserve the separation into distinct tablespaces,
you could try this:
* Starting with an empty installation, create the tablespaces you need,
matching the original installation's tablespace names but putting
the directories wherever is handy.
* Restore the dump, ignoring the errors about tablespaces already
existing.
Either way, the key is that a dump file is just a SQL script and
isn't especially magic; you don't have to be in fear of ignoring
a few errors. pg_dump builds the script to be resistant to certain
types of issues, and missing tablespaces is one of those.
I do recommend capturing the stderr output and checking through it
to ensure you didn't have any unexpected errors.
regards, tom lane
On Tue, Feb 2, 2021 at 5:08 PM Tom Lane <tgl@sss.pgh.pa.us> wrote:
Adrian Klaver <adrian.klaver@aklaver.com> writes:
On 2/2/21 8:43 AM, Joao Miguel Ferreira wrote:
I have a dump file obtained from pg_dumpall on a MAC computer. I need
to
load in onto my Linux laptop running postgres.
I got 2 problems concerning tablespaces:
a) during the restore step I get lots of errors about the necessity to
have root permissions to re-create the tablespaces and
b) the tablespaces paths on the dump file are bound to the MAC
filesystem (/Users/..../pg/....). I would need to re-write that path to
my home folder or '/var/lib/....'Do you want to maintain tablespaces on the dev machine?
If not from here:
https://www.postgresql.org/docs/12/app-pg-dumpall.html
--no-tablespacesAlso, if you're not in a position to re-make the dump file, you
can just restore it and ignore all the tablespace-related errors.
You'll end up with the same situation either way, i.e. all the
tables exist in the default tablespace.If you do need to preserve the separation into distinct tablespaces,
you could try this:* Starting with an empty installation, create the tablespaces you need,
matching the original installation's tablespace names but putting
the directories wherever is handy.* Restore the dump, ignoring the errors about tablespaces already
existing.Either way, the key is that a dump file is just a SQL script and
isn't especially magic; you don't have to be in fear of ignoring
a few errors. pg_dump builds the script to be resistant to certain
types of issues, and missing tablespaces is one of those.I do recommend capturing the stderr output and checking through it
to ensure you didn't have any unexpected errors.regards, tom lane
Hi Tom,
thanks for the additional details. I did not know about that kind of
tolerance during restore.
Cheers
Thank you