PG_STAGING(1) | [FIXME: manual] | PG_STAGING(1) |
NAME¶
pg_staging - Prepare a staging environment from http accessible backupsSYNOPSIS¶
pg_staging [--version] [-c configuration file] [-t tmpdir] [-d debug] [-v verbose] [-q quiet] <command> <dbname> [<date>]DESCRIPTION¶
pg_staging is a tool to prepare and maintain a staging environment from http accessible backups. Its main job (see command restore) is to: 1.create target database, named
dbname_YYYYMMDD
2.add this database to the pgbouncer setup,
reload pgbouncer
3.fetch a backup file named dbname.date
-I.dump
4.prepare a filtered catalog for the given
dump, depending on configuration
5.given sql_path and a pre directory, psql -f
*.sql in there
6.
pg_restore the backup with the custom catalog to the created database
7.if restore_vacuum is true, VACUUM ANALYZE
the database
8.given sql_path setup and a post directory,
psql -f *.sql in there
9.switch pgbouncer entry for dbname to target
dbname_YYYYMMDD and reload pgbouncer again.
DEPENDENCIES¶
pg_staging will use the following external tools:•
pgbouncer in order to maintain more than one staging database
•
pg_restore which major version must match target database cluster
•
scp to upload new pgbouncer.ini configuration files
•
ssh to run the staging-client.sh on the target host
INITIAL SETUP¶
In order for pg_staging to be able to manage any target you give it, the following conditions have to be met: 1.install staging-client.sh on the target
host
Currently you have to ssh non interactively (setup a password free ssh key
authentication) to the target host. pg_staging will run the following command:
ssh <host> sudo ./staging-client.sh <pgbouncer.xxxx.ini> <pgbouncer_port>
2.install and open pgbouncer
"trust" connection as maintenance user (dbuser) on the maintenance
database (maintdb).
This connection will get used to CREATE DATABASE and DROP DATABASE.
COMMANDS¶
commandsThis will show available commands and a
docstring for each.
main operation¶
init <dbname>Prepare a cluster given a pg_dumpall -g file,
see option dumpall_url.
dump <dbname> [<filename>]
dump given database to file, using pg_dump in
custom format. The pgbouncer_port is used and the filename defaults to
dbname.YYYYMMDD.dump. The pg_restore directory part is considered for finding
the pg_dump binary. This command will prevent you from overwriting an existing
dump file, see redump if you do not want this behavior.
redump <dbname> [<filename>]
dump even when destination filename already
exists.
restore <dbname> [<YYYYMMDD>]
See description section, it explains the
details. It may be of importance to recall that restore will clean up its
temporary files, including the dump file itself. The clean up happens in case
of success and in case of error. This command will source pre and post sql
files, as per sql_path config.
drop <dbname> [<YYYYMMDD>]
Change the canonical <dbname> entry in
pgbouncer to point to given dated instance, default to today’s
one.
purge <dbname>
Clean the database section by dropping out the
older databases and keeping online only the keep_bases most recent.
vacuumdb <dbname> [<YYYYMMDD>]
VACUUM ANALYZE given database.
load <dbname> <filename>
Only fetch the dump, do not restore it, do not
remove it afterwards.
presql <dbname> [<YYYYMMDD>]
Source the sql_path/pre/*.sql files into the
database by means of psql -f, in alphabetical order, without recursive
walking into subdirs.
postsql <dbname> [<YYYYMMDD>]
Source the sql_path/post/*.sql files into the
database by means of psql -f, in alphabetical order, without recursive
walking into subdirs.
listings¶
databasesShow the list of database sections parsed into
the .ini file.
backups <dbname> [<YYYYMMDD>]
Show <dbname> available backups on the
http host.
dbsize <dbname> [<YYYMMDD>]
Show database size of given instance, as
returned by SELECT pg_size_pretty(pg_database_size(dbname_YYYYMMDD));
dbsizes --all | --match <pattern> | <dbname>
Show database sizes of given instances. With
--all show sizes of all instances of all configured section, with --match you
can reduce the listing to regexp matching section names, with a <dbname>
it’ll show sizes of all instances of given section.
show <dbname> [<YYYYMMDD>] <setting>
Show current value of <setting> for
given database.
pgbouncer¶
pgbouncer <dbname>Show pgbouncer database listing for given
dbname.
pause <dbname> [<YYYMMDD>]
Issue a pgbouncer pause <dbname>
command.
resume <dbname> [<YYYMMDD>]
Issue a pgbouncer resume <dbname>
command.
londiste¶
londiste <dbname> [<YYYMMDD>]Prepare londiste configuration files in
TMPDIR, then send them over to the provider hosts in ~pgstating/londiste and
start the daemons (pgqadm.py and londiste.py).
remote service management¶
Note that all actions (start, stop, restart, status) are not available to all services (londiste, ticker, pgbouncer). start <service> <dbname> [<YYYMMDD>]Start remote service for given dbname, where
service is one of londiste, ticker, or pgbouncer.
stop <service> <dbname> [<YYYMMDD>]
Stop remote service for given dbname, where
service is one of londiste, ticker, or pgbouncer.
restart <service> <dbname> [<YYYMMDD>]
Restart remote service for given dbname, where
service is one of londiste, ticker, or pgbouncer.
status <service> <dbname> [<YYYMMDD>]
Show status remote service for given dbname,
where service is one of londiste, ticker, or pgbouncer.
experimental and internal¶
nodataShow tables we want to skip loading DATA for,
those we are a subscriber of.
catalog
Show the filtered out catalog we’ll give
to pg_restore -L.
triggers
Show the schema-qualified functions used by
triggers, in order to be able to follow dependancies when filtering out a
schema definition (such as pgq or londiste).
OPTIONS¶
Usage: pg_staging.py [-c <config_filename>] command dbname <args>
Options: -h, --help show this help message and exit --version show pg_staging version -c CONFIG, --config=CONFIG configuration file, defauts to /etc/hm- tools/pg_staging.ini -n, --dry-run simulate operations, don´t do them -v, --verbose be verbose and about processing progress -q, --quiet be terse, almost silent -d, --debug provide python stacktrace when error -t TMPDIR, --tmpdir=TMPDIR temp dir where to fetch dumps, /tmp
CONSOLE¶
If you start pg_staging without command, it will open up an interactive console with basic readline support. All previous commands are supported, except for the experimental ones, and the following are added. config <filename>read given filename as the current
configuration file for pg_staging.
set <section> <option> <value>
set given option to given value for current
interactive session only.
get <section> <option>
print current value of given option.
verbose
switch on and off the verbosity of
pg_staging.
INTERNALS¶
How we use tools. Will get expanded if questions arise.SEE ALSO¶
pg_staging(5)AUTHOR¶
pg_staging is written by Dimitri Fontaine < dim@tapoueh.org[1]>.NOTES¶
- 1.
- dim@tapoueh.org
mailto:dim@tapoueh.org
11/24/2009 | [FIXME: source] |