Backup/Restore Config#
The backup and restore configuration options are intentionally identical in nearly all cases. Generally, you can assume any option given for one will be available for the other, except when specifically noted otherwise.
Note
Any configuration defined at this level can also be supplied at the top level, and the values will be shared between backup and restore config.
High level listing of all available config at this level follows:
backup:
url: ... # alternatively, 'connection:'
connections: ...
tables: ...
ddl: ...
logging: ...
sequences: true
data: true
root_location: null
s3: ...
restore:
url: ... # alternatively, 'connection:'
connections: ...
tables: ...
ddl: ...
logging: ...
sequences: true
data: true
root_location: null
s3: ...
url
/ connection
#
Examples below use url
or connection
depending on which makes more sense in
the scenario. In reality, these options are exactly equivalent.
The field name can be any of:
A “url”:
RFC-1738
style connection string (directly routed to SQLAlchemy), or its component parts:url: dialect+driver://username:password@host:port/database
An inline “connection”, broken out by the above url’s component parts:
connection: drivername: dialect+driver username: username password: password host: host port: port database: database
A connection’s name:
connections: foo: dialect+driver://username:password@host:port/database bar: host: host # ... connection: foo # or connection: bar
connections
#
Defaults to []
.
Defines a set of named connection which can be selected to connect to at
command-time. One selects a connection through the CLI
databudgie --connection <name>
.
While this config can coexist with the above url
/connection
config, they are
mutually exclusive at runtime. That is, if a --connection
is supplied, it will
take precedence. If a --connection
is not supplied, the url
/connection
config will be used instead.
connections
can either be given as a list or a mapping, similar to tables
.
# This
connections:
dev: postgresql://localhost:5432
prod:
drivername: postgresql
host: localhost
port: 5432
# Is the same as this.
connections:
- name: dev
url: postgresql://localhost:5432
- name: prod
drivername: postgresql
host: localhost
port: 5432
tables
#
Defaults to []
.
Defines the set of tables (and their config) to be backed up or restored.
Table config can either be given as a list or a mapping, depending on how complex the config is. Specifically giving tables as a mapping makes it impossible to specify a backup of the same table twice (for example with different queries), so using a list is generally preferred.
# This
tables:
public.*:
query: select * from {table}
# Is the same as this.
tables:
- name: public.*
query: select * from {table}
Additionally, if you can omit all other table-specific config (either by giving it at a more general level of specificity, or relying on the default values), you can simply list the tables/globs directly:
tables:
- public.*
- foo.*
ddl
#
The backup/restore of DDL akin to pg_dump
can be enabled, see DDL for
more details.
sequences
#
Defaults to true
.
When true
, backs up or restores all sequences’ positions associated with
matching target tables.
data
#
Defaults to true
.
When true
, records the data returned by query
(table
-level config) or
restores the data.
root_location
#
Defaults to null
.
When specified, all table-level location
values will be made relative to the
root_location
.
manifest
#
A manifest of backup/restore operations over time can be written to, depending on config.
See the Manifest documentation.
s3
#
Any location
field meant to specify where to backup tables to or where to
restore from, can be given either as a local file path, or an S3 path (including
the bucket, like s3://bucket/rest/of/path/
).
When supplying an S3 path as a location
, a supplemental configuration defining
how to authenticate against the bucket is required at either the backup/restore
or global level.
s3:
aws_access_key_id: ...
aws_secret_access_key: ...
region: ...
profile: ...
logging
#
Defaults to enabled: true
and level: INFO
.
Whether and how to configure python logging.
logging:
enabled: true
logging: INFO