Fri Jun 6 15:38:49 PDT 2008
- Previous message: [Slony1-general] Re: how to add a new table to an existing replication set ?
- Next message: [Slony1-general] Vertical table split (aka "slony please ignore this delete")? Or...
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Well, just wanted to say "Thank you" to Slony authors, and also
report, that after a 3 evenings of docreading, about 4 hours
of actual "write plan + write scripts + run them" work, and
about 3 hours of waiting, I managed to:
- upgrade two databases from postgresql 8.1 to 8.3 using slony to
migrate the data without downtime
- setup slony replication to backup machine and actually replicate
my ~1.5GB database over WAN
A few observations/remarks/suggestions:
- perl tools are helpful, as it is easier to patch scripts than to
write them from scratch, but are often very stupid. One should
always review what they generated and correct it before running.
For example:
- slonik_create_set defaults to public. schema wherever the tables truly are
- slonik_init_cluster does not handle "the same database is achieved by
different means from different places" config (perfectly
handled by slonik)
- slonik_init_cluster generates store path for all database pairs, even if
given databases are totally unrelated (are not in the same
set)
- no script uses DEFINE and INCLUDE
- databases running on the same machine (but different ports) get the
same comment
- I could run slon deamon directly from slon_tools.conf, but in no way
could generate slon.conf from slon_tools.conf
- I applied the following policy (which helped me noticeably, I feel):
- always review and edit what slonik_* scripts produced before running
- use slonik_print_preamble to create preamble file, add there DEFINEs
for all node and sets identifiers, then include this file to every
script and use @identifiers instead of constants
- always read the reference doc for every instruction slonik_* scripts
suggested
- use non-overlapping numeric identifiers (so my nodes are 1,2,3,...;
my sets are 11,21,31, ...; my tables are 101, 102, .. (in set 11),
201, 202 (in set 21), ... - this way in most cases I can deduce
from the number itself what does it mean
{ I understand that numeric ids are used for performance reasons,
applying such a convention and using DEFINEs in docs would make
them noticealby less criptic }
- error messages are good and helpful, but one really should read docs
and have some picture of things
- reference doc (slonik instrucitons etc) is very good, but introductory
doc is worse - there are noticeable fragments clearly related to
obsolete/legacy functionality, pgbench replication example is
oversimplified and can't be used as basis for true plan, discussions
about alternative techniques are somewhat scattered. Some refresh of
those docs could make sense. I found Readme.Debian, which clearly
enumerated replication steps and named alternatives, to be of great
help, before I found it I felt lost.
{ and yes, it really helps to read reference docs, I recommend it
to those who feel lost }
- most important obstacle I faced while using slony for upgrade was
... slony version mismatch. Simply and just, Debian packaged
slony 1-2-1 with postgres 8.1 and 1-2-13 with 8.3. I managed
to compile 1-2-13 for 8.1, but it required some messing with
packages (downgrading libpq-dev to 8.1-compatible, guessing
some lacking packages configure did not test for - for example
flex and bison, and postgresql-8.1-server-dev)
Not sure whether this is remark to Slony, or maybe to packagers,
but it would make sense to support such upgrades better (for
example, by providing new slony compiled against old database).
Slony docs could also mention those preparations in the chapter
about database upgrades.
- at least on Debian and Ubuntu scripts like test_slony_state
(in general, most scripts from tools dir) are not packaged, it could
make sense to check why and recommend packaging them, at least as
samples
- on Debian and Ubuntu for some reason debug=4 is used by default,
filling logs with a lot of useless information
- a few times I found it to be unexpected that different things
happen async (for example, case of moving master, when there
was a few minutes when all bases could not be updated), it would
make sense to mention this in docs (and maybe add some WAITs
in slonik_* generated scripts)
- it was great discovery for me that I need slony_tools.conf only
on admin machine and run slonik only just from there - I feel
that such a picture could be of some help somewhere in docs
- SLONYNODES do not work anymore, there is --config=<> option
in slonik_*
- cluster initialization (/node adding) could install plpgsql
instead o complaining that it is not found
- it would be nice to have a way to make report of the replication
structure (who is pulling which table from whom) and maybe just
regenerate slonik scripts out of the real configuration
- I wanted to configure slony for low-mem, low-io config, mostly
experimented with slon.conf for this. Some example "big fullspeed
site" and "small light site" configs could be nice to have.
- to test whether initial replication has finished I used
simple SELECT from destination table (which was blocked
until initial replication finished). I am curious whether
there is a better way.
- it would be nice if "node ... admin conninfo ..." checked
whether the connection works and reported problems, a few times I
found myself patching some pg_hba.conf while subscribing nodes or
defining sets
Best regards and thanks everybody for this pleasant tool.
--
----------------------------------------------------------------------
| Marcin Kasperski | We want to know as early as possible whether
| http://mekk.waw.pl | the project will succeed. Thus we attack the
| | high-risk areas first. (Martin)
----------------------------------------------------------------------
- Previous message: [Slony1-general] Re: how to add a new table to an existing replication set ?
- Next message: [Slony1-general] Vertical table split (aka "slony please ignore this delete")? Or...
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Slony1-general mailing list