Skip to main content

Zabbix database backup utility for postgres and mysql

Project description

Zabbix backup python script

EXPERIMENTAL: use at your own risk!

Python script to perform zabbix dumps.

Inspired by the project https://github.com/npotorino/zabbix-backup.

Install

pip install zabbixbackup

Examples

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

First level CLI

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)

Options documentation and examples

Main

Connection

Dump

Configuration files

Output

Verbosity

Database engine

<DBMS>

Default: no default (mandatory)

Database engine to use. Either postgresql or mysql (mariasql compatible).

Read zabbix configuration

--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 configuration file

--zabbix-config ZBX_CONFIG, -Z ZBX_CONFIG

Default: /etc/zabbix/zabbix_server.conf

Zabbix configuration file path.

Read MySQL configuration (MySQL specific)

--read-mysql-config, -c

Default: False

Read database host and credentials from MySQL config file. Implicit if --mysql-config is set.

MySQL configuration file (MySQL specific)

--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

--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 temporary folders and files will be created. This is meant only for inspection and debugging.

Hostname (special for Postgres)

--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 PORT, -P PORT

Default: 5432 for Postgres, 3306 for MySQL)

Database connection port.

Socket (Mysql specific)

--socket SOCK, -S SOCK

Default: None

Path to MySQL socket file. Alternative to specifying host.

Username

--user USER, -u USER

Default: zabbix

Username to use for the database connection.

Password

--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

--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.

Login file

--login-file LOGINFILE

Default: None

Use this file (either .pgpass or mylogin.cnf) for the authentication.

Database name

--database DBNAME, -d DBNAME

Default: zabbix

The name of the database to connect to.

Database schema (Postgres specific)

--schema SCHEMA, -s SCHEMA

Default: public

The name of the schema to use.

Reverse lookup

--reverse-lookup, -n

Default: True

(NOT IMPLEMENTED) Perform a reverse lookup of the IP address for the host.

Unknown tables action

--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 tables action

--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

--add-columns, -N

Default: False

Add column names in INSERT clauses and quote them as needed.

Save configuration files

--save-files

Default: True

Save folders and other files in the backup (see --files).

File index to save with the backup

--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/.

Postgres dump compression

--compression COMPRESSION

Default: None

Passed as-is to pg_dump --compress, might be implied by format.

Postgres dump format

--format FORMAT

Default: 'custom'

Dump format, will mandate the file output format.

Available formats: plain, custom, directory, or tar (see postgres documentation).

Backup archive format

--archive ARCHIVE, -a ARCHIVE

Default: '-'

Backup archive format. '-' to leave the backup uncompressed as a folder.

Available formats are xz, gzip and bzip2. Use :<LEVEL> to set a compression level. I.e. --archive xz:6.

Output directory

--outdir OUTDIR, -o OUTDIR

Default: '.'

The destination directory to save the backup to.

Backup rotation

--rotate ROTATE, -r ROTATE

Default: '0'

Rotate backups while keeping up 'R' old backups. Uses filenames to find old backups. 0 = keep everything.

Verbosity

--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).

Postgres SQL: second level CLI

zabbixbackup psql --help

usage: zabbixbackup psql [-h] [-z] [-Z ZBX_CONFIG] [-D] [-H HOST] [-P PORT]
                         [-u USER] [-p PASSWD] [-d DBNAME] [-s SCHEMA] [-n]
                         [-U {dump,nodata,ignore,fail}] [-M {dump,nodata}]
                         [-N] [--save-files] [--files FILES] [-x COMPRESSION]
                         [-f {plain,custom,directory,tar}] [-r ROTATE]
                         [-o OUTDIR] [-q | -v | -V | --debug]

options:
  -h, --help
  -z, --read-zabbix-config
  -Z ZBX_CONFIG, --zabbix-config ZBX_CONFIG
  -D, --dry-run

connection options:
  -H HOST, --host HOST
  -P PORT, --port PORT
  -u USER, --username USER
  -p PASSWD, --passwd PASSWD
  --keep-login-file
  --login-file
  -d DBNAME, --database DBNAME
  -s SCHEMA, --schema SCHEMA
  -n, --reverse-lookup

dump options:
  -U {dump,nodata,ignore,fail}, --unknown-action {dump,nodata,ignore,fail}
  -M {dump,nodata}, --monitoring-action {dump,nodata}
  -N, --add-columns

configuration files:
  --save-files
  --files FILES

output options:
  -a ARCHIVE, --archive ARCHIVE
  -x COMPRESSION, --compression COMPRESSION
  -f {tar,plain,custom,directory}
  -r ROTATE, --rotate ROTATE
  -o OUTDIR, --outdir OUTDIR

verbosity:
  -q, --quiet
  -v, --verbose
  -V, --very-verbose
  --debug

MySQL: second level CLI

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] [-d DBNAME] [-n]
                          [-U {dump,nodata,ignore,fail}] [-M {dump,nodata}]
                          [-N] [--save-files] [--files FILES] [-r ROTATE]
                          [-o OUTDIR] [-q | -v | -V | --debug]

options:
  -h, --help
  -z, --read-zabbix-config
  -Z ZBX_CONFIG, --zabbix-config ZBX_CONFIG
  -c, --read-mysql-config
  -C MYSQL_CONFIG, --mysql-config MYSQL_CONFIG
  -D, --dry-run

connection options:
  -H HOST, --host HOST
  -P PORT, --port PORT
  -S SOCK, --socket SOCK
  -u USER, --username USER
  -p PASSWD, --passwd PASSWD
  --keep-login-file
  --login-file
  -d DBNAME, --database DBNAME
  -n, --reverse-lookup

dump options:
  -U {dump,nodata,ignore,fail}, --unknown-action {dump,nodata,ignore,fail}
  -M {dump,nodata}, --monitoring-action {dump,nodata}
  -N, --add-columns

configuration files:
  --save-files
  --files FILES

output options:
  -a ARCHIVE, --archive ARCHIVE
  -r ROTATE, --rotate ROTATE
  -o OUTDIR, --outdir OUTDIR

verbosity:
  -q, --quiet
  -v, --verbose
  -V, --very-verbose
  --debug

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

zabbixbackup-0.0.1b4.tar.gz (32.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

zabbixbackup-0.0.1b4-py3-none-any.whl (32.2 kB view details)

Uploaded Python 3

File details

Details for the file zabbixbackup-0.0.1b4.tar.gz.

File metadata

  • Download URL: zabbixbackup-0.0.1b4.tar.gz
  • Upload date:
  • Size: 32.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.1

File hashes

Hashes for zabbixbackup-0.0.1b4.tar.gz
Algorithm Hash digest
SHA256 75c3bec6c01c767995a78b5beaf8329ce600e07002dd05f6df94d0c0b980f1dd
MD5 9091c8b59ccb6693d6be9b18cc95df6a
BLAKE2b-256 fc593f28e416f6689e6056bb9e5bebdad415c41752bebb480c4cb097912bd415

See more details on using hashes here.

File details

Details for the file zabbixbackup-0.0.1b4-py3-none-any.whl.

File metadata

  • Download URL: zabbixbackup-0.0.1b4-py3-none-any.whl
  • Upload date:
  • Size: 32.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.1

File hashes

Hashes for zabbixbackup-0.0.1b4-py3-none-any.whl
Algorithm Hash digest
SHA256 4aa10082dd0e619c6b04335c8a0c62112477ffced06db12d9463be8f23c739ed
MD5 a7acc2924e0b94bb3882b1776e8a1400
BLAKE2b-256 0d5b199518060686147644fb0bbd3e138f5fe760ec651c65620448f28d15264f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page