Thread: Reduce size of $PGDATA for "demo cdrom"?

Reduce size of $PGDATA for "demo cdrom"?

From
Philip Hallstrom
Date:
Hi all -
     We've got a product built on FreeBSD and PostgreSQL 7.4.2 that
I've had to fit onto an installable CDROM tradeshows and customer demos.
This is the only way I've found to ensure an easy to re-install option
for the non-technical folks at the tradeshows should they corrupt the box
itself.  This part all works fine.

However, I've only got 700mb to work with and the bootable CDROM takes a
chunk of that as does the rest of our app.

Doing a pg_dumpall of the database results in a 369Kb file.

However, $PGDATA is around 60mb.

root@tradeshow:/local/pgsql/data% du -hcs base/* pg_xlog/*
4.4M    base/1
4.4M    base/17141
4.4M    base/17144
4.4M    base/17145
6.6M    base/17146
5.4M    base/17147
  16M    pg_xlog/0000000000000006
  16M    pg_xlog/0000000000000007
  62M    total


My question is what's the best way to trim that down?  I realize I could
remove it completely and have my install script do an initdb, etc, but if
there's anyway to keep the installation intact to begin with I'd prefer
that.

Is there any other way to trim the size of those files?  Maybe dump
everything out, "clean up", then restore it.  Then immediately burn things
to CD?  Or if there are postgresql.conf options I can set to not keep WAL
logs, etc around that would work too since this is just for tradeshows...

Thanks all!

-philip


Re: Reduce size of $PGDATA for "demo cdrom"?

From
Scott Marlowe
Date:
On Wed, 2005-04-27 at 10:10, Philip Hallstrom wrote:
> Hi all -
>      We've got a product built on FreeBSD and PostgreSQL 7.4.2 that
> I've had to fit onto an installable CDROM tradeshows and customer demos.
> This is the only way I've found to ensure an easy to re-install option
> for the non-technical folks at the tradeshows should they corrupt the box
> itself.  This part all works fine.
>
> However, I've only got 700mb to work with and the bootable CDROM takes a
> chunk of that as does the rest of our app.
>
> Doing a pg_dumpall of the database results in a 369Kb file.
>
> However, $PGDATA is around 60mb.
>
> root@tradeshow:/local/pgsql/data% du -hcs base/* pg_xlog/*
> 4.4M    base/1
> 4.4M    base/17141
> 4.4M    base/17144
> 4.4M    base/17145
> 6.6M    base/17146
> 5.4M    base/17147
>   16M    pg_xlog/0000000000000006
>   16M    pg_xlog/0000000000000007
>   62M    total
>
>
> My question is what's the best way to trim that down?  I realize I could
> remove it completely and have my install script do an initdb, etc, but if
> there's anyway to keep the installation intact to begin with I'd prefer
> that.


My first recommendation would be to put everything into one database.
it looks like you've got 6 databases.  If you've still got the template0
database, you can probably get rid of that one as well.  If you're not
going to need to create any new databases you can maybe drop template1
too.

psql somedbotherthanthetemplateones
update pg_database set datistemplate=false;
drop database template0;
drop database template1;

Set the checkpoint_segments = 1 in the postgresql.conf file.  Not sure
how much that will help, but it should keep the checkpoint files at 16
meg.

Lastly, put those other four or databases into separate schemas in one
database.


Re: Reduce size of $PGDATA for "demo cdrom"?

From
Bruno Wolff III
Date:
On Wed, Apr 27, 2005 at 10:23:19 -0500,
  Scott Marlowe <smarlowe@g2switchworks.com> wrote:
>
> My first recommendation would be to put everything into one database.
> it looks like you've got 6 databases.  If you've still got the template0
> database, you can probably get rid of that one as well.  If you're not
> going to need to create any new databases you can maybe drop template1
> too.

Isn't template0 needed for dumps, since they are relative to template0?

Re: Reduce size of $PGDATA for "demo cdrom"?

From
Scott Marlowe
Date:
On Wed, 2005-04-27 at 20:44, Bruno Wolff III wrote:
> On Wed, Apr 27, 2005 at 10:23:19 -0500,
>   Scott Marlowe <smarlowe@g2switchworks.com> wrote:
> >
> > My first recommendation would be to put everything into one database.
> > it looks like you've got 6 databases.  If you've still got the template0
> > database, you can probably get rid of that one as well.  If you're not
> > going to need to create any new databases you can maybe drop template1
> > too.
>
> Isn't template0 needed for dumps, since they are relative to template0?

No, it's template1, and you only need it for pg_dumpall.  pg_dump should
still work.

Note that without template1, things like psql -l will fail.  But you can
still connect to the one database you know the name of.