Methods to quickly spin up copies of an existing databases

From: Arjun Ranade <ranade(at)nodalexchange(dot)com>
To: pgsql-general(at)postgresql(dot)org
Subject: Methods to quickly spin up copies of an existing databases
Date: 2019-03-01 20:08:13
Message-ID: CANrrCRxLYcoXw_VWD10jEYCAwYb-wX8AKSFxe8vaFDUHpnYS_Q@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

I'm working on a project that requires on-demand creation of a fresh
database as quick as possible (seconds). Essentially, this is a build
server that will require a cloned instance of Postgres to run unit tests
on. So the pattern of use would be:

- Build is triggered
- New postgres instance is created and connection details are provided
to build server
- Build runs unit tests that connect to the database
- Build completes, database is no longer needed and can be thrown away

The "template" database will be approximately 50gb in size so my question
is what is the fastest way to spin up new instances of this database? I've
thought of using "CREATE DATABASE WITH TEMPLATE..." but that takes too
long. I've also thought about cloning the $PGDATA directory, changing the
port number in postgresql.conf, and starting a new instance of postgres
pointing to the cloned data directory.

Both of these methods take longer than I'd like, so I'm wondering if anyone
else has this use case and what methods they've used to solve this.

Thanks,
Arjun

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Adrian Klaver 2019-03-01 20:28:15 Re: Future Non-server Windows support???
Previous Message Kenneth Marshall 2019-03-01 20:00:17 Re: Methods to quickly spin up copies of an existing databases