EXPERIMENTAL: use at your own risk!
Python script to perform zabbix dumps.
See full project documentation at https://www.zabbixbackup.com.
Inspired by the project https://github.com/npotorino/zabbix-backup.
pip install zabbixbackup
Create a backup connecting as user postgres
to the db zabbix
with schema zabbix
python -m zabbixbackup psql --host 127.0.0.1 --user postgres --passwd mypassword --database zabbix --schema zabbix
Create a tar archive dump and save standard zabbix configuration files along with it.
python -m zabbixbackup psql --host 127.0.0.1 --passwd mypassword --format tar --save-files
Create a "custom" archive and save it to a backup folder, rotate backups to retain only the last four.
python -m zabbixbackup psql --host 127.0.0.1 --passwd mypassword --format custom --rotate 4
Setup an authentication (.pgpass
) file and use it to login in subsequent call.
python -m zabbixbackup pgsql --host 127.0.0.1 \
--passwd - --keep-login-file --dry-run
[input password]
mv .pgpass /root
python -m zabbixbackup pgsql --host 127.0.0.1 --login-file /root/.pgpass
Setup an authentication (mylogin.cnf
) file and use it to login in subsequent call.
python -m zabbixbackup mysql --host 127.0.0.1 \
--passwd - --keep-login-file --dry-run
[input password]
mv mylogin.cnf /root
python -m zabbixbackup mysql --host 127.0.0.1 --login-file /root/mylogin.cnf
usage: zabbixbackup [-h] {psql,pgsql,mysql} ...
options:
-h, --help show this help message and exit
DBMS:
{psql,pgsql,mysql}
psql (pgsql) (see zabbixbackup psql --help)
mysql (see zabbixbackup mysql --help)
Database engine
Main
--read-zabbix-config
--zabbix-config ZABBIX_CONFIG
--read-mysql-config
(MySQL specific)--mysql-config MYSQL_CONFIG
(MySQL specific)--dry-run
Connection
-
--host HOST
(special for Postgres) -
--sock SOCK
(MySQL specific) -
--schema SCHEMA
(Postgres specific) -
--reverse-lookup
(Not implemented)
Dump action
Dump compression
--pgformat PGFORMAT
(Postgres specific)--pgcompression PGCOMPRESSION
(Postgres specific)--mysqlcompression MYSQLCOMPRESSION
(MySQL specific)
Configuration files
Output
Verbosity
<DBMS> (psql|mysql)
Default: no default (mandatory)
Database engine to use. Either postgresql or mysql (mariasql compatible).
--read-zabbix-config, -z
Default: False
Try to read database host and credentials from Zabbix config. The file is read and parsed trying to collect as much as possible. Every variable collected will be used if not already provided by user arguments.
Implicit if --zabbix-config
is set.
--zabbix-config ZBX_CONFIG, -Z ZBX_CONFIG
Default: /etc/zabbix/zabbix_server.conf
Zabbix configuration file path.
--read-mysql-config, -c
Default: False
Read database host and credentials from MySQL config file.
Implicit if --mysql-config
is set.
--mysql-config MYSQL_CONFIG, -C MYSQL_CONFIG
Default: /etc/mysql/my.cnf
MySQL configuration file path.
Implicit if --read-mysql-config
is set.
--dry-run, -D
Default: False
Do not create the actual backup, only show dump commands. Be aware that the database will be queried for tables selection and folders and files will be created. This is meant only for setup, inspection and debugging.
--host, -H
Default: 127.0.0.1
Hostname/IP of DBMS server, to specify a blank value pass -
.
For postgresql special rules might apply (see Postgres psql
and pg_dump
online documentation for sockets).
--port PORT, -P PORT
Default: 5432
for Postgres, 3306
for MySQL)
Database connection port.
--socket SOCK, -S SOCK
Default: None
Path to MySQL socket file. Alternative to specifying host.
--user USER, -u USER
Default: zabbix
Username to use for the database connection.
--passwd PASSWD, -p PASSWD
Default: None
Database login password. Specify -
for an interactive prompt.
For Postgres, a .pgpass
will be created to connect to the database and then
deleted (might be saved with the backup).
--keep-login-file
Default: False
Do not delete login file (either .pgpass
or mylogin.cnf
) on program exit.
Useful to create the login file and avoid clear password or interactive prompt.
For postgres, the saved file is not hidden (pgpass
).
--login-file LOGINFILE
Default: None
Use this file (either .pgpass
or mylogin.cnf
) for the authentication.
--database DBNAME, -d DBNAME
Default: zabbix
The name of the database to connect to.
--schema SCHEMA, -s SCHEMA
Default: public
The name of the schema to use.
--reverse-lookup, -n
Default: True
(NOT IMPLEMENTED) Perform a reverse lookup of the IP address for the host.
--name
Default: None
Use this name instead of host
while creating the name of the archive.
The name must be alphanumeric, only -
and .
special characters are allowed).
Using this option automatically disable --reverse-lookup
!
--unknown-action {dump,nodata,ignore,fail}, -U {dump,nodata,ignore,fail}
Default: ignore
Action for unknown tables.
Choose dump
to dump the tables fully with definitions. nodata
will include only
the definitions. ignore
will skip the unknown tables. fail
will abort the
backup in case of an unknown table.
--monitoring-action {dump,nodata}, -U {dump,nodata}
Default: nodata
Action for monitoring table.
Choose dump
do dump the tables fully with definitions. nodata
will include only
the definitions.
--add-columns, -N
Default: False
Add column names in INSERT clauses and quote them as needed.
--pgformat PGFORMAT
Default: custom
Dump format, will mandate the file output format.
Available formats: plain, custom, directory, or tar (see postgres documentation).
--pgcompression PGCOMPRESSION
Default: None
Passed as-is to pg_dump
--compress
, might be implied by format (see postgres documentation).
Be aware that the postgres tar
format won't be compressed. In that case you could use --archive
.
--mysqlcompression MYSQLCOMPRESSION
Default: -
Mysql dump compression.
-
to leave the dump uncompressed as is.
Available compression formats are xz
, gzip
and bzip2
.
Use :<LEVEL>
to set a compression.
The compression binary must be available in current shell.
xz
, gzip
, and bzip2
will take precedence and 7z
is used as fallback (might be useful on Windows platforms).
NOTE: on windows platforms this result is a compressed file with CRLF line termination instead of LF.
--save-files
Default: False
Save folders and other files in the backup (see --files).
--files FILES
Default: -
Save folders and other files as listed in this index file.
Non existant will be ignored. Directory structure is replicated (copied via
cp
).
File format: one line per folder or file.
If FILES
is -
then the standard files are selected, i.e:
/etc/zabbix/
and /usr/lib/zabbix/
.
--archive ARCHIVE, -a ARCHIVE
Default: -
Use tar
to create a tar archive.
-
to leave the backup uncompressed as a folder.
Available compression formats are xz
, gzip
and bzip2
.
Use :<LEVEL>
to set a compression level. I.e. --archive xz:6
.
--outdir OUTDIR, -o OUTDIR
Default: .
The destination directory to save the backup to.
--rotate ROTATE, -r ROTATE
Default: 0
Rotate backups while keeping up R
old backups. Uses filenames to find old backups.
0 = keep everything
.
--quiet, -q
--verbose, -v
--very-verbose, -V
--debug
Default: verbose
Don't print anything except unrecoverable errors (quiet),
print informations only (verbose),
print even more informations (very verbose),
print everything (debug).
zabbixbackup psql --help
usage: zabbixbackup psql [-h] [-z] [-Z ZBX_CONFIG] [-D] [-H HOST] [-P PORT]
[-u USER] [-p PASSWD] [--keep-login-file]
[--login-file LOGINFILE] [-d DBNAME] [-s SCHEMA] [-n]
[--name NAME] [-U {dump,nodata,ignore,fail}]
[-M {dump,nodata}] [-N] [-x PGCOMPRESSION]
[-f {plain,custom,directory,tar}] [--save-files]
[--files FILES] [-a ARCHIVE] [-o OUTDIR] [-r ROTATE]
[-q | -v | -V | --debug]
zabbix dump for psql inspired and directly translated from...
options:
-h, --help show this help message and exit
-z, --read-zabbix-config
try to read database host and credentials from Zabbix
config. Implicit if `--zabbix-config` is set.
(default: False)
-Z ZBX_CONFIG, --zabbix-config ZBX_CONFIG
Zabbix config file path. Implicit if `--read-zabbix-
config` is set. (default:
/etc/zabbix/zabbix_server.conf)
-D, --dry-run Do not create the actual backup, only show dump
commands. Be aware that the database will be queried
for tables selection and temporary folders and files
will be created. (default: False)
connection options:
-H HOST, --host HOST hostname/IP of DBMS server, to specify a blank value
pass '-'. If host starts with a slash it's interpreted
as a socket directory. Special rules might apply (see
postgre online documentation for sockets). (default:
127.0.0.1)
-P PORT, --port PORT DBMS port. (default: 5432)
-u USER, --username USER
database login user. (default: zabbix)
-p PASSWD, --passwd PASSWD
database login password (specify '-' for an
interactive prompt). (default: None)
--keep-login-file if a credential file is created (.pgpass) do not
delete it on exit. (default: False)
--login-file LOGINFILE
use '.pgpass' file for the authentication. (default:
None)
-d DBNAME, --database DBNAME
database name. (default: zabbix)
-s SCHEMA, --schema SCHEMA
database schema. (default: public)
-n, --reverse-lookup (NOT IMPLEMENTED) perform a reverse lookup of the IP
address for the host. (default: True)
--name NAME use this name instead of 'host' for the backup name.
(allowed alphanum, -, .) (default: None)
dump action options:
-U {dump,nodata,ignore,fail}, --unknown-action {dump,nodata,ignore,fail}
action for unknown tables. (default: ignore)
-M {dump,nodata}, --monitoring-action {dump,nodata}
action for monitoring table (default: nodata)
-N, --add-columns add column names in INSERT clauses and quote them as
needed. (default: False)
dump level compression options:
-x PGCOMPRESSION, --pgcompression PGCOMPRESSION
passed as-is to pg_dump --compress, might be implied
by format. (default: None)
-f {plain,custom,directory,tar}, --pgformat {plain,custom,directory,tar}
dump format, will mandate the file output format.
(default: custom)
configuration files:
--save-files save folders and other files (see --files). (default:
False)
--files FILES save folders and other files as listed in this file.
One line per folder or file, non existant will be
ignored. Directory structure is replicated (copied via
'cp'). (default: -)
output options:
-a ARCHIVE, --archive ARCHIVE
archive level compression. 'tar' to create a tar
archive, '-' to leave the backup uncompressed as a
folder. Other available formats are xz, gzip and
bzip2. Use ':<LEVEL>' to set a compression level. I.e.
--archive xz:6 (default: -)
-o OUTDIR, --outdir OUTDIR
save database dump to 'outdir'. (default: .)
-r ROTATE, --rotate ROTATE
rotate backups while keeping up 'R' old backups.Uses
filename to match '0=keep everything'. (default: 0)
verbosity:
-q, --quiet don't print anything except unrecoverable errors.
(default: False)
-v, --verbose print informations. (default: True)
-V, --very-verbose print even more informations. (default: False)
--debug print everything. (default: False)
zabbixbackup mysql --help
usage: zabbixbackup mysql [-h] [-z] [-Z ZBX_CONFIG] [-c] [-C MYSQL_CONFIG]
[-D] [-H HOST] [-P PORT] [-S SOCK] [-u USER]
[-p PASSWD] [--keep-login-file]
[--login-file LOGINFILE] [-d DBNAME] [-n]
[--name NAME] [-U {dump,nodata,ignore,fail}]
[-M {dump,nodata}] [-N]
[--mysqlcompression MYSQLCOMPRESSION] [--save-files]
[--files FILES] [-a ARCHIVE] [-o OUTDIR] [-r ROTATE]
[-q | -v | -V | --debug]
zabbix dump for mysql inspired and directly translated from...
options:
-h, --help show this help message and exit
-z, --read-zabbix-config
try to read database host and credentials from Zabbix
config. Implicit if `--zabbix-config` is set.
(default: False)
-Z ZBX_CONFIG, --zabbix-config ZBX_CONFIG
Zabbix config file path. Implicit if `--read-zabbix-
config` is set. (default:
/etc/zabbix/zabbix_server.conf)
-c, --read-mysql-config
Read database host and credentials from MySQL config
file. Implicit if `--mysql-config` is set. (default:
False)
-C MYSQL_CONFIG, --mysql-config MYSQL_CONFIG
MySQL config file path. Implicit if `--read-mysql-
config` is set. (default: /etc/mysql/my.cnf)
-D, --dry-run Do not create the actual backup, only show dump
commands. Be aware that the database will be queried
for tables selection and temporary folders and files
will be created. (default: False)
connection options:
-H HOST, --host HOST hostname/IP of DBMS server, to specify a blank value
pass '-'. (default: 127.0.0.1)
-P PORT, --port PORT DBMS port. (default: 3306)
-S SOCK, --socket SOCK
path to DBMS socket file. Alternative to specifying
host. (default: None)
-u USER, --username USER
database login user. (default: zabbix)
-p PASSWD, --passwd PASSWD
database login password (specify '-' for an
interactive prompt). (default: None)
--keep-login-file if a credential file is created (mylogin.cnf) do not
delete it on exit. (default: False)
--login-file LOGINFILE
use 'mylogin.cnf' file for the authentication.
(default: None)
-d DBNAME, --database DBNAME
database name. (default: zabbix)
-n, --reverse-lookup (NOT IMPLEMENTED) perform a reverse lookup of the IP
address for the host. (default: True)
--name NAME use this name instead of 'host' for the backup name.
(allowed alphanum, -, .) (default: None)
dump action options:
-U {dump,nodata,ignore,fail}, --unknown-action {dump,nodata,ignore,fail}
action for unknown tables. (default: ignore)
-M {dump,nodata}, --monitoring-action {dump,nodata}
action for monitoring table (default: nodata)
-N, --add-columns add column names in INSERT clauses and quote them as
needed. (default: False)
dump level compression options:
--mysqlcompression MYSQLCOMPRESSION
dump level compression. Available formats are xz, gzip
and bzip2. Use ':<LEVEL>' to set a compression level.
I.e. --archive xz:6. See documentation for the
details. (default: gzip:6)
configuration files:
--save-files save folders and other files (see --files). (default:
False)
--files FILES save folders and other files as listed in this file.
One line per folder or file, non existant will be
ignored. Directory structure is replicated (copied via
'cp'). (default: -)
output options:
-a ARCHIVE, --archive ARCHIVE
archive level compression. 'tar' to create a tar
archive, '-' to leave the backup uncompressed as a
folder. Other available formats are xz, gzip and
bzip2. Use ':<LEVEL>' to set a compression level. I.e.
--archive xz:6 (default: -)
-o OUTDIR, --outdir OUTDIR
save database dump to 'outdir'. (default: .)
-r ROTATE, --rotate ROTATE
rotate backups while keeping up 'R' old backups.Uses
filename to match '0=keep everything'. (default: 0)
verbosity:
-q, --quiet don't print anything except unrecoverable errors.
(default: False)
-v, --verbose print informations. (default: True)
-V, --very-verbose print even more informations. (default: False)
--debug print everything. (default: False)