Re: best practices for separating data and logs

From: Chris Browne <cbbrowne(at)acm(dot)org>
To: pgsql-admin(at)postgresql(dot)org
Subject: Re: best practices for separating data and logs
Date: 2008-01-02 19:48:37
Message-ID: 601w90c8kq.fsf@dba2.int.libertyrms.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-admin

tgl(at)sss(dot)pgh(dot)pa(dot)us (Tom Lane) writes:
> "Peter Koczan" <pjkoczan(at)gmail(dot)com> writes:
>> I'm planning a lot of changes for migrating to PostgreSQL 8.3, among
>> them being a better way of separating data and logs (transaction logs,
>> that is).
>
>> Currently, the OS and log data are on one disk system, and the data
>> (including configs) are on the other disk system. After creating the
>> database cluster, I copy the pg_xlog directory to the OS system and
>> symlink it from the database.
>
>> So, I'm wondering...
>
>> - Are there any best practices, or better practices, than symlinking?
>
> I believe 8.3's initdb has an explicit option for making pg_xlog be a
> symlink to someplace. The results aren't different from doing it
> manually, but it saves a step (and a chance for mistake).

Yes, indeed.

-X, --xlogdir=XLOGDIR location for the transaction log directory

I had not been aware of this one; this seems like a nice feature to
add support for in an init script...

We've been using an init script that offers a whole bunch of options,
originally due to Drew Hammond.

These days, the actions offered are thus:
[start|reload|stop|env|mkdir|initdb|logtail]

start/stop/reload are pretty traditional. The other options are
pretty interesting, particularly for cases where you might want to:

- Frequently create databases from scratch, as when testing
CVS HEAD
- Alternatively, to help establish common policies, for the "less
frequent" cases.

env: Sets up PATH, MAN_PATH, PGPORT with the values used by
the backend in "this" init file

mkdir: Sets up all the directories required both for DB backend and
for logging

logtail: runs "tail -f" on the last log file for the cluster

initdb: Runs initdb, pointing at particular directories, and with
particular configuration policy.

I have recently augmented this by making it smart enough to
rewrite the postgresql.conf file (using sed) to establish
default values for a dozen or so options that tend to get
customized with fairly common values.

In effect, the entire cluster configuration gets set up in
about a 10-line section near the top of the script.

Adding in an option to redirect pg_xlog seems like a mighty
fine idea; I know that on various occasions, I have had the
irritation of building clusters and having to go to some
fragile manual effort to shift pg_xlog somewhere else.

Automating THAT seems like it's a "no-brainer" as far as
being an excellent idea...

I probably ought to ask around for permission to release this; it
seems like it's probably useful enough (I have been using it a lot)
that it ought to be in a CVS repository somewhere, rather than
languishing on my desktop.
--
(format nil "~S(at)~S" "cbbrowne" "linuxfinances.info")
http://linuxdatabases.info/info/linuxxian.html
I am not a Church numeral!
I am a free variable!

In response to

Responses

Browse pgsql-admin by date

  From Date Subject
Next Message Bernhard D Rohrer 2008-01-02 20:49:41 Re: pg recovery
Previous Message Naomi Walker 2008-01-02 18:48:44 Re: Performance tuning...