On 7/10/19 2:56 AM, Alex Williams wrote:
> Hi,
>
> Can someone point me in the right direction for this issue we are having -- our goal is to dump a database that is
currentlyon a tablespace named data2 that we want to restore on the same server but on tablespace pg_default -- we
triedother ways like:
> ALTER DATABASE "[database_name]" SET default_tablespace = [new_tablespace];
> alter table all in tablespace data2 set tablespace pg_default;
>
> But we want to try it with a pgdump/psql.
>
> To reproduce on our end (Server 9.5):
>
> 1. create new database for the restore with the tablespace as pg_default
>
> 2. Dump the source database (currently on data2 tablespace) with the following command:
> sudo -u postgres pg_dump mydatabase --no-owner --no-tablespaces | gzip > mydatabase.gz
>
> 3. Restore the database with this command:
> zcat /var/backup/db/mydatabase.gz | sudo -H -u postgres psql --quiet -e -c 'SET default_tablespace =
pg_default;'-f - mydatabase_test > /tmp/mydatabase_test.log
>
> What happens during the restore is that all tables are created on data2, not pg_default.
>
> Any help would be greatly appreciated.
This should work.
Double-check each step to make sure nothing has been missed out somewhere, e.g.
in step 2 you create mydatabase.gz in the current working directory but in step 3 restore it
from an absolute filepath, which is a common cause of errors.
Also maybe try dumping an individual table definition (pg_dump --schema-only --table=sometablename ...) and check
exactly what's being dumped and how it gets restored.
Regards
Ian Barwick
--
Ian Barwick https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services