Contents
PgBackMan es una herramienta para administar copias de seguridad lógicas de bases de datos PostgreSQL creadas con pg_dump y pg_dumpall.
Está diseñada para administrar copias de seguridad de miles de bases de datos, ejecutandose en múltiples servidores PostgreSQL, y soporta una topologia con múltiples servidores de backups.
También administra la información relacionada con roles y configuración asociada cuando crea una copia de seguridad de una base de datos. Esta información es necesaria para garantizar una restauración completa de una copia de seguridad lógica y todos los elementos asociados a la misma.
Aunque una copia de seguridad creada con pg_dump o pg_dumpall no puede garantizar una restauración completa de todos los datos modificados entre el momento que se creo la copia de seguridad y el momento de un futuro desastre con perdida de datos, son necesarias si queremos archivar una versión de una base de datos, mover bases de datos entre servidores postgreSQL, clonar bases de datos entre servidores de producción, pre-producción y desarrollo, o extraer los datos de una base de datos en particular después de una restauración PITR.
Las copias de seguridad lógicas son también una manera fácil de crear copias de bases de datos que no necesiten copias de seguridad PITR (Point in time recovery).
PgBackMan no es una herramienta para administrar copias de seguridad PITR. Existen otras soluciones para administrar estas copias, como por ejemplo PITRTools, OmniPITR, y Barman.
El código de PgBackMan está distribuido bajo una licencia "GNU General Public License 3" y está escrito en Python y PL/PgSQL. Ha sido desarrollado y comprobado por miembros del "Grupo de operaciones con bases de datos" del "Centro de tecnologias de la información" en la Universidad de Oslo.
Un ejemplo de un sistema que use PgBackMan puede verse en la siguiente figura:
Las características principales de PgBackMan son:
Los componentes que forman parte de PgBackman están listados a continuación:
La siguiente figura mustra todos lo componentes que forman parte de PgBackMan y como interaccionan entre ellos.
Tendreis que instalar PgBackMan en todas las máquinas que vayan a ser usadas como servidores de backups por PgBackMan.
Antes de instalar PgBackMan hay que instalar los programas requeridos por el mismo.
En sistemas que usen yum, e.g. Centos, RHEL, ...:
yum install python-psycopg2 python-argparse at cronie
En sistemas que usen apt-get, e.g. Debian, Ubuntu, ...:
apt-get install python-psycopg2 python-argparse at cron
Si vais a instalar PgBackMan usando las fuentes, tendreis que instalar tambien estos paquetes: python-dev(el), python-setuptools, git, make, rst2pdf
En sistemas que usen yum:
yum install python-devel python-setuptools git make rst2pdf
en sistemas que usen apt-get:
apt-get install python-dev python-setuptools git make rst2pdf
La manera más fácil de instalar PgBackMan desde las fuentes es conseguir la última versión de la rama master en el repositorio GitHub.
[root@server]# cd [root@server]# git clone https://github.com/rafaelma/pgbackman.git [root@server]# cd pgbackman [root@server]# ./setup2.py install --install-scripts=/usr/bin .....
Esto instalará todos los usuarios, grupos, programas, archivos de configuración y el módulo de python pgbackman en tu sistema.
Paquetes RPM para CentOS 6/7 y RHEL6/7 están disponibles en: http://www.pgbackman.org/download.html
Instalar el paquete RPM con:
[root@server]# rpm -Uvh pgbackman-<version>.rpm
Nota: Estamos trabajando para incluir los paquetes RPM de PgBackMan en el repositorio oficial de PostgreSQL.
Paquetes Deb para Debian7 están disponibles en: http://www.pgbackman.org/download.html
Instalar el paquete Deb con:
[root@server]# dpkg -i pgbackman_<version>.deb
Nota: Estamos trabajando para incluir los paquetes DEB de PgBackMan en el repositorio oficial de PostgreSQL.
Despues de instalar el software PgBackMan hay que instalar la base de datos pgbackman en un servidor PostgreSQL. Esta base de datos es el núcleo de la herramienta PgBackMan y es utilizada para grabar todos los metadatos necesarios para que el sistema funcione.
El código de esta base de datos se puede obtener del directorio sql/ en el código fuente de PgBackMan o del directorio /usr/share/pgbackman si has instalado PgBackMan desde las fuentes o paquetes rpm o deb.
Para instalar la base de datos pgbackman por primera vez podeis usar este comando:
psql -h <dbhost.domain> -f /usr/share/pgbackman/pgbackman.sql
Antes de empezar a usar el sistema es recomendable actualizar los valores por defecto de algunas parámetros de configuración. Los valores de estos parámetros serán utilizados como valores por defecto en la configuración de los servidores registrados en PgBackman.
Recomendamos actualizar estos tres parámetros con los valores que querais tener en vuestra instalación PgBackMan:
UPDATE pgsql_node_default_config SET value = 'address@your.domain' WHERE parameter = 'logs_email'; UPDATE pgsql_node_default_config SET value = 'your.domain' WHERE parameter = 'domain'; UPDATE backup_server_default_config SET value = 'your.domain' WHERE parameter = 'domain';
Estos valores son solamente los valores por defecto sugeridos cuando se registra un nuevo servidor de backups og nodo PgSQL. En cualquier momento se podrán actualizar usando el shell PgBackMan.
Esta sección contiene información sobre el proceso de actualización a una nueva versión de PgBackMan cuando ya se ha estado usando PgBackMan con anterioridad.
Para actualizar PgBackMan hay que hacer dos cosas:
Para evitar problemas en el proceso de actualización existen una serie de requisitos que hay que tener en cuenta cuando vayamos a realizar esta tarea.
El procedimiento recomendado de actualización a una nueva versión seria el siguiente:
Asegurarse que ninguna copia de seguridad sea ejecutada durante la actualización.
Recomendamos tener, por ejemplo, una ventana de mantenimiento de 30 minutos al dia, a la semana o al mes en donde no existan definiciones de backup para el periodo elegido. De esta manera podreis ejecutar el proceso de actualización durante esta ventana de mantenimiento sin necesidad de tener en cuenta si alguna copia de seguridad se empezará a ejecutar durante la actualización.
Para estar seguros, parar crond, atd, pgbackman_control y pgbackman_maintenance con estos comandos:
[root@pg-backup01]# /etc/init.d/pgbackman stop [root@pg-backup01]# /etc/init.d/crond stop [root@pg-backup01]# /etc/init.d/atd stop
Esto habra que realizarlo en todos los servidores de backup que tengan PgBackMan instalado.
Comprobar que no estais ejecutando ninguna copia de seguridad o restauración de datos:
[root@pg-backup01]# ps ax | egrep "pgbackman_dump|pgbackman_restore"
Si estais ejecutando procesos PgBackMan de copias o restauración tendreis que esperar a que terminen o pararlos si no os importa perderlos.
Actualizar el software PgBackMan con vuestro metodo favorito, desde las fuentes o desde paquetes rpm o deb. Consultar la sección sobre instalación de este manual para más información.
Comprobar que teneis la nueva versión del fichero de configuración grabada como /etc/pgbackman/pgbackman.conf y que tenga definida la información sobre la base de datos pgbackman.
Arrancar el shell pgbackman y seguir las instrucciones para actualizar la base de datos pgbackman:
[pgbackman@pg-backup01]# pgbackman ################# A T T E N T I O N ################# The PgBackMan software version [2:v_1_1_0] is different from the PgBackMan database version [1:v_1_0_0]. # Do you want to upgrade the PgBackMan database to version: [2:v_1_1_0] (yes/no): yes ############################ Upgrading PgBackMan database ############################ [OK]: File: /usr/share/pgbackman/pgbackman_2.sql exists. [OK]: File /usr/share/pgbackman/pgbackman_2.sql installed. #################################################################### Welcome to the PostgreSQL Backup Manager shell ver.1.1.0 #################################################################### Type help or \? to list commands. [pgbackman]$ show_pgbackman_config +----------------------------+----------------------------------+ | Software version: | [2]:1_1_0 | | Configuration file used: | /etc/pgbackman/pgbackman.conf | | | | | PGBACKMAN DATABASE | | | DBhost: | pgbackmandb.example.net | | DBhostaddr: | | | DBport: | 5432 | | DBname: | pgbackman | | DBuser: | pgbackman_role_rw | | Connection retry interval: | 10 sec. | | | | | Database source dir: | /usr/share/pgbackman | | DB version installed: | 2014-09-25 10:46:52.078875+00:00 | | DB version: | [2]:1_1_0 | | | | | PGBACKMAN_DUMP | | | Temp directory: | /tmp | | | | | PGBACKMAN_MAINTENANCE | | | Maintenance interval: | 70 sec. | | | | | LOGGING | | | Log level: | DEBUG | | Log file: | /var/log/pgbackman/pgbackman.log | +----------------------------+----------------------------------+
Después de haber actualizado la base de datos pgbackman, arrancar crond, atd, pgbackman_control y pgbackman_maintenance:
[root@pg-backup01]# /etc/init.d/pgbackman start [root@pg-backup01]# /etc/init.d/crond stop [root@pg-backup01]# /etc/init.d/atd stop
Usar PgBackMan con normalidad.
Un servidor de backups necesita tener acceso a la base de datos pgbackman y a todos los nodos PgSQL en los cuales tenga que realizar copias de seguridad o restauración de datos.
A continuación teneis los pasos a seguir para configurar un servidor de backups en PgBackMan:
Actualizar /etc/pgbackman/pgbackman.conf con los parámetros necesarios por PgBackMan para acceder la base de metadatos pgbackman. Hay que definir host o hostaddr, port, dbname, user en la seción [pgbackman_database].
También se puede definir password en esta sección, pero desaconsejamos el uso de este parámetro en este archivo y recomendamos crear un archivo .pgpass en el directorio personal (home) de los usuarios root y pgbackman con esta información:
<dbhost.domain>:5432:pgbackman:pgbackman_role_rw:<PASSWORD>
No olvidar definir los privilegios de este archivo con chmod 400 ~/.pgpass.
Una solución aun mejor seria el uso de la autentificación de tipo cert para el usuario usado para acceder la base datos pgbackman. De esta manera evitariamos el tener que grabar los valores de las claves en texto plano.
Actualizar y recargar el archivo pg_hba.conf en el servidor PostgreSQL ejecutando la base de datos pgbackman. Recomendamos usar una conexión SSL para cifrar el trafico entre el servidor de backup y la base de datos.:
hostssl pgbackman pgbackman_role_rw <backup_server_IP>/32 md5
Instalar los clientes PostgreSQL para todas la versiones de PostgreSQL que querais soportar en el servidor de backups. PgBackMan puede realizar copias de seguridad de PostgreSQL siempre y cuando la versión del nodo PgSQL sea mayor o igual a 9.0. Recomendamos utilizar los repositorios de PostgreSQL.org, http://yum.postgresql.org/ o http://apt.postgresql.org/ para instalar los paquetes cliente para las diferentes versiones.
Definir el servidor de backups en PgBackMan via el shell PgBackMan:
[pgbackman@pg-backup01 ~]# pgbackman ######################################################## Welcome to the PostgreSQL Backup Manager shell (v.1.1.0) ######################################################## Type help or \? to list commands. [pgbackman]$ register_backup_server -------------------------------------------------------- # Hostname []: pg-backup01 # Domain [uio.no]: # Remarks []: Main backup server # Are all values correct (yes/no): yes -------------------------------------------------------- [Done] [pgbackman]$ show_backup_servers +-------+------------------+----------------------+ | SrvID | FQDN | Remarks | +-------+--------------------+--------------------+ | 00001 | pg-backup01.uio.no | Main backup server | +-------+------------------+----------------------+
Comprobar que los parámetros de configuración del servidor de backup están definidos con los valores correctos. Por ejemplo, tendreis que actualizar los valores de los directorios con los programas clientes de PostgreSQL si usais Debian:
[pgbackman]$ update_backup_server_config -------------------------------------------------------- # SrvID / FQDN []: 1 # PgSQL bindir 9.0 [/usr/pgsql-9.0/bin]: /usr/lib/postgresql/9.0/bin # PgSQL bindir 9.1 [/usr/pgsql-9.1/bin]: /usr/lib/postgresql/9.1/bin # PgSQL bindir 9.2 [/usr/pgsql-9.2/bin]: /usr/lib/postgresql/9.2/bin # PgSQL bindir 9.3 [/usr/pgsql-9.3/bin]: /usr/lib/postgresql/9.3/bin # PgSQL bindir 9.4 [/usr/pgsql-9.4/bin]: /usr/lib/postgresql/9.4/bin # PgSQL bindir 9.5 [/usr/pgsql-9.5/bin]: /usr/lib/postgresql/9.5/bin # PgSQL bindir 9.6 [/usr/pgsql-9.6/bin]: /usr/lib/postgresql/9.6/bin # Main backup dir [/srv/pgbackman]: # Are all values to update correct (yes/no): yes -------------------------------------------------------- [Done] Configuration parameters for SrvID: 1 updated. [pgbackman]$ show_backup_server_config -------------------------------------------------------- # SrvID / FQDN: 1 -------------------------------------------------------- +-----------------------+-----------------------------+---------------------------------------------+ | Parameter | Value | Description | +-----------------------+-----------------------------+---------------------------------------------+ | admin_user | postgres | postgreSQL admin user | | backup_server_status | RUNNING | Default backup server status - *Not used* | | domain | example.net | Default domain | | pgbackman_dump | /usr/bin/pgbackman_dump | Program used to take backup dumps | | pgbackman_restore | /usr/bin/pgbackman_restore | Program used to restore backup dumps | | pgsql_bin_9_0 | /usr/lib/postgresql/9.0/bin | postgreSQL 9.0 bin directory | | pgsql_bin_9_1 | /usr/lib/postgresql/9.1/bin | postgreSQL 9.1 bin directory | | pgsql_bin_9_2 | /usr/lib/postgresql/9.2/bin | postgreSQL 9.2 bin directory | | pgsql_bin_9_3 | /usr/lib/postgresql/9.3/bin | postgreSQL 9.3 bin directory | | pgsql_bin_9_4 | /usr/lib/postgresql/9.4/bin | postgreSQL 9.4 bin directory | | pgsql_bin_9_5 | /usr/lib/postgresql/9.5/bin | postgreSQL 9.5 bin directory | | pgsql_bin_9_6 | /usr/lib/postgresql/9.6/bin | postgreSQL 9.6 bin directory | | root_backup_partition | /srv/pgbackman | Main partition used by pgbackman | | root_cron_file | /etc/cron.d/pgbackman | Crontab file used by pgbackman - *Not used* | +-----------------------+-----------------------------+---------------------------------------------+
Crear el directorio o partición en el servidor de backups que será usada para grabar todas las copias de seguridad, archivos de registro y datos de sistema usados por PgBackMan. Por defecto el sistema usará /srv/pgbackman.
Definir los privilegios de este directorio con:
chown -R pgbackman:pgbackman /srv/pgbackman chmod -R 700 /srv/pgbackman
Todos los nodos PgSQL definidos en PgBackMan necesitan actualizar y recargar sus archivos pg_hba.conf para dar acceso al usuario administrador (postgres por defecto) desde todos los servidores de backup definidos en PgBackMan:
hostssl * postgres <backup_server_IP>/32 md5
No olvidar que el archivo .pgpass del usuario pgbackman en los servidores de backups debe de actualizarse también con la información necesaria para acceder todos los nodos PgSQL de los que vamos a realizar copias de seguridad:
<dbhost.domain>:5432:pgbackman:pgbackman_role_rw:PASSWORD <PgSQL node 1>:5432:*:postgres:PASSWORD <PgSQL node 2>:5432:*:postgres:PASSWORD <PgSQL node 3>:5432:*:postgres:PASSWORD ........
Recomendamos usar una conexión SSL para cifrar todo el tráfico entra los nodos PgSQL y los servidores de backups.
Tambien se puede usar la autentificación cert para evitar el tener que grabar los valores de las claves en texto plano.
Por defecto PgBackMan buscará un fichero de configuración válido en estas localizaciones y en este orden, $HOME/.pgbackman/pgbackman.conf, /etc/pgbackman/pgbackman.conf.
Varios parámetros se pueden configurar en este fichero. Los más importantes son host o hostaddr, port, dbname, user en la sección [pgbackman_database].
Podeis consultar el fichero /etc/pgbackman/pgbackman.conf en vuestro sistema para obtener una lista de parametros, para que se usan y sus valores por defecto.
PgBackMan tiene tres componentes que son usados para administar y mantener las copias de seguridad, los snapshots, los trabajos de restauración, las alertas y la información asociada a los nodos PgSQL registrados en el sistema.
Estos componentes se arrancan con el script /etc/init.d/pgbackman y se deben de ejecutar en todos los servidores de backups que estén ejecutando PgBackMan.
Ejecutar este comando despues de instalar y configurar PgBackMan:
[root@server]# /etc/init.d/pgbackman start
Los componentes de PgBackMan se pueden parar con el mismo programa:
[root@server]# /etc/init.d/pgbackman stop
Si quereis que los componentes de PgBackMan se arranquen automáticamente cuando se arranque el servidor, ejecutar este comando si estais en un sistema CentOS o RHEL:
[root@server]# chkconfig pgbackman on
O este comando si estais usando un sistema Debian:
[root@server]# update-rc.d pgbackman defaults
Este programa espera por mensajes NOTIFY enviados por la base de datos pgbackman antes de efectuar ninguna acción. Recibe notificaciones de la base de datos central cuando:
Las acciones que este programa puede ejecutar son:
Cada nodo PgSQL definido en el sistema tiene sus propios directorios para datos y archivos crontab en todos y cada uno de los servidores de backups que esten ejecutando PgBackMan.
Este programa puede ser ejecutado en modo cron (Una sola interacción por ejecución) o en modo continuo (por defecto).
Este programa ejecuta estas tareas de mantenimiento:
Este programa se ejecuta en modo continuo esperando por alertas que tienen que ser mandadas via SMTP.
Cuando una copia de seguridad, snapshot o trabajo de restauración de datos termine con un error, se mandará un correo electrónico a la dirección de correo definida en la configuración (logs_email) del node PgSQL donde ha ocurrido el fallo.
Usar los comandos show_pgsql_node_config y update_pgsql_node_config si necesitais comprobar o definir el valor del parámetro logs_email
pgbackman_alerts no mandará ningún mensaje si no está activado en el fichero de configuración /etc/pgbackman/pgbackman.conf. Comprobar la sección [pgbackman_alerts] para activar y configurar SMTP.
El fichero /etc/pgbackman/pgbackman_alerts.template puede modificarse para definir el contenido del correo electrónico que se mandará con la alerta.
El shell interactivo de PgBackMan se puede acceder ejecutando el programa /usr/bin/pgbackman
[pgbackman@pg-backup01]# pgbackman #################################################################### Welcome to the PostgreSQL Backup Manager shell ver.1.2.0 #################################################################### Type help or \? to list commands. [pgbackman]$ help Documented commands (type help <topic>): ======================================== EOF show_databases_without_backup_definitions clear show_empty_backup_catalogs delete_backup_definition_dbname show_history delete_backup_definition_id show_jobs_queue delete_backup_server show_pgbackman_config delete_pgsql_node show_pgbackman_stats move_backup_definition show_pgsql_node_config quit show_pgsql_node_stats register_backup_definition show_pgsql_nodes register_backup_server show_restore_catalog register_pgsql_node show_restore_definitions register_restore_definition show_restore_details register_snapshot_definition show_restores_in_progress set show_snapshot_definitions shell show_snapshots_in_progress show_backup_catalog update_backup_definition show_backup_definitions update_backup_server show_backup_details update_backup_server_config show_backup_server_config update_pgsql_node show_backup_server_stats update_pgsql_node_config show_backup_servers Miscellaneous help topics: ========================== shortcuts support Undocumented commands: ====================== help
NOTA Es posible usar el shell PgBackMan en modo no interactivo ejecutando en el shell del sistema operativo /usr/bin/pgbackman con el parámetro --command <pgbackman_command> o -C <pgbackman_command>. Este metodo puede utilizarse para ejecutar comandos PgBackMan desde shell scripts. e.g.:
[pgbackman@pg-backup01 ~]# pgbackman -C "show_backup_servers" +-------+-------------------------+----------------------+ | SrvID | FQDN | Remarks | +-------+-------------------------+----------------------+ | 00001 | pg-backup01.example.net | Main backup server | +-------+------------------+-----------------------------+ [pgbackman@pg-backup01 ~]# pgbackman -C "show_backup_definitions all all pgbackman" -------------------------------------------------------- # SrvID / FQDN: all # NodeID / FQDN: all # DBname: pgbackman -------------------------------------------------------- +-------------+-----+-------------------------+----+-------------------------+-----------+-------------+--------+------------+--------+------------+ | DefID | ID. | Backup server | ID | PgSQL node | DBname | Schedule | Code | Retention | Status | Parameters | +-------------+-----+-------------------------+----+-------------------------+-----------+-------------+--------+------------+--------+------------+ | 00000000012 | 1 | pg-backup01.example.net | 1 | pgbackmandb.example.net | pgbackman | 41 01 * * * | FULL | 7 days (1) | ACTIVE | | | 00000000011 | 1 | pg-backup01.example.net | 1 | pgbackmandb.example.net | pgbackman | * * * * * | FULL | 7 days (1) | ACTIVE | --inserts | | 00000000013 | 1 | pg-backup01.example.net | 1 | pgbackmandb.example.net | pgbackman | 41 01 * * * | SCHEMA | 7 days (1) | ACTIVE | | +-------------+-----+-------------------------+----+-------------------------+-----------+-------------+--------+------------+--------+------------+
También podemos usar los parámetros --output/-o csv o --output/-o json cuando ejecutemos pgbackman en modo no interactivo para mostrar el resultado del comando en formato JSON o CSV.:
[pgbackman@pg-backup01 ~]# pgbackman -o json -C "show_backup_servers" { "backup_servers": [ { "srvid": "00001", "fqdn": "pg-backup01.example.net", "remarks": "testing" } ] }
Este comando limpia la terminal y muestra una cabecera de bienvenida.
clear
Este comando puede ser ejecutado solamente sin parámetros, e.g.:
[pgbackman]$ clear #################################################################### Welcome to the PostgreSQL Backup Manager shell ver.1.2.0 #################################################################### Type help or \? to list commands. [pgbackman]$
NOTA: Usar este comando con precaución
Este comando borra todas las definiciones de copias de seguridad programadas de una base de datos.:
delete_backup_definition_dbname [NodeID/FQDN] [DBname] [force-deletion]
Parámetros:
Hay que usar el parámetro force-deletion si queremos activar el borrado forzoso de una definición de copia de seguridad que tenga entradas activas en el catálogo. Si se usa force-deletion, todas las copias de seguridad asociadas a la definición borrada serán también borradas del catalogo independientemente del periodo de retención y la redundancia definidas para la definición.
Este comando puede ejecutarse con o sin parámetros.
[pgbackman]$ delete_backup_definition_dbname 1 testdb force-deletion [Done] Backup definition for DBname: testdb deleted with force.
[pgbackman]$ delete_backup_definition_dbname -------------------------------------------------------- # NodeID / FQDN: 1 # DBname: testdb # Force deletion (y/n): y # Are you sure you want to delete this backup definition? (yes/no): yes -------------------------------------------------------- [Done] Backup definition for DBname: testdb deleted with force.
[pgbackman]$ delete_backup_definition_dbname -------------------------------------------------------- # NodeID / FQDN: pg-node01.example.net # DBname: testdb # Force deletion (y/n): n # Are you sure you want to delete this backup definition? (yes/no): yes -------------------------------------------------------- [ERROR]: Could not delete this backup job definition ---------------------------------------------- EXCEPTION: ---------------------------------------------- MESSAGE: update or delete on table "backup_definition" violates foreign key constraint "backup_catalog_def_id_fkey" on table "backup_catalog" DETAIL : Key (def_id)=(1) is still referenced from table "backup_catalog". ----------------------------------------------
NOTA: Usar este comando con precaución
Este comando borra una definición de copia de seguridad con una identificación DefID:
delete_backup_definition_id [DefID] [force-deletion]
Parámetros:
Hay que usar el parámetro force-deletion si queremos activar el borrado forzoso de una definición de copia de seguridad que tenga entradas activas en el catálogo. Si se usa force-deletion, todas las copias de seguridad asociadas a la definición borrada serán también borradas del catalogo independientemente del periodo de retención y la redundancia definidas para la definición.
Este comando puede ejecutarse con o sin parámetros.
[pgbackman]$ delete_backup_definition_id 1 force-deletion [Done] Backup definition for DefID: 1 deleted with force.
[pgbackman]$ delete_backup_definition_id -------------------------------------------------------- # DefID: 1 # Force deletion (y/n): y # Are you sure you want to delete this backup definition? (yes/no): yes -------------------------------------------------------- [Done] Backup definition for DefID: 1 deleted with force.
[pgbackman]$ delete_backup_definition_id -------------------------------------------------------- # DefID: 1 # Force deletion (y/n): n # Are you sure you want to delete this backup definition? (yes/no): yes -------------------------------------------------------- [ERROR]: Could not delete this backup job definition ---------------------------------------------- EXCEPTION: ---------------------------------------------- MESSAGE: update or delete on table "backup_definition" violates foreign key constraint "backup_catalog_def_id_fkey" on table "backup_catalog" DETAIL : Key (def_id)=(1) is still referenced from table "backup_catalog". ----------------------------------------------
Este comando borra un servidor de backups definido en PgBackMan:
Command: delete_backup_server [SrvID | FQDN]
Parámetros:
Se puede usar la ID en PgBackMan o la FQDN para definir el servidor de backup que queremos borrar.
Todas las definiciones de copias de seguridad asociadas a un servidor de backup deben de borrarse o ser asignadas a otro servidor para que se pueda borrar un servidor de backups del sistema.
El sistema generará un error si se intenta borrar un servidor de backups que tenga definiciones de copias de seguridad activas. Esto es una medida de seguridad para evitar errores de operación con consecuencias catastróficas. Este tipo de borrado no puede ser forzado.
Este comando se puede ejecutar con o sin parámetros:
[pgbackman]$ delete_backup_server 2 [Done] Backup server deleted.
[pgbackman]$ delete_backup_server -------------------------------------------------------- # SrvID / FQDN: 2 # Are you sure you want to delete this server? (yes/no): yes -------------------------------------------------------- [Done] Backup server deleted.
[pgbackman]$ delete_backup_server -------------------------------------------------------- # SrvID / FQDN: 2 # Are you sure you want to delete this server? (yes/no): yes -------------------------------------------------------- [ERROR]: Could not delete this backup server ---------------------------------------------- EXCEPTION: ---------------------------------------------- MESSAGE: update or delete on table "backup_server" violates foreign key constraint "backup_definition_backup_server_id_fkey" on table "backup_definition" DETAIL : Key (server_id)=(2) is still referenced from table "backup_definition". ----------------------------------------------
Este comando borra un node PgSQL definido en PgBackMan.
delete_pgsql_node [NodeID | FQDN]
Parámetros:
Todas las definiciones de copias de seguridad asociadas a un nodo PgSQL deben de borrarse antes de borrar un nodo PgSQL del sistema.
El sistema generará un error si se intenta borrar un nodo PgSQL que tenga definiciones de copias de seguridad activas. Esto es una medida de seguridad para evitar errores de operación con consecuencias catastróficas. Este tipo de borrado no puede ser forzado.
Este comando se puede ejecutar con o sin parámetros:
::
[pgbackman]$ delete_pgsql_node 4
[Done] PgSQL node deleted.
[pgbackman]$ delete_pgsql_node -------------------------------------------------------- # NodeID / FQDN: 4 # Are you sure you want to delete this server? (yes/no): -------------------------------------------------------- [Done] PgSQL node deleted.
[pgbackman]$ delete_pgsql_node -------------------------------------------------------- # NodeID / FQDN: 4 # Are you sure you want to delete this server? (yes/no): yes -------------------------------------------------------- [ERROR]: Could not delete this PgSQL node ---------------------------------------------- EXCEPTION: ---------------------------------------------- MESSAGE: update or delete on table "pgsql_node" violates foreign key constraint "backup_definition_pgsql_node_id_fkey" on table "backup_definition" DETAIL : Key (node_id)=(4) is still referenced from table "backup_definition". --------------------------------------------
Este comando mueve definiciones de copias de seguridad entre servidores de backup en PgBackman basandose en una combinación de valores.
move_backup_definition [From SrvID|FQDN] [To SrvID|FQDN] [NodeID|FQDN] [DBname] [DefID]
Parámetros:
[From SrvID | FQDN]: SrvID en PgBackMan o FQDN del servidor de backups a cargo de los trabajos de backups que queremos mover.
[To SrvID | FQDN]: SrvID en PgBackMan o FQDN del servidor de backups donde queremos mover los trabajos de backups.
[NodeID | FQDN]: NodeID en PgBackMan o FQDN del nodo PgSQL donde se ejecutan los backups que queremos mover.
Con este comando se pueden utilizar los valores 'all' o '*'.
[Dbname]: Nombre de la base de datos en los trabajos de backup que queremos mover.
Con este comando se pueden utilizar los valores 'all' o '*'.
**[DefID]: ID de la definicion de backup que queremos mover.
Los valores por defecto de un parámetro se enseñan entre corchetes``[]``. Si el usuario no define ningún valor, PgBackMan utilizará el valor por defecto.
Este comando se puede ejecutar con o sin parámetros, e.g.:
[pgbackman]$ move_backup_definition pg-backup01.example.net pg-backup02.example.net * * '' [DONE] Moving backup definitions from backup server [pg-backup01.example.net] to backup server [pg-backup02.example.net]
[pgbackman]$ move_backup_definition -------------------------------------------------------- # From backup server SrvID / FQDN [pg-backup01.example.net]: # To Backup server SrvID / FQDN [pg-backup0.example.net]: # PgSQL node NodeID / FQDN [all]: # DBname [all]: # DefID []: # Are all values correct (yes/no): yes -------------------------------------------------------- [DONE] Moving backup definitions from backup server [pg-backup01.example.net] to backup server [pg-backup02.example.net]
Este comando termina y sale de el shell PgBackMan.
quit
Existe un alias para este comando \q que se puede utilizar en vez de quit.
Este comando se puede ejecutar solamente sin parámetros, e.g.:
[pgbackman]$ quit Done, thank you for using PgBackMan [pgbackman]$ \q Done, thank you for using PgBackMan
Este comando registra un definición de copia de seguridad programada:
register_backup_definition [SrvID | FQDN] [NodeID | FQDN] [DBname] [DBname exceptions] [min_cron] [hour_cron] [daymonth_cron] [month_cron] [weekday_cron] [backup code] [encryption] [retention period] [retention redundancy] [extra backup parameters] [job status] [remarks]
Parámetros:
[SrvID | FQDN]: SrvID en PgBackMan o FQDN del servidor de backups que ejecutará la copia de seguridad programada.
[NodeID | FQDN]: NodeID en PgBackMan o FQDN del nodo PgSQL ejecutando la base de datos a la que se la va a realizar una copia de seguridad.
[DBname]: Nombre de la base de datos. Este parámetro se puede dejar sin definir si estamos definiendo una copia de seguridad con código CLUSTER.
Se pueden utilizar dos valores especiales en vez del nombre de la base de datos:
[DBname exceptions]: Bases de datos que no se tendrán en cuenta cuando usemos los valores '#all_databases#' o '#databases_without_backup_definitions#' en [DBname].
[*_cron]: Definición del momento de ejecución de la copia de seguridad usando una expresión cron.
[backup code]:
[encryption]: Este parámetro no está activado actualmente pero se utilizará en un futuro próximo.
[retention period]: Intervalo de tiempo que una copia de seguridad estará disponible en el catálogo, e.g. 2 hours, 3 days, 1 week, 1 month, 2 years
[retention redundancy]: Número mínimo de copias de seguridad a mantener en el catálogo independientemente del periodo de retención definido. e.g. 1,2,3
[extra backup parameters]: Parámetros extras que se pueden usar con pg_dump / pg_dumpall.
[job status]
Los valores por defecto de un parámetro se enseñan entre corchetes``[]``. Si el usuario no define ningún valor, PgBackMan utilizará el valor por defecto.
Este comando se puede ejecutar con o sin parámetros:
[pgbackman]$ register_backup_definition 1 1 test02 "" 41 01 * * * schema false "7 days" 1 "" active "Testing reg" [Done] Backup definition for dbname: test02 registered.
[pgbackman]$ register_backup_definition -------------------------------------------------------- # Backup server SrvID / FQDN []: pg-backup01.example.net # PgSQL node NodeID / FQDN []: pg-node01.example.net # DBname []: test02 # DBname exceptions []: # Minutes cron [41]: # Hours cron [01]: # Day-month cron [*]: # Month cron [*]: # Weekday cron [*]: # Backup code [FULL]: # Encryption [false]: # Retention period [7 days]: # Retention redundancy [1]: # Extra parameters []: # Job status [ACTIVE]: # Remarks []: Testing reg. # Are all values correct (yes/no): yes -------------------------------------------------------- [Done] Backup definition for dbname: test02 registered.
Este comando registra un servidor de backup en PgBackMan:
Command: register_backup_server [hostname] [domain] [remarks]
Parámetros:
Los valores por defecto de un parámetro se enseñan entre corchetes``[]``. Si el usuario no define ningún valor, PgBackMan utilizará el valor por defecto.
Este comando se puede ejecutar con o sin parámetros:
[pgbackman]$ register_backup_server backup01 "" "Test server" [Done] Backup server backup01.example.org registered.
[pgbackman]$ register_backup_server -------------------------------------------------------- # Hostname []: backup01 # Domain [example.org]: # Remarks []: Test server # Are all values correct (yes/no): yes -------------------------------------------------------- [Done] Backup server backup01.example.org registered.
este comando registra un nodo PgSQL en PgBackMan.:
register_pgsql_node [hostname] [domain] [pgport] [admin_user] [status] [remarks]
Parámetros:
Todas las definiciones de copias de seguridad programadas asociadas a un nodo PgSQL serán activadas/desactivadas automáticamente si el estatus del nodo PgSQL es cambiado a RUNNING/DOWN.
Los valores por defecto de un parámetro se enseñan entre corchetes``[]``. Si el usuario no define ningún valor, PgBackMan utilizará el valor por defecto.
Este comando se puede ejecutar con o sin parámetros:
[pgbackman]$ register_pgsql_node pg-node01 "" "" "" running "Test node" [Done] PgSQL node pg-node01.example.net registered.
[pgbackman]$ register_pgsql_node -------------------------------------------------------- # Hostname []: pg-node01 # Domain [example.org]: # Port [5432]: # Admin user [postgres]: # Status[STOPPED]: running # Remarks []: Test node # Are all values correct (yes/no): yes -------------------------------------------------------- [Done] PgSQL node pg-node01.example.org registered.
Este comando define un proceso de restauración de datos a partir de una copia de seguridad registrada en el catálogo. Actualmente solamente se pueden restaurar automáticamente copias de seguridad con código FULL (esquema + data).
Este comando solamente se puede ejecutar interactivamente desde el shell PgBackMan.
Parámetros:
Este comando se puede ejecutar solamente sin parámetros.e.g.:
[pgbackman]$ register_restore_definition -------------------------------------------------------- # AT timestamp [2014-05-30 09:44:04.503880]: # BckID []: 35 # Target NodeID / FQDN []: 2 # Target DBname [pgbackman]: # Extra parameters []: # Are all values correct (yes/no): yes -------------------------------------------------------- [Processing restore data] -------------------------------------------------------- [OK]: Target DBname pgbackman does not exist on target PgSQL node. [OK]: Role 'pgbackman_role_rw' does not exist on target PgSQL node. [WARNING]: Role 'postgres' already exists on target PgSQL node. # Use the existing role? (yes/no): yes -------------------------------------------------------- [Restore definition accepted] -------------------------------------------------------- AT time: 2014-05-30 09:44:04.503880 BckID to restore: 35 Roles to restore: pgbackman_role_rw Backup server: [1] pg-backup01.example.net Target PgSQL node: [2] pg-node01.example.net Target DBname: pgbackman Extra restore parameters: Existing database will be renamed to : None -------------------------------------------------------- # Are all values correct (yes/no): yes -------------------------------------------------------- [Done] Restore definition registered.
Existen una serie de puntos que tenemos que tener en cuenta cuando vayamos a realizar una restauración de datos desde una copia de seguridad. ¿Qué ocurre si queremos realizar la restauración de una base de datos o un usuario que ya existe en el sistema donde vayamos a realizar la restauración?
El siguiente gráfico explica la lógica usada por este comando cuando vayamos a realizar una restauración de datos con conflictos:
Este comando registra una copia de seguridad de tipo snapshot (instatánea).
register_snapshot_definition [SrvID | FQDN] [NodeID | FQDN] [DBname] [DBname exceptions] [AT time] [backup code] [retention period] [extra backup parameters] [tag] [pg_dump/all release]
Parámetros:
[SrvID | FQDN]: SrvID en PgBackMan o FQDN del servidor de backups que ejecutará la copia de seguridad instantánea.
[NodeID | FQDN]: NodeID en PgBackMan o FQDN del nodo PgSQL ejecutando la base de datos a la que se la va a realizar una copia de seguridad.
[DBname]: Nombre de la base de datos.
Se pueden definir multiples bases de datos separadas por comas.
Se puede utilizar el valor especial '#all_databases#' si se quiere registrar una copia de seguridad instantanea para todas las bases de datos existentes (excepto, 'template0','template1' y 'postgres')
Este valor será ignorado si utilizamos backup-code=CLUSTER.
[DBname exceptions]: Bases de datos que no se tendrán en cuenta cuando usemos el valor '#all_databases#' en [DBname].
Se pueden definir multiples bases de datos separadas por comas.
Este valor será ignorado si utilizamos backup-code=CLUSTER.
[AT time]: Momento en el que se ejecutará la copia de seguridad.
[backup code]:
[retention period]: Intervalo de tiempo que una copia de seguridad estará disponible en el catálogo, e.g. 2 hours, 3 days, 1 week, 1 month, 2 years
[extra backup parameters]: Parámetros extras que se pueden usar con pg_dump / pg_dumpall.
[tag]: Define una etiqueta para este registro. Este valor puede servir de ayuda para identificar backups que se han creado a partir de una sola definición de copia de seguridad de tipo snapshot para muchas bases de datos. La etiqueta podrá ser usada en un futuro cuando registremos una proceso de restauración de datos.
Si no se define un valor, el sistema generará un valor alfanumérico aleatorio.
[pg_dump/all release]: Versión de pg_dump / pg_dumpall a usar cuando vayamos a realizar una copia de seguridad de tipo snapshot, e.g. 9.0, 9.1, 9.2, 9.3, 9.4, 9.5 o 9.6. Este parámetro puede ser necesario si la restauración de los datos se va a realizar en una instalación postgreSQL que este ejecutando una versión más nueva que la instalación con la base de datos a la que estamos realizando la copia de seguridad de tipo snapshot.
Esta versión no puede ser menor que la usada en la instalación PostgreSQL con la base de datos a la que estamos realizando la copia de seguridad de tipo snapshot.
Si este parámetro no es definido, se utilizará por defecto la versión usada en la instalación PostgreSQL con la base de datos a la que estamos realizando la copia de seguridad de tipo snapshot.
Los valores por defecto de un parámetro se enseñan entre corchetes``[]``. Si el usuario no define ningún valor, PgBackMan utilizará el valor por defecto.
Este comando se puede ejecutar con o sin parámetros, e.g.:
[pgbackman]$ register_snapshot_definition 1 1 test02 2014-05-31 full "7 days" "" "Test snapshot" "" [Done] Snapshot for dbname: test02 defined.
[pgbackman]$ register_snapshot_definition -------------------------------------------------------- # Backup server SrvID / FQDN []: pg-backup01.example.net # PgSQL node NodeID / FQDN []: pg-node01.example.net # DBname []: test02 # AT timestamp [2014-05-31 17:52:28.756359]: # Backup code [FULL]: # Retention period [7 days]: # Extra parameters []: # Remarks []: # pg_dump/all release [Same as pgSQL node running dbname]: # Are all values correct (yes/no): yes -------------------------------------------------------- [Done] Snapshot for dbname: test02 defined.
Este comando se puede utilizar para cambiar el valor de ciertos parámetros internos usados para configurar PgBackMan.
set [parameter=value]
Este comando ejecuta un comando en el sistema operativo.
shell [command]
Parámetros:
Existe un alias para este comando ! que se puede utilizar en vez de shell.
Este comando se puede ejecutar solamente sin parámetros:
[pgbackman]$ ! ls -l total 88 -rw-rw-r--. 1 vagrant vagrant 135 May 30 10:04 AUTHORS drwxrwxr-x. 2 vagrant vagrant 4096 May 30 10:03 bin drwxrwxr-x. 4 vagrant vagrant 4096 May 30 10:03 docs drwxrwxr-x. 2 vagrant vagrant 4096 May 30 10:03 etc -rw-rw-r--. 1 vagrant vagrant 0 May 30 10:04 INSTALL -rw-rw-r--. 1 vagrant vagrant 35121 May 30 10:04 LICENSE drwxrwxr-x. 2 vagrant vagrant 4096 May 30 10:03 pgbackman -rw-rw-r--. 1 vagrant vagrant 797 May 30 10:04 README.md -rwxrwxr-x. 1 vagrant vagrant 4087 May 30 10:04 setup.py drwxrwxr-x. 2 vagrant vagrant 4096 May 30 10:03 sql drwxrwxr-x. 4 vagrant vagrant 4096 May 30 10:03 vagrant
Este comando muestra todas las entradas en el catálogo que cumplan una serie de condiciones de busqueda. Las condiciones de busqueda se combinan con el operador lógico AND.
show_backup_catalog [SrvID|FQDN] [NodeID|FQDN] [DBname] [DefID] [Status]
Parámetros:
Los valores por defecto de un parámetro se enseñan entre corchetes``[]``. Si el usuario no define ningún valor, PgBackMan utilizará el valor por defecto.
Se pueden definir valores múltiples separados por comas para cada condición de busqueda. Estos valores multiples se combinan usando el operador lógico OR.
Este comando se puede ejecutar con o sin parámetros, e.g.:
[pgbackman]$ show_backup_catalog 1 all dump_test,test02 all all -------------------------------------------------------- # SrvID / FQDN: 1 # NodeID / FQDN: all # DBname: dump_test,test02 # DefID: all # Status: all -------------------------------------------------------- +-----------+-------+------------+---------------------------+-----+-------------------------+----+-------------------------+-----------+----------+------------+------+-----------+-----------+ | BckID | DefID | SnapshotID | Finished | ID. | Backup server | ID | PgSQL node | DBname | Duration | Size | Code | Execution | Status | +-----------+-------+------------+---------------------------+-----+-------------------------+----+-------------------------+-----------+----------+------------+------+-----------+-----------+ | 000000029 | | 000000006 | 2014-05-28 09:08:20+00:00 | 1 | pg-backup01.example.net | 1 | pgbackmandb.example.net | dump_test | 0:00:02 | 2850 bytes | FULL | AT | SUCCEEDED | | 000000027 | | 000000007 | 2014-05-28 09:01:05+00:00 | 1 | pg-backup01.example.net | 1 | pgbackmandb.example.net | dump_test | 0:00:03 | 3468 bytes | FULL | AT | SUCCEEDED | | 000000028 | | 000000006 | 2014-05-28 09:01:05+00:00 | 1 | pg-backup01.example.net | 1 | pgbackmandb.example.net | dump_test | 0:00:03 | 2850 bytes | FULL | AT | SUCCEEDED | | 000000026 | | 000000005 | 2014-05-28 08:51:43+00:00 | 1 | pg-backup01.example.net | 1 | pgbackmandb.example.net | dump_test | 0:00:02 | 3305 bytes | FULL | AT | SUCCEEDED | | 000000025 | | 000000002 | 2014-05-28 08:47:03+00:00 | 1 | pg-backup01.example.net | 1 | pgbackmandb.example.net | dump_test | 0:00:02 | 3468 bytes | FULL | AT | SUCCEEDED | | 000000024 | | 000000001 | 2014-05-28 08:41:09+00:00 | 1 | pg-backup01.example.net | 1 | pgbackmandb.example.net | test02 | 0:00:03 | 3524 bytes | FULL | AT | SUCCEEDED | | 000000023 | | 000000001 | 2014-05-28 08:40:06+00:00 | 1 | pg-backup01.example.net | 1 | pgbackmandb.example.net | test02 | 0:00:00 | 0 bytes | FULL | AT | ERROR | +-----------+-------+------------+---------------------------+-----+-------------------------+----+-------------------------+-----------+----------+------------+------+-----------+-----------+
[pgbackman]$ show_backup_catalog -------------------------------------------------------- # SrvID / FQDN: 1 # NodeID / FQDN: all # DBname: dump_test,test02 # DefID: all # Status: all -------------------------------------------------------- +-----------+-------+------------+---------------------------+-----+-------------------------+----+-------------------------+-----------+----------+------------+------+-----------+-----------+ | BckID | DefID | SnapshotID | Finished | ID. | Backup server | ID | PgSQL node | DBname | Duration | Size | Code | Execution | Status | +-----------+-------+------------+---------------------------+-----+-------------------------+----+-------------------------+-----------+----------+------------+------+-----------+-----------+ | 000000029 | | 000000006 | 2014-05-28 09:08:20+00:00 | 1 | pg-backup01.example.net | 1 | pgbackmandb.example.net | dump_test | 0:00:02 | 2850 bytes | FULL | AT | SUCCEEDED | | 000000028 | | 000000006 | 2014-05-28 09:01:05+00:00 | 1 | pg-backup01.example.net | 1 | pgbackmandb.example.net | dump_test | 0:00:03 | 2850 bytes | FULL | AT | SUCCEEDED | | 000000027 | | 000000007 | 2014-05-28 09:01:05+00:00 | 1 | pg-backup01.example.net | 1 | pgbackmandb.example.net | dump_test | 0:00:03 | 3468 bytes | FULL | AT | SUCCEEDED | | 000000026 | | 000000005 | 2014-05-28 08:51:43+00:00 | 1 | pg-backup01.example.net | 1 | pgbackmandb.example.net | dump_test | 0:00:02 | 3305 bytes | FULL | AT | SUCCEEDED | | 000000025 | | 000000002 | 2014-05-28 08:47:03+00:00 | 1 | pg-backup01.example.net | 1 | pgbackmandb.example.net | dump_test | 0:00:02 | 3468 bytes | FULL | AT | SUCCEEDED | | 000000024 | | 000000001 | 2014-05-28 08:41:09+00:00 | 1 | pg-backup01.example.net | 1 | pgbackmandb.example.net | test02 | 0:00:03 | 3524 bytes | FULL | AT | SUCCEEDED | | 000000023 | | 000000001 | 2014-05-28 08:40:06+00:00 | 1 | pg-backup01.example.net | 1 | pgbackmandb.example.net | test02 | 0:00:00 | 0 bytes | FULL | AT | ERROR | +-----------+-------+------------+---------------------------+-----+-------------------------+----+-------------------------+-----------+----------+------------+------+-----------+-----------+
Este comando muestra todas las definiciones de copias de seguridad programadas que cumplan una serie de condiciones de busqueda. Las condiciones de busqueda se combinan con el operador lógico AND.
show_backup_definitions [SrvID|FQDN] [NodeID|FQDN] [DBname]
Parámetros:
Los valores por defecto de un parámetro se enseñan entre corchetes``[]``. Si el usuario no define ningún valor, PgBackMan utilizará el valor por defecto.
Se pueden definir valores múltiples separados por comas para cada condición de busqueda. Estos valores multiples se combinan usando el operador lógico OR.
Este comando se puede ejecutar con o sin parámetros, e.g.:
[pgbackman]$ show_backup_definitions all all pgbackman -------------------------------------------------------- # SrvID / FQDN: all # NodeID / FQDN: all # DBname: pgbackman -------------------------------------------------------- +-------------+-----+-------------------------+----+-------------------------+-----------+-------------+--------+------------+--------+------------+ | DefID | ID. | Backup server | ID | PgSQL node | DBname | Schedule | Code | Retention | Status | Parameters | +-------------+-----+-------------------------+----+-------------------------+-----------+-------------+--------+------------+--------+------------+ | 00000000012 | 1 | pg-backup01.example.net | 1 | pgbackmandb.example.net | pgbackman | 41 01 * * * | FULL | 7 days (1) | ACTIVE | | | 00000000011 | 1 | pg-backup01.example.net | 1 | pgbackmandb.example.net | pgbackman | * * * * * | FULL | 7 days (1) | ACTIVE | --inserts | | 00000000013 | 1 | pg-backup01.example.net | 1 | pgbackmandb.example.net | pgbackman | 41 01 * * * | SCHEMA | 7 days (1) | ACTIVE | | +-------------+-----+-------------------------+----+-------------------------+-----------+-------------+--------+------------+--------+------------+
[pgbackman]$ show_backup_definitions -------------------------------------------------------- # SrvID / FQDN [all]: # NodeID / FQDN [all]: # DBname [all]: pgbackman -------------------------------------------------------- +-------------+-----+-------------------------+----+-------------------------+-----------+-------------+--------+------------+--------+------------+ | DefID | ID. | Backup server | ID | PgSQL node | DBname | Schedule | Code | Retention | Status | Parameters | +-------------+-----+-------------------------+----+-------------------------+-----------+-------------+--------+------------+--------+------------+ | 00000000012 | 1 | pg-backup01.example.net | 1 | pgbackmandb.example.net | pgbackman | 41 01 * * * | FULL | 7 days (1) | ACTIVE | | | 00000000011 | 1 | pg-backup01.example.net | 1 | pgbackmandb.example.net | pgbackman | * * * * * | FULL | 7 days (1) | ACTIVE | --inserts | | 00000000013 | 1 | pg-backup01.example.net | 1 | pgbackmandb.example.net | pgbackman | 41 01 * * * | SCHEMA | 7 days (1) | ACTIVE | | +-------------+-----+-------------------------+----+-------------------------+-----------+-------------+--------+------------+--------+------------+
Este comando muestra todos los detalles asociados a una copia de seguridad en particular.
show_backup_details [BckID]
Parámetros:
Este comando se puede ejecutar con o sin parámetros, e.g.:
[pgbackman]$ show_backup_details 25 -------------------------------------------------------- # BckID: 25 -------------------------------------------------------- +--------------------------+--------------------------------------------------------------------------------------------------------------------------------+ | BckID: | 000000000025 | | ProcPID: | 2067 | | Registered: | 2014-05-28 08:47:03+00:00 | | | | | Started: | 2014-05-28 08:47:00+00:00 | | Finished: | 2014-05-28 08:47:03+00:00 | | Duration: | 0:00:02 | | Total size: | 3468 bytes | | Execution method: | AT | | Execution status: | SUCCEEDED | | | | | DefID: | | | SnapshotID: | 00000002 | | DBname: | dump_test | | Backup server (ID/FQDN): | [1] / pg-backup01.example.net | | PgSQL node (ID/FQDN): | [1] / pgbackmandb.example.net | | PgSQL node release: | 9.3 | | Pg_dump/all release: | 9.3 | | | | | Schedule: | [min hour day_month month weekday] | | AT time: | 201405280847 | | Retention: | 7 days | | Backup code: | FULL | | Extra parameters: | --inserts | | | | | DB dump file: | /srv/pgbackman/pgsql_node_1/dump/dump_test-pgbackmandb.example.net-v9_3-snapid2-cFULL20140528T084700-DATABASE.sql (2363 bytes) | | DB log file: | /srv/pgbackman/pgsql_node_1/log/dump_test-pgbackmandb.example.net-v9_3-snapid2-cFULL20140528T084700-DATABASE.log | | | | | Role list: | test_rw,postgres,test_ro | | | | | DB roles dump file: | /srv/pgbackman/pgsql_node_1/dump/dump_test-pgbackmandb.example.net-v9_3-snapid2-cFULL20140528T084700-USERS.sql (533 bytes) | | DB roles log file: | /srv/pgbackman/pgsql_node_1/log/dump_test-pgbackmandb.example.net-v9_3-snapid2-cFULL20140528T084700-USERS.log | | | | | DB config dump file: | /srv/pgbackman/pgsql_node_1/dump/dump_test-pgbackmandb.example.net-v9_3-snapid2-cFULL20140528T084700-DBCONFIG.sql (572 bytes) | | DB config log file: | /srv/pgbackman/pgsql_node_1/log/dump_test-pgbackmandb.example.net-v9_3-snapid2-cFULL20140528T084700-DBCONFIG.log | | | | | On disk until: | 2014-06-04 08:47:03+00:00 | | Error message: | | +--------------------------+--------------------------------------------------------------------------------------------------------------------------------+
Este comando muestra la configuración por defecto usada por un servidor de backup.
show_backup_server_config [SrvID | FQDN]
Parámetros:
Este comando se puede ejecutar con o sin parámetros, e.g.:
[pgbackman]$ show_backup_server_config 1 -------------------------------------------------------- # SrvID / FQDN: 1 -------------------------------------------------------- +-----------------------+----------------------------+-------------------------------------------+ | Parameter | Value | Description | +-----------------------+----------------------------+-------------------------------------------+ | admin_user | postgres | postgreSQL admin user | | backup_server_status | RUNNING | Default backup server status - *Not used* | | domain | example.org | Default domain | | pgbackman_dump | /usr/bin/pgbackman_dump | Program used to take backup dumps | | pgbackman_restore | /usr/bin/pgbackman_restore | Program used to restore backup dumps | | pgsql_bin_9_0 | /usr/pgsql-9.0/bin | postgreSQL 9.0 bin directory | | pgsql_bin_9_1 | /usr/pgsql-9.1/bin | postgreSQL 9.1 bin directory | | pgsql_bin_9_2 | /usr/pgsql-9.2/bin | postgreSQL 9.2 bin directory | | pgsql_bin_9_3 | /usr/pgsql-9.3/bin | postgreSQL 9.3 bin directory | | pgsql_bin_9_4 | /usr/pgsql-9.4/bin | postgreSQL 9.4 bin directory | | root_backup_partition | /srv/pgbackman | Main partition used by pgbackman | | root_cron_file | /etc/cron.d/pgbackman | Crontab file used by pgbackman *Not used* | +-----------------------+----------------------------+-------------------------------------------+
Este comando muestra las estadísticas globales de un servidor de backups.
show_backup_server_stats [SrvID | FQDN]
Parámetros:
Este comando se puede ejecutar con o sin parámetros, e.g.:
[pgbackman]$ show_backup_server_stats 1 -------------------------------------------------------- # SrvID: 1 -------------------------------------------------------- +-----------------------------------------------------+-----------------------------+ | Backup server: | [1] pg-backup01.example.net | | | | | PgSQL nodes using this backup server: | 1 | | | | | Different databases: | 1 | | Active Backup job defs: | 3 | | Stopped Backup job defs: | 0 | | Backup job defs with CLUSTER code: | 0 | | Backup job defs with DATA code: | 0 | | Backup job defs with FULL code: | 2 | | Backup job defs with SCHEMA code: | 1 | | | | | Succeeded backups in catalog: | 3890 | | Faulty backups in catalog: | 2 | | Total size of backups in catalog: | 1106 MB | | Total running time of backups in catalog: | 5:03:08.108701 | | Oldest backup in catalog: | 2014-05-28 08:40:06+00:00 | | Newest backup in catalog: | 2014-06-01 19:44:07+00:00 | | | | | Jobs waiting to be processed by pgbackman_control: | 1 | | Forced deletion of backups waiting to be processed: | 0 | +-----------------------------------------------------+-----------------------------+
Este comando muestra todos los servidores de backups registrados en PgBackMan.
show_backup_servers
Este comando puede ser ejecutado solamente sin parámetros, e.g.:
[pgbackman]$ show_backup_servers +-------+-------------------------+-------------+ | SrvID | FQDN | Remarks | +-------+-------------------------+-------------+ | 00001 | pg-backup01.example.net | | | 00003 | backup02.example.org | test server | +-------+-------------------------+-------------+
Este comando muestra una lista con todas las bases de datos en un nodo PgSQL sin una definición de copia de seguridad en PgBackMan.
show_databases_without_backup_definitions [Node ID | FQDN]
Parametros:
Este comando puede ejecutarse con o sin parametros. e.g.:
[pgbackman]$ show_databases_without_backup_definitions pg-node01.example.net -------------------------------------------------------- # NodeID / FQDN: pg-node01.example.net -------------------------------------------------------- +-----------------------+---------+ | PgSQL node | DBname | +-----------------------+---------+ | pg-node01.example.net | example | | pg-node01.example.net | test | | pg-node01.example.net | test02 | +-----------------------+---------+
[pgbackman]$ show_databases_without_backup_definitions -------------------------------------------------------- # NodeID / FQDN: pg-node01.example.net -------------------------------------------------------- +-----------------------+---------+ | PgSQL node | DBname | +-----------------------+---------+ | pg-node01.example.net | example | | pg-node01.example.net | test | | pg-node01.example.net | test02 | +-----------------------+---------+
Este comando muestra una lista con todas las definiciones de copias de seguridad que no tienen ninguna entrada en el catálogo.
show_empty_backup_catalogs
Este comando puede ser ejecutado solamente sin parámetros, e.g.:
[pgbackman]$ show_empty_backup_catalogs +-------------+---------------------------+-----+-------------------------+----+-------------------------+-----------+-------------+------+------------+--------+------------+ | DefID | Registered | ID. | Backup server | ID | PgSQL node | DBname | Schedule | Code | Retention | Status | Parameters | +-------------+---------------------------+-----+-------------------------+----+-------------------------+-----------+-------------+------+------------+--------+------------+ | 00000000012 | 2014-05-30 07:29:28+00:00 | 1 | pg-backup01.example.net | 1 | pgbackmandb.example.net | pgbackman | 41 01 * * * | FULL | 7 days (1) | ACTIVE | | +-------------+---------------------------+-----+-------------------------+----+-------------------------+-----------+-------------+------+------------+--------+------------+
Muestra una lista de comandos que han sido ejecutados durante la sesión en uso en el shell de PgBackMan.
show_history
Existe un alias para este comando, \s, que se puede utilizar en vez de show_history.
Tambièn se puede usar el modo Emacs de busqueda en la historia de comandos para obtener comandos ejecutados que contengan una cadena alfanumérica. Para entrar en este modo de busqueda pulsar [CTRL]+[r] en el shell de PgBackMan seguido de la cadena alfanumérica que querais buscar en el historial de comandos.
Este comando se puede ejecutar solamente sin parámetros, e.g.:
[pgbackman]$ show_history [0]: help [1]: help support [2]: help show_history [3]: shell df -h | grep /srv/pgbackman [4]: show_history [5]: help [6]: show_history [7]: show_backup_servers [8]: show_pgsql_nodes
Este comando muestra la cola de trabajos esperando a ser procesados por pgbackman_control.
show_jobs_queue
Esta cola se actualiza cuando una definición de copia de seguridad programada es definida, actualizada o borrada. Las entradas de la cola muestran la combinación servidor de backup + nodo PgSQL afectado por un cambio.
Este comando se puede ejecutar solamente sin parámetros, e.g.:
[pgbackman]$ show_jobs_queue +-------+---------------------------+-------+-------------------------+--------+-------------------------+----------+ | JobID | Registered | SrvID | Backup server | NodeID | PgSQL node | Assigned | +-------+---------------------------+-------+-------------------------+--------+-------------------------+----------+ | 10 | 2014-05-30 07:29:28+00:00 | 1 | pg-backup01.example.net | 1 | pgbackmandb.example.net | False | +-------+---------------------------+-------+-------------------------+--------+-------------------------+----------+
Este comando muestra los parámetros de configuración usados por la sesión en uso del shell de PgBackMan.
show_pgbackman_config
Este comando se puede ejecutar solamente sin parámetros, e.g.:
[pgbackman]$ show_pgbackman_config +-------------------------------+------------------------------------------+ | Running modus: | interactive | | Backup server: | pgbackup.example.org | | Software version: | [3]:1_2_0 | | Configuration file used: | /etc/pgbackman/pgbackman.conf | | | | | PGBACKMAN DATABASE: | | | DBhost: | pgbackmandb.example.org | | DBhostaddr: | | | DBport: | 5432 | | DBname: | pgbackman | | DBuser: | pgbackman_role_rw | | Connection retry interval: | 10 sec. | | | | | Database source dir: | /usr/share/pgbackman | | DB version installed: | 2017-05-24 17:48:43.308920+02:00 | | DB version: | [3]:1_2_0 | | | | | PGBACKMAN_DUMP: | | | Temp directory: | /tmp | | Pause recovery on slave node: | OFF | | | | | PGBACKMAN_MAINTENANCE: | | | Maintenance interval: | 70 sec. | | | | | PGBACKMAN_ALERTS: | | | SMTP alerts activated: | OFF | | Alerts check interval: | 300 sec. | | SMTP server: | localhost | | SMTP port: | 25 | | Use SMTP SSL: | ON | | SMTP user: | | | Default From address: | | | Alerts e-mail template: | /etc/pgbackman/pgbackman_alerts.template | | | | | LOGGING: | | | Log level: | INFO | | Log file: | /var/log/pgbackman/pgbackman.log | | | | | OUTPUT: | | | Default output format: | table | +-------------------------------+------------------------------------------+
Este comando muestra las estadísticas globales de la instalación en uso de PgBackMan.
show_pgbackman_stats
Este comando se puede ejecutar solamente sin parámetros, e.g.:
[pgbackman]$ show_pgbackman_stats +-----------------------------------------------------+---------------------------+ | Running Backup servers: | 5 | | Stopped Backup servers: | 0 | | | | | Running PgSQL nodes: | 5 | | Stopped PgSQL nodes: | 2 | | | | | Different databases: | 1 | | Active Backup job defs: | 3 | | Stopped Backup job defs: | 0 | | Backup job defs with CLUSTER code: | 0 | | Backup job defs with DATA code: | 0 | | Backup job defs with FULL code: | 2 | | Backup job defs with SCHEMA code: | 1 | | | | | Succeeded backups in catalog: | 4509 | | Faulty backups in catalog: | 2 | | Total size of backups in catalog: | 1363 MB | | Total running time of backups in catalog: | 5:54:33.693734 | | Oldest backup in catalog: | 2014-05-28 08:40:06+00:00 | | Newest backup in catalog: | 2014-06-02 07:38:07+00:00 | | | | | Jobs waiting to be processed by pgbackman_control: | 1 | | Forced deletion of backups waiting to be processed: | 0 | +-----------------------------------------------------+---------------------------+
Este comando muestra la configuración por defecto de un nodo PgSQL.
show_pgsql_node_config [NodeID | FQDN]
Parámetros:
Este comando se puede ejecutar con o sin parámetros, e.g.:
[pgbackman]$ show_pgsql_node_config 5 -------------------------------------------------------- # NodeID / FQDN: 5 -------------------------------------------------------- +------------------------------+-----------------------------+-----------------------------------------------------------+ | Parameter | Value | Description | +------------------------------+-----------------------------+-----------------------------------------------------------+ | admin_user | postgres | postgreSQL admin user | | automatic_deletion_retention | 14 days | Retention after automatic deletion of a backup definition | | backup_code | FULL | Backup job code | | backup_day_month_cron | * | Backup day_month cron default | | backup_hours_interval | 01-06 | Backup hours interval | | backup_job_status | ACTIVE | Backup job status | | backup_minutes_interval | 01-59 | Backup minutes interval | | backup_month_cron | * | Backup month cron default | | backup_weekday_cron | * | Backup weekday cron default | | domain | example.org | Default domain | | encryption | false | GnuPG encryption - *Not used* | | extra_backup_parameters | | Extra backup parameters | | extra_restore_parameters | | Extra restore parameters | | logs_email | example@example.org | E-mail to send logs | | pgnode_backup_partition | /srv/pgbackman/pgsql_node_5 | Partition to save pgbackman information for a pgnode | | pgnode_crontab_file | /etc/cron.d/pgsql_node_5 | Crontab file for pgnode in the backup server | | pgport | 5432 | postgreSQL port | | pgsql_node_status | STOPPED | pgsql node status | | retention_period | 7 days | Retention period for a backup job | | retention_redundancy | 1 | Retention redundancy for a backup job | +------------------------------+-----------------------------+-----------------------------------------------------------+
Este comando muestra las estadísticas globales de un nodo PgSQL.
show_pgsql_node_stats [NodeID | FQDN]
Parámetros:
Este comando se puede ejecutar con o sin parámetros, e.g.:
[pgbackman]$ show_pgsql_node_stats 1 -------------------------------------------------------- # NodeID: 1 -------------------------------------------------------- +----------------------------------------------------+-----------------------------+ | PgSQL node: | [1] pgbackmandb.example.net | | | | | Backup servers running backups for this Node: | 1 | | | | | Different databases: | 1 | | Active Backup job defs: | 3 | | Stopped Backup job defs: | 0 | | Backup job defs with CLUSTER code: | 0 | | Backup job defs with DATA code: | 0 | | Backup job defs with FULL code: | 2 | | Backup job defs with SCHEMA code: | 1 | | | | | Succeeded backups in catalog: | 4527 | | Faulty backups in catalog: | 2 | | Total size of backups in catalog: | 1371 MB | | Total running time of backups in catalog: | 5:56:02.793539 | | Oldest backup in catalog: | 2014-05-28 08:40:06+00:00 | | Newest backup in catalog: | 2014-06-02 07:56:06+00:00 | | | | | Jobs waiting to be processed by pgbackman_control: | 1 | +----------------------------------------------------+-----------------------------+
Este comando muestra todos los nodos PgSQL registrados en PgBackMan.
show_pgsql_nodes
Este comando se puede ejecutar solamente sin parámetros, e.g.:
[pgbackman]$ show_pgsql_nodes +--------+-------------------------+--------+------------+---------+-------------+ | NodeID | FQDN | Pgport | Admin user | Status | Remarks | +--------+-------------------------+--------+------------+---------+-------------+ | 000001 | pgbackmandb.example.net | 5432 | postgres | RUNNING | | | 000002 | pg-node01.example.net | 5432 | postgres | RUNNING | | | 000008 | pg-node02.example.net | 5432 | postgres | STOPPED | test node | | 000005 | test.example.org | 5432 | postgres | RUNNING | Test server | +--------+-------------------------+--------+------------+---------+-------------+
Este comando muestra todas las entradas en el catálogo de restauraciones de datos que cumplan una serie de condiciones de busqueda. Las condiciones de búsqueda se combinan con el operador lógico AND.
show_restore_catalog [SrvID|FQDN] [NodeID|FQDN] [DBname]
Parámetros:
Los valores por defecto de un parámetro se enseñan entre corchetes``[]``. Si el usuario no define ningún valor, PgBackMan utilizará el valor por defecto.
Se pueden definir valores múltiples separados por comas para cada condición de busqueda. Estos valores multiples se combinan usando el operador lógico OR.
Este comando se puede ejecutar con o sin parámetros, e.g.:
[pgbackman]$ show_restore_catalog -------------------------------------------------------- # SrvID / FQDN [all]: # Target NodeID / FQDN [all]: # Target DBname [all]: -------------------------------------------------------- +------------+------------+-------+---------------------------+-----+-------------------------+----+-------------------------+----------------+----------+-----------+ | RestoreID | RestoreDef | BckID | Finished | ID. | Backup server | ID | Target PgSQL node | Target DBname | Duration | Status | +------------+------------+-------+---------------------------+-----+-------------------------+----+-------------------------+----------------+----------+-----------+ | 0000000006 | 0000000006 | 34 | 2014-05-28 13:18:49+00:00 | 1 | pg-backup01.example.net | 1 | pgbackmandb.example.net | pgbackman_1313 | 0:00:01 | SUCCEEDED | | 0000000005 | 0000000005 | 34 | 2014-05-28 13:16:21+00:00 | 1 | pg-backup01.example.net | 1 | pgbackmandb.example.net | pgbackman_1212 | 0:00:02 | SUCCEEDED | +------------+------------+-------+---------------------------+-----+-------------------------+----+-------------------------+----------------+----------+-----------+
Este comando muestra todas las definiciones de restauración que cumplan una serie de condiciones de busqueda. Las condiciones de busqueda se combinan con el operador lógico AND.
show_restore_definitions [SrvID|FQDN] [NodeID|FQDN] [DBname]
Parámetros:
Los valores por defecto de un parámetro se enseñan entre corchetes``[]``. Si el usuario no define ningún valor, PgBackMan utilizará el valor por defecto.
Se pueden definir valores múltiples separados por comas para cada condición de busqueda. Estos valores multiples se combinan usando el operador lógico OR.
La columna con los valores de estatus de la restauración puede tener diferentes valores con los siguientes significados:
Este comando se puede ejecutar con o sin parámetros, e.g.:
[pgbackman]$ show_restore_definitions -------------------------------------------------------- # SrvID / FQDN [all]: # Target NodeID / FQDN [all]: # Target DBname [all]: -------------------------------------------------------- +------------+---------------------------+-------+----+-------------------------+----------------+------------------+--------------+------------------+---------+ | RestoreDef | Registered | BckID | ID | Target PgSQL node | Target DBname | Renamed database | AT time | Extra parameters | Status | +------------+---------------------------+-------+----+-------------------------+----------------+------------------+--------------+------------------+---------+ | 00000005 | 2014-05-28 13:15:54+00:00 | 34 | 1 | pgbackmandb.example.net | pgbackman_1212 | None | 201405281316 | | DEFINED | | 00000006 | 2014-05-28 13:18:13+00:00 | 34 | 1 | pgbackmandb.example.net | pgbackman_1313 | None | 201405281318 | -j 4 | DEFINED | | 00000007 | 2014-05-30 09:43:31+00:00 | 35 | 2 | pg-node01.example.net | pgbackman | None | 201405300944 | | WAITING | +------------+---------------------------+-------+----+-------------------------+----------------+------------------+--------------+------------------+---------+
Este comando muestra todos los detalles asociados a un proceso de restauración de datos en particular.
show_restore_details [RestoreID]
Parámetros:
Este comando se puede ejecutar con o sin parámetros, e.g.:
[pgbackman]$ show_restore_details -------------------------------------------------------- # RestoreID: 6 -------------------------------------------------------- +------------------------------+---------------------------------------------------------------------------------------------+ | RestoreID: | 0000000006 | | ProcPID: | 6041 | | Registered: | 2014-05-28 13:18:49.879066+00:00 | | | | | Started: | 2014-05-28 13:18:47+00:00 | | Finished: | 2014-05-28 13:18:49+00:00 | | Duration: | 0:00:01 | | Execution status: | SUCCEEDED | | | | | BckID: | 34 | | Source DBname: | pgbackman | | Target DBname: | pgbackman_1313 | | Renamed DBname: | | | Roles restored: | | | | | | Backup server (ID/FQDN): | [1] / pg-backup01.example.net | | Target PgSQL node (ID/FQDN): | [1] / pgbackmandb.example.net | | Pg_dump/all backup release: | 9.3 | | Target PgSQL node release: | 9.3 | | | | | AT time: | 2014-05-28 13:18:40.771670+00:00 | | Extra parameters: | -j 4 | | | | | Restore log file: | /srv/pgbackman/pgsql_node_1/log/pgbackman_1313-pgbackmandb.example.net-v9_3-restoredef6.log | | Global log file: | /var/log/pgbackman/pgbackman.log | | | | | Error message: | | +------------------------------+---------------------------------------------------------------------------------------------+
Este comando muestra todos los procesos de restauración de datos que están en curso y que no se han completado todavia.
show_restores_in_progress
Este comando se puede ejecutar solamente sin parámetros, e.g.:
[pgbackman]$ show_restores_in_progress +-------------+---------------------------+-------+-----+-------------------------+----+-------------------------+----------------+---------------------+--------------+ | RestoreDef | Registered | BckID | ID. | Backup server | ID | Target PgSQL node | Target DBname | AT time | Elapsed time | +-------------+---------------------------+-------+-----+-------------------------+----+-------------------------+----------------+---------------------+--------------+ | 00000000001 | 2014-09-24 07:37:21+00:00 | 6 | 2 | pg-backup01.example.net | 2 | pgbackmandb.example.net | pgbackman_test | 2014-09-24 07:37:49 | 00:07:28 | +-------------+---------------------------+-------+-----+-------------------------+----+-------------------------+----------------+---------------------+--------------+
Este comando muestra todas las copias de seguridad de tipo snapshot que cumplan una serie de condiciones de busqueda. Las condiciones de busqueda se combinan con el operador lógico AND.
show_snapshot_definitions [SrvID|FQDN] [NodeID|FQDN] [DBname]
Parámetros:
Los valores por defecto de un parámetro se enseñan entre corchetes``[]``. Si el usuario no define ningún valor, PgBackMan utilizará el valor por defecto.
Se pueden definir valores múltiples separados por comas para cada condición de busqueda. Estos valores multiples se combinan usando el operador lógico OR.
La columna con los valores de estatus de la copia de seguridad de tipo snapshot puede tener diferentes valores con los siguientes significados:
Este comando se puede ejecutar con o sin parámetros, e.g.:
[pgbackman]$ show_snapshot_definitions -------------------------------------------------------- # SrvID / FQDN [all]: # NodeID / FQDN [all]: # DBname [all]: -------------------------------------------------------- +-------------+---------------------------+-----+-------------------------+----+-------------------------+-------------+--------------+------+-----------+---------------------------+---------+ | SnapshotID | Registered | ID. | Backup server | ID | PgSQL node | DBname | AT time | Code | Retention | Parameters | Status | +-------------+---------------------------+-----+-------------------------+----+-------------------------+-------------+--------------+------+-----------+---------------------------+---------+ | 00000000002 | 2014-05-28 08:45:19+00:00 | 1 | pg-backup01.example.net | 1 | pgbackmandb.example.net | dump_test | 201405280847 | FULL | 7 days | | DEFINED | | 00000000005 | 2014-05-28 08:50:47+00:00 | 1 | pg-backup01.example.net | 1 | pgbackmandb.example.net | dump_test | 201405280852 | FULL | 7 days | | DEFINED | | 00000000006 | 2014-05-28 08:59:47+00:00 | 1 | pg-backup01.example.net | 1 | pgbackmandb.example.net | dump_test | 201405280901 | FULL | 7 days | --inserts --no-privileges | DEFINED | | 00000000007 | 2014-05-28 09:00:11+00:00 | 1 | pg-backup01.example.net | 1 | pgbackmandb.example.net | dump_test | 201405280901 | FULL | 7 days | | DEFINED | | 00000000004 | 2014-05-28 08:48:50+00:00 | 1 | pg-backup01.example.net | 1 | pgbackmandb.example.net | dump_test2 | 201405280849 | FULL | 7 days | | DEFINED | | 00000000003 | 2014-05-28 08:48:32+00:00 | 1 | pg-backup01.example.net | 1 | pgbackmandb.example.net | dump_test2 | 201405280849 | FULL | 7 days | | DEFINED | | 00000000008 | 2014-05-28 10:06:08+00:00 | 1 | pg-backup01.example.net | 1 | pgbackmandb.example.net | pgbackman | 201405281006 | FULL | 7 days | | DEFINED | | 00000000010 | 2014-05-28 10:06:57+00:00 | 1 | pg-backup01.example.net | 1 | pgbackmandb.example.net | pgbackman | 201405281007 | FULL | 7 days | --inserts --no-privileges | DEFINED | | 00000000009 | 2014-05-28 10:06:31+00:00 | 1 | pg-backup01.example.net | 1 | pgbackmandb.example.net | pgbackman | 201405281007 | FULL | 7 days | -j 4 | WAITING | +-------------+---------------------------+-----+-------------------------+----+-------------------------+-------------+--------------+------+-----------+---------------------------+---------+
Este comando muestra todas las copias de seguridad de tipo snapshot que están en curso y que no se han completado todavia.
show_snapshots_in_progress
Este comando se puede ejecutar solamente sin parámetros, e.g.:
[pgbackman]$ show_snapshots_in_progress +-------------+---------------------------+-----+-------------------------+----+-------------------------+-----------+---------------------+------+--------------+ | SnapshotID | Registered | ID. | Backup server | ID | PgSQL node | DBname | AT time | Code | Elapsed time | +-------------+---------------------------+-----+-------------------------+----+-------------------------+-----------+---------------------+------+--------------+ | 00000000002 | 2014-09-22 21:09:25+00:00 | 2 | pg-backup01.example.net | 2 | pgbackmandb.example.net | pgbackman | 2014-09-23 13:14:06 | FULL | 18:07:47 | | 00000000007 | 2014-09-22 22:17:07+00:00 | 2 | pg-backup01.example.net | 2 | pgbackmandb.example.net | postgres | 2014-09-24 06:30:06 | FULL | 00:51:48 | | 00000000008 | 2014-09-22 22:17:25+00:00 | 2 | pg-backup01.example.net | 2 | pgbackmandb.example.net | pgbackman | 2014-09-24 06:30:24 | FULL | 00:51:29 | | 00000000009 | 2014-09-24 06:45:43+00:00 | 2 | pg-backup01.example.net | 2 | pgbackmandb.example.net | pgbackman | 2014-09-25 00:00:00 | FULL | -16:38:05 | | 00000000010 | 2014-09-24 07:05:16+00:00 | 2 | pg-backup01.example.net | 2 | pgbackmandb.example.net | pgbackman | 2014-09-25 01:00:00 | FULL | -17:38:05 | +-------------+---------------------------+-----+-------------------------+----+-------------------------+-----------+---------------------+------+--------------+
Este comando actualiza la información de una definición de copias de respaldo programada.
update_backup_definition [DefID] [min_cron] [hour_cron] [day-month_cron] [month_cron] [weekday_cron] [retention period] [retention redundancy] [extra backup parameters] [job status] [remarks]
Parámetros:
Los valores por defecto de un parámetro se enseñan entre corchetes``[]``. Si el usuario no define ningún valor, PgBackMan utilizará el valor por defecto.
Este comando se puede ejecutar con o sin parámetros, e.g.:
[pgbackman]$ update_backup_definition -------------------------------------------------------- # DefID []: 12 # Minutes cron [41]: # Hours cron [01]: # Day-month cron [*]: # Month cron [*]: # Weekday cron [*]: # Retention period [7 days]: 5 days # Retention redundancy [1]: # Extra backup parameters []: # Job status [STOPPED]: active # Remarks []: # Are all values to update correct (yes/no): yes -------------------------------------------------------- [Done] Backup definition DefID: 12 updated.
Este comando actualiza la información de un servidor de backups.
update_backup_server [SrvID | FQDN] [remarks]
Parámetros:
Los valores por defecto de un parámetro se enseñan entre corchetes``[]``. Si el usuario no define ningún valor, PgBackMan utilizará el valor por defecto.
Este comando se puede ejecutar con o sin parámetros, e.g.:
[pgbackman]$ update_backup_server -------------------------------------------------------- # SrvID / FQDN []: 1 # Remarks []: Backup server - 01 # Are all values to update correct (yes/no): yes -------------------------------------------------------- [Done] Backup server with SrvID: 1 updated.
Este comando actualiza la configuración por defecto de un servidor de backups.
update_backup_server_config [SrvID / FQDN] [PgSQL_bin_9.0] [PgSQL_bin_9.1] [PgSQL_bin_9.2] [PgSQL_bin_9.3] [PgSQL_bin_9.4] [root_backup_dir]
Parámetros:
Los valores por defecto de un parámetro se enseñan entre corchetes``[]``. Si el usuario no define ningún valor, PgBackMan utilizará el valor por defecto.
Este comando se puede ejecutar con o sin parámetros, e.g.:
[pgbackman]$ update_backup_server_config -------------------------------------------------------- # SrvID / FQDN []: 1 # PgSQL bindir 9.0 [/usr/pgsql-9.0/bin]: # PgSQL bindir 9.1 [/usr/pgsql-9.1/bin]: # PgSQL bindir 9.2 [/usr/pgsql-9.2/bin]: # PgSQL bindir 9.3 [/usr/pgsql-9.3/bin]: # PgSQL bindir 9.4 [/usr/pgsql-9.4/bin]: /usr/bin # Main backup dir [/srv/pgbackman]: # Are all values to update correct (yes/no): yes -------------------------------------------------------- [Done] Configuration parameters for SrvID: 1 updated.
Este comando actualiza la información de un nodo PgSQL.
update_pgsql_node [NodeID | FQDN] [pgport] [admin_user] [status] [remarks]
Parámetros:
Las definiciones de copias de seguridad programadas asociadas a un nodo PgSQL serán activadas/desactivadas si el nodo PgSQL cambia su estatus a RUNNING/DOWN.
Los valores por defecto de un parámetro se enseñan entre corchetes``[]``. Si el usuario no define ningún valor, PgBackMan utilizará el valor por defecto.
Este comando se puede ejecutar con o sin parámetros, e.g.:
[pgbackman]$ update_pgsql_node -------------------------------------------------------- # NodeID / FQDN []: 1 # Port [5432]: # Admin user [postgres]: # Status[RUNNING]: stopped # Remarks []: Testing update # Are all values to update correct (yes/no): yes -------------------------------------------------------- [Done] PgSQL node with NodeID: 1 updated.
Este comando actualiza los parámetros de configuración por defecto de un nodo PgSQL.
update_pgsql_node_config [NodeID / FQDN] [min_cron interval] [hours_cron interval] [daymonth_cron] [month_cron] [weekday_cron] [backup code] [retention period] [retention redundancy] [automatic deletion retention] [extra backup parameters] [extra restore parameters] [backup job status] [domain] [logs email] [admin user] [pgport] [pgnode backup dir] [pgnode crontab file] [pgnode status]
Parámetros:
Los valores por defecto de un parámetro se enseñan entre corchetes``[]``. Si el usuario no define ningún valor, PgBackMan utilizará el valor por defecto.
Este comando se puede ejecutar con o sin parámetros, e.g.:
[pgbackman]$ update_pgsql_node_config -------------------------------------------------------- # NodeID / FQDN []: 1 # Minutes cron interval [01-59]: # Hours cron interval [01-06]: # Day-month cron [*]: # Month cron [*]: # Weekday cron [*]: # Backup code [FULL]: # Retention period [7 days]: 5 days # Retention redundancy [1]: # Automatic deletion retention [14 days]: 30 days # Extra backup parameters []: # Extra restore parameters []: # Backup Job status [ACTIVE]: # Domain [example.net]: # Logs e-mail [example@example.net]: # PostgreSQL admin user [postgres]: # Port [5432]: # Backup directory [/srv/pgbackman/pgsql_node_1]: # Crontab file [/etc/cron.d/pgsql_node_1]: # PgSQL node status [STOPPED]: # Are all values to update correct (yes/no): yes -------------------------------------------------------- [Done] Default configuration parameters for NodeID: 1 updated.
Realizar copias de seguridad es una tarea de administración importante que puede tener consecuencias desastrosas si no se realiza adecuadamente. El uso de sistemas RAID en los sistemas de almacenamiento, replicación de datos entre nodos, el uso de clusters y confiar al 100% en que la SAN no fallará NO pueden reemplazar a una buena política de copias de seguridad. Estas medidas son necesarias para implementar sistemas de alta disponibilidad (HA) pero no pueden reemplazar nunca a una copia de seguridad.
Existen dos tipos diferentes de copias de seguridad que pueden ser usadas para implementar una buena política de copias de seguridad y restauración de datos:
Independientemente del tipo de copia de seguridad usada, es necesario tener un buen plan de copias y restauración de datos que tenga en cuenta los intervalos de ejecución de las copias, las políticas de retención de los mismos, los problemas de rendimiento de las copias de seguridad a realizar y el tiempo necesario para realizar una restauración completa de datos a partir de una copia de seguridad.
Este tipo de copia de seguridad copia los archivos donde PostgreSQL graba los datos de las bases de datos. Existen numerosas técnicas y metodos para realizar estas copias físicas de los archivos, que no tienen cabida en este manual. Consultar el capítulo 24 del manual de PostgreSQL, Chapter 24. Backup and Restore, para obtener información sobre estas técnicas.
Lo más importante con las copias de seguridad físicas es que algunos de los métodos que se utilizan para realizarlas junto con el archivo continuo de archivos WAL (write ahead log) se pueden utilizar para implementar PITR (Point in time recovery) y conseguir una solución completa de recuperación de desastres.
Existen numerosas soluciones que se pueden usar para administrar sistemas que implementen PITR, entre ellas PITRTools, OmniPITR y Barman.
PostgreSQL tiene dos programas, pg_dump y pg_dumpall, que se pueden utilizar para realizar copias de seguridad lógicas de bases de datos PostgreSQL. Estos crean una instantanea (snapshot) de la base de datos en el momento en que se ejecutan.
Estos programas crean copias consistentes de una o todas las bases de datos en el servidor incluso si estas se están utilizando activamente durante la creación de las copias de seguridad. Otra característica a destacar de pg_dump y pg_dumpall es que no bloquean a otros usuarios durante la ejecución de la copia de seguridad, pudiendo estos acceder a los datos sin problemas.
Aunque una copia de seguridad creada con pg_dump o pg_dumpall nunca puede garantizar una recuperación de todos los datos actualizados entre el momento en que la copia se crea y el momento de un futuro desastre con perdida de datos, estas copias son necesarias en numerosos casos, e.g. para archivar versiones de una base de datos, para mover bases de datos entre servidores, para clonar bases de datos entre sistemas de producción, pre-producción y desarrollo, o para extraer una base de datos en particular después de restaurar una copia de seguridad PITR.
De todas maneras, las copias de seguridad lógicas nos proporcionan una gran flexibilidad en numerosas ocasiones y son también una manera fácil de crear copias de seguridad de bases de datos que no necesiten copias de seguridad PITR.
Cuando creamos una copia de seguridad lógica de una base de datos necesitamos la siguiente información para asegurarnos que podremos realizar una restauración completa de los datos:
Desafortunadamente, toda esta información no se puede obtener en una ejecución única para una base de datos. 1, 2, 3 y 4 se pueden obtener con pg_dump. 5, 7 y 8 con pg_dumpall y 6 o con pg_dumpall -r o un pg_dumpall completo.
Al mismo tiempo pg_dumpall retorna toda esta información para todas las bases de datos en un cluster PostgreSQL y no solamente para la base de datos de la cual queremos realizar una copia de seguridad.
Esto es algo que el proyecto PostgreSQL tiene que mejorar en un futuro para que sea más fácil crear copias de seguridad lógicas completas en una única ejecución.
Mientras tanto, PgBackMan tiene cuidado de esto y tiene en cuenta toda la información necesaria para realizar una restauración completa de una base de datos cuando registramos una copia de seguridad en el sistema.
PgBackMan ha sido comprobado extensivamente y actualmente se encuentra en producción en la Universidad de Oslo. Sin embargo, como cualquier software, PgBackMan no está libre de errores.
Si descubre algún error, mande por favor un informe a través de la página de GitHub disponible para este propósito: https://github.com/rafaelma/pgbackman/issues
En orden alfabético:
PgBackMan es propiedad de Rafael Martinez Guerrero / PostgreSQL-es y USIT-Universidad de Oslo, y el código fuente es distribuido bajo la licencia GNU General Public License 3.