Re: Methods to quickly spin up copies of an existing databases - Mailing list pgsql-general

From Kevin Wilkinson
Subject Re: Methods to quickly spin up copies of an existing databases
Date
Msg-id d042d137-1888-6040-4cd7-e498941ea15e@gmail.com
Whole thread Raw
In response to Methods to quickly spin up copies of an existing databases  (Arjun Ranade <ranade@nodalexchange.com>)
Responses Re: Methods to quickly spin up copies of an existing databases  (Kenneth Marshall <ktm@rice.edu>)
List pgsql-general

if you are able/willing to use ZFS (rather than ext4, xfs, ...) to store your database, then it might work for you. ZFS is copy-on-write so it can very quickly clone a database.

kevin

On 3/1/2019 12:08 PM, Arjun Ranade wrote:
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

pgsql-general by date:

Previous
From: Bill Haught
Date:
Subject: Re: Future Non-server Windows support???
Next
From: Kenneth Marshall
Date:
Subject: Re: Methods to quickly spin up copies of an existing databases