Template Version: @(#)sac_nextcase 1.66 04/17/08 SMI
This information is Copyright 2008 Sun Microsystems
1. Introduction
1.1. Project/Component Working Name:
Provide Slony as a replication tool for PostgreSQL on Solaris and
OpenSolaris distributions
1.2. Name of Document Author/Supplier:
Author: Satyanarayana Bodapati
1.3 Date of This Document:
23 June, 2008
4. Technical Description
This information is Copyright 2007 Sun Microsystems
1. Introduction
1.1. Project/Component Working Name:
Slony-1 - Provide Slony as a replication tool for PostgreSQL on
Solaris and OpenSolaris distributions
1.2. Name of Document Author/Supplier:
Satyanarayana Bodapati
1.3. Date of This Document:
2008-06-17
1.4. Name of Major Document Customer(s)/Consumer(s):
1.4.1. The Community you expect to review your project:
Databases
1.4.2. The ARC(s) you expect to review your project:
LSARC
1.5. Email Aliases:
1.5.1. Responsible Manager:
Masood Mortazavi<Masood.Mortazavi at Sun.COM>
1.5.2. Responsible Engineer:
Satya Narayana <satya.bn at sun.com>
1.5.3. Marketing Manager:
Rebecca Hansen <rebecca.hansen at sun.com>
1.5.4. Interest List:
databases-discuss at sun.com
postgresql-techteam at sun.com
sun-postgres-pteam at sun.com
2. Project Summary
2.1. Project Description:
Slony-I is a "master to multiple slaves" replication system
supporting cascading and failover.It is used as replication
service for PostgreSQL Database. This project aims to
provide Slony-I as a part of the Solaris and OpenSolaris
distribution(s).
This project qualifies for micro/patch release binding
2.2. Risks and Assumptions:
It is assumed that porting the Slony1 to Solaris may cause
modifications of the Slony1 code so that it will run properly
on the Solaris platform. The modifications (if any) are
expected to be minor.
3. Business Summary
3.2. Market/Requester:
Slony-I is requirement from the Databases P-Team.
Also requested by BBC and TJAT.
4. Technical Description:
4.1. Details:
Slony-I is a "master to multiple slaves" replication system
supporting cascading and failover.This can be used as
replication service for PostgreSQL database.It can be started
and stopped on an existing database without the need for a
dump/reload cycle. It can be used for 24X7 uptime and workload
distribution.
4.5. Interfaces:
Slony is a replication software that strongly depends on a
specific version of the PostgreSQL RDBMS. As such,
the slony libraries will be placed in the same directory tree
as the corresponding PostgreSQL version. It is an OSS project,
not controlled by Sun, so interface stability can't
be guaranteed.
Exported interfaces:
Interface Stability Comments
------------------------------------------------------------------------
SUNWslony1 Committed Package name
SUNWpostgr-82-slony Committed Package name
SUNWpostgr-83-slony Committed Package name
SUNWslony1-SMF Committed Package name
/usr/postgres/slony Committed Installation dir
/usr/postgres/slony/* Uncommitted Slony product files
/usr/postgres/8.x/lib/slony1_funcs.so Uncommitted PostgreSQL version
dependent library
/usr/postgres/8.x/lib/xxid.so Uncommitted PostgreSQL version
dependent library
/var/slony/ Committed Default data dir
/var/slony/slon.conf Committed Default config file
Imported interfaces:
Interface Stability Comments
-----------------------------------------------------------------------
/usr/postgres/8.2/lib Committed LSARC/2006/655
/usr/postgres/8.3/lib Committed LSARC/2008/004
4.9. I18N/L10N Impact:
The messages produced by Slony are not localized.The locale used is
always en_US.
4.10 Packaging & Delivery
Slony built with particular PostgreSQL Version, works with only
that PostgreSQL version ,i.e. slony built on PostgreSQL 8.2 works
only against PostgreSQL 8.2 as it needs PostgreSQL 8.2 libraries.
So we need to have different slony packages for each PostgreSQL
version. The packaging structure is as below.
We have a single package SUNWslony1 which has common files to all
Slony versions and version dependent packages like
SUNWpostgr-83-slony,SUNWpostgr-82-slony which contains the
version dependent libraries.
SUNWslony1 (common files)
/usr/postgres/slony/bin/slon
/usr/postgres/slony/bin/slonik
/usr/postgres/slony/bin/slony_logshipper
/usr/postgres/slony/share/slony1_base.sql
/usr/postgres/slony/share/slony1_base.v74.sql
/usr/postgres/slony/share/slony1_base.v80.sql
/usr/postgres/slony/share/slony1_base.v81.sql
/usr/postgres/slony/share/slony1_funcs.sql
/usr/postgres/slony/share/slony1_funcs.v74.sql
/usr/postgres/slony/share/slony1_funcs.v80.sql
/usr/postgres/slony/share/slony1_funcs.v81.sql
/usr/postgres/slony/share/xxid.v74.sql
/usr/postgres/slony/share/xxid.v80.sql
/usr/postgres/slony/share/xxid.v81.sql
/usr/postgres/slony/share/slon-tools.pm
/usr/postgres/slony/etc/slon_tools.conf-sample
/usr/postgres/slony/bin/slon_kill*
/usr/postgres/slony/bin/slon_start*
/usr/postgres/slony/bin/slon_watchdog*
/usr/postgres/slony/bin/slon_watchdog2*
/usr/postgres/slony/bin/slonik_build_env*
/usr/postgres/slony/bin/slonik_create_set*
/usr/postgres/slony/bin/slonik_drop_node*
/usr/postgres/slony/bin/slonik_drop_set*
/usr/postgres/slony/bin/slonik_drop_table*
/usr/postgres/slony/bin/slonik_execute_script*
/usr/postgres/slony/bin/slonik_failover*
/usr/postgres/slony/bin/slonik_init_cluster*
/usr/postgres/slony/bin/slonik_merge_sets*
/usr/postgres/slony/bin/slonik_move_set*
/usr/postgres/slony/bin/slonik_print_preamble*
/usr/postgres/slony/bin/slonik_restart_node*
/usr/postgres/slony/bin/slonik_store_node*
/usr/postgres/slony/bin/slonik_subscribe_set*
/usr/postgres/slony/bin/slonik_uninstall_nodes*
/usr/postgres/slony/bin/slonik_unsubscribe_set*
/usr/postgres/slony/bin/slonik_update_nodes*
/usr/postgres/slony/bin/slony_show_configuration*
/usr/postgres/slony/man/man1/slon.1
/usr/postgres/slony/man/man1/slonik.1
/usr/postgres/slony/man/man7/admin_conninfo.7
/usr/postgres/slony/man/man7/cluster_name.7
/usr/postgres/slony/man/man7/create_set.7
/usr/postgres/slony/man/man7/define.7
/usr/postgres/slony/man/man7/drop_listen.7
/usr/postgres/slony/man/man7/drop_node.7
/usr/postgres/slony/man/man7/drop_path.7
/usr/postgres/slony/man/man7/drop_set.7
/usr/postgres/slony/man/man7/drop_trigger.7
/usr/postgres/slony/man/man7/echo.7
/usr/postgres/slony/man/man7/execute_script.7
/usr/postgres/slony/man/man7/exit.7
/usr/postgres/slony/man/man7/failover.7
/usr/postgres/slony/man/man7/include.7
/usr/postgres/slony/man/man7/init_cluster.7
/usr/postgres/slony/man/man7/lock_set.7
/usr/postgres/slony/man/man7/merge_____set.7
/usr/postgres/slony/man/man7/move_set.7
/usr/postgres/slony/man/man7/repair_config.7
/usr/postgres/slony/man/man7/restart_node.7
/usr/postgres/slony/man/man7/set_add_sequence.7
/usr/postgres/slony/man/man7/set_add_table.7
/usr/postgres/slony/man/man7/set_drop_sequence.7
/usr/postgres/slony/man/man7/set_drop_table.7
/usr/postgres/slony/man/man7/set_move_____table.7
/usr/postgres/slony/man/man7/set_move_sequence.7
/usr/postgres/slony/man/man7/sleep.7
/usr/postgres/slony/man/man7/store_____path.7
/usr/postgres/slony/man/man7/store_listen.7
/usr/postgres/slony/man/man7/store_node.7
/usr/postgres/slony/man/man7/store_trigger.7
/usr/postgres/slony/man/man7/subscribe_set.7
/usr/postgres/slony/man/man7/sync.7
/usr/postgres/slony/man/man7/table_add_key.7
/usr/postgres/slony/man/man7/uninstall_node.7
/usr/postgres/slony/man/man7/unlock_set.7
/usr/postgres/slony/man/man7/unsubscribe_set.7
/usr/postgres/slony/man/man7/update_functions.7
/usr/postgres/slony/man/man7/wait_for_event.7
SUNWpostgr-83-slony(slony libraries for PostGres 8.3)
/usr/postgres/8.3/lib/xxid.so
/usr/postgres/8.3/lib/slony1_funcs.so
SUNWpostgr-82-slony (slony libraries for PostGres 8.2)
/usr/postgres/8.2/lib/xxid.so
/usr/postgres/8.2/lib/slony1_funcs.so
SUNWslony-SMF (SMF package for slony)
/var/svc/manifest/application/database/slony/slony.xml
/lib/svc/method/slony
/var/slony/ - default data directory for slony
/var/slony/slon.conf - default location for slony configuration file
The SMF Package for slony starts,stop,refresh a SLON daemon.
Runs slony as postgres user.
Properties to be defined by svcprop command:
config_file - configuration file for slon daemon
data_dir - data directory for storing pid file, log files
cluster_name - name of the cluster (default slony_cluster)
conn_info - connection info for slon daemon (default is
'host=localhost dbname=postgres
user=postgres port=5432')
After providing the above parameters the user can do
svcadm slony start
This starts the slon daemon which is responsible for managing
replication activity for that node by sending/receiving the
configuration events across the cluster.
svcadm slony stop
This stops the slon deamon which inturn stops the replication
of the node.
svcadm slony refresh
This stops and starts slon daemon which allows the slon daemon
to start with new parameters if changed in the configuration file.
Slony package updates are released only for the latest PostgreSQL
version.
4.11. Security Impact
Slony communicates to other nodes by using PostgreSQL libpq library
and can be used with or without SSL.By default postgres clients(slony
nodes) can only establish local Unix Domain Socket connections, and
they have to change the configuration file to open up access further.
4.12. Dependencies:
Package SUNWslony1:
SUNWperl584core Perl 5.8.4 programming language (core)
Package SUNWpostgr-82-slony:
SUNWslony1 Slony-I PostgreSQL replication system
SUNWpostgr-82-server PostgreSQL 8.3 database server
SUNWpostgr-82-libs PostgreSQL 8.3 client libraries
Package SUNWpostgr-83-slony:
SUNWslony1 Slony-I PostgreSQL replication system
SUNWpostgr-83-server PostgreSQL 8.3 database server
SUNWpostgr-83-libs PostgreSQL 8.3 client libraries
Package SUNWslony1-SMF:
SUNWslony1 Slony-I PostgreSQL replication system
5. Reference Documents:
Project Site:
http://www.slony.info/
LSARC/2008/004 "Integrate PostgreSQL version 8.3 into Solaris"
6. Resources and Schedule:
6.1. Projected Availability:
Q4FY08
6.4. Product Approval Committee requested information:
6.4.1. Consolidation or Component Name:
SFW
6.5. ARC review type:
FastTrack
6. Resources and Schedule
6.4. Steering Committee requested information
6.4.1. Consolidation C-team Name:
sfw
6.5. ARC review type: FastTrack
6.6. ARC Exposure: open