Mysql-zrm: Difference between revisions

From wiki.zmanda.com
Jump to navigation Jump to search
 
(26 intermediate revisions by the same user not shown)
Line 1: Line 1:
== NAME ==
==NAME==


mysql-zrm - MySQL backup and recovery tool
mysql-zrm - Backup and recovery utility for ZRM for MySQL


== SYNOPSIS ==
==SYNOPSIS==
 
      mysql-zrm --action [ backup |
mysql-zrm --action <backup|restore|list>
                            restore |
          [--backup-set <name>]
                            schedule-backup |
          [--source-directory <directory name>]
                            report |
          [--replication | --noreplication]
                            list |
          [--backup-name <name>]
                            purge  |
          [--all-databases]
                            parse-binlogs  |
          [--databases <"name1 name2 ...">]
                            check  |
          [--destination <directory name>]
                            verify-backup |
          [--database <name> [--tables <"name1 name2 ...">]]
                            extract-backup |
          [--backup-level <0|1>]
                            abort-backup ]
          [--backup-mode <raw|logical>]
          [--lvm-snapshot <size>]
          [--start-position <#>]
          [--stop-position <#>]
          [--start-datetime <name>]
          [--stop-datetime <name>]
          [--index|--noindex]
          [--till-lastfull]
          [--all-backups]
          [--options-file <filename>]
          [--mailto <mail address>]
          [--user <user>]
          [--password <password>]
          [--host <hostname>]
          [--port <portnumber>]
          [--ssl-options <"MySQL ssl options">]
          [--comment <"Note about the backup">]
          [--quiet|--no-quiet]
          [--verbose]
          [--help]


==DESCRIPTION==
==DESCRIPTION==
     
This tool is part of Zmanda Recovery Manager for MySQL (MySQL ZRM) and can be used to backup and restore MySQL databases. This tool does full  and  incremental  backups  as well as full and selective restores.  The tool also provides a ''list'' option to provide information about the prior backups.


Users are expected to schedule backups with mysql-zrm tool using [[mysql-zrm-scheduler]](1) tool. MySQL  database  recovery has to be done using the mysql-zrm tool.
ZRM  for MySQL  provides  automated  scheduling  of  live MySQL database backup. You only need to configure it once to reflect the MySQL deployment,  then  schedule it to run unattended backups. Various options can help an administrator:


===BACKUP SETS===
* Verify the backups created.
     
* Generate various types of reports about the backups created.
MySQL ZRM organizes the backups in terms  of  backup setsEach backup set defines the list of databases or tables within a database, how it should be backed up  and the backup schedule for the data. Backup set is  identified by an unique string for each MySQL ZRM instance.
* Specify compression and encryption as desired.
* Report information about the backups via an email or RSS feed.
* Access pre- and post- backup plugins to extend the suite further.
* Control full and selective  restore operations on the database, both locally and remotely.


Every backup run (each time mysql-zrm is executed) is associated with one backup set.
ZRM  for  MySQL ’s  primary  command  line  utility  is mysql-zrm, which provides the core backup/restore functions for MySQL databases.


The mysql-zrm tool reads global MySQL ZRM configuration file - /etc/mysql-zrm/mysql-zrm.conf. The global configuration file can be overridden by backup set specific configuration file stored in /etc/mysql-zrm/<backup set name>/ directory.
Use  the  [[mysql-zrm.conf]](5)  configuration file  to set mysql-zrm options.


The mysql-zrm command line options will override the  parameters specified in the configuration files.
Use the --action check option to verify the  configuration of mysql-zrm.
The order in the which backup set parameters will be read:
# /etc/mysql-zrm/mysql-zrm.conf
# /etc/mysql-zrm/<backup set>/mysql-zrm.conf
# Parameters read from --options-file command line  argument
# Options specified on the command line


===BACKUP METHODS===
Use  mysql-zrm  to  create  full or incremental backups of MySQL  databases and  perform  full,  incremental  and  selective  restores as well. The --list option provides information about prior backups.


The mysql-zrm full backups can be logical backups or raw backups. Logical backups contain SQL statements to recreate the database. Raw backups are actual copy of the database files. If backup-mode is specified as  ''raw'', the tool has the ability to decide which backup mechanism to use  for  a  particular database.  If  there are no transactional storage engine based tables in the specified database,  then  the tool  will  use mysqlhotcopy for backing up that  databaseOtherwise  it will use mysqldump  for  backing  up the specified database. If backup-mode  option is specified  as  logical  then only mysqldump will be used for backing up specified databases and tables.
To display help on individual action options, append the --help option to the appropriate command lineFor example:
  mysql-zrm --action backup --help


If the lvm-snapshot option is specified and if the  specified  database is put on an LVM volume then a snapshot of that volume is taken and the database is backed up from that snapshot. If the database is not on a lvm volume  then the mysqlhotcopy or  mysqldump will be used as per the logic in the last paragraph.
===BACKUP SETS===


If the replication option is specified and if the mysql server is a slave server, then the tool will also backup all replication related files.
ZRM for MySQL organizes the backups into ''backup sets''. Each backup set defines:


If the destination option is specified then the backups are stored in a sub directory under the specified directory. Default value is ''/var/lib/mysql-zrm''.
* a list of database(s) or table(s) within a database to back up
* backup options to use on this backup set
* scheduling options to use on this backup set.


An index file is also created in the backup directory. The index file contains the details of the backup run.  
Backup sets are identified by a unique name.


If incremental backup is specified, then the command line options backup-mode, lvm-snapshot, all-databases, databases, database and tables are ignored.
Every backup run (each time mysql-zrm is executed) is  associated  with one  backup   set.  Various parameters can be associated with each backup run.


===RECOVERY===
mysql-zrm    first    reads    the    global      configuration  file (/etc/mysql-zrm/mysql-zrm.conf).  The  global configuration file can be overridden  by  any  backup  set  configuration    file stored  in ''/etc/mysql-zrm/backup  set  name/'' directory. The mysql-zrm command line options will override the parameters  specified  in  the configuration files.
===BACKUP METHODS===


For restores, only all-databases and databases options are supported. So if the backup contains only specific tables from a database, you need to specify mysql-zrm action as ''restore'' and the database name to restore the backed up tables. This will only restore the backed up tables. If there are other tables in the database, those will be left untouched.
mysql-zrm  backups can be  either  full or incremental. Full backups can be logical backups or raw backups. Logical  backups  contain SQL  statements  to recreate the database. Raw backups are actual copies of the database files.


If the ''list'' action is specified, the tool will display the backup level, the name of the directory containing the backup and the index of the last backup of  the specified backup  set.
When logical backup is specified, the  utility uses only mysqldump for backing up specified databases and tables.


If the ''all-backups'' option is  specified then the above specified data will be displayed for all of the backups that has happened till date for the given backup-set.
When  raw  backup  is   specified, the utility has the ability to decide which backup mechanism to use for a particular database. If there are no transactional storage engine based tables in the specified database, it uses mysqlhotcopy for backing up that database.  Otherwise,  it  uses mysqldump for backing up the specified database.


If the option ''till-lastfull'' is specified then the data since last full backup will be displayed. This option is useful to find out which backups are need to be able to complete a full restore.
An  index file is also created in the backup directory.  The index contains the details of what was backed up, how much data was backed  up, what  parameters were used to backup the data, how much time it took to backup etc.


If the option source-directory is specified  then the index of that backup is displayed.
===RECOVERY===


If the option noindex is specified then the level of backup and the name of the directory containing the backup will be displayed and the contents of the index file will not be displayed.
When  restoring  databases,  only  the all-databases  and databases  options are  allowed.    In  the case  of  clusters,  only  the all-databases option is allowed.


===OPTIONS===
When the backup  contains  only  specific  tables  from  a database, you need to  specify  mysql-zrm  action as restore and the database name to restore the backed up tables.  Tables not included in  the  backup but present in the database will be left untouched.


; --action <backup|restore|list> : Specify which action to do. This option cannot be specified in the options file.
===ACTIONS===


; --backup-set <name> : Specify backup-set for the backup run. This option cannot be specified in the options file.  The default value for this parameter is BackupSet1
Specify backup to initiate a backup run.


; --source-directory <directory name> : Specify  the  directory containing a backup.  This option is ignored if the action specified is backup.
Use restore to restore from a specified backup.


; --replication | --noreplication :  Specify if replication files should be backed up. The replication related files will be backed up only if the host is a replication slave. Default option is --noreplication
Use  schedule-backup to setup the schedule for the backup.


; --backup-name <name> : Specifies the name of the directory in which backup should be done.  This should be a unique name for each backup run.  If not specified, the current timestamp will be used as the backup-name.
Specify report to generate reports on backup runs.


; --all-databases : Specifies that all databases should be backed up or restored. This is the default if databases or database is not specified
Use check to verify if a backup set configuration is correct.


; --databases <"name1 name2 ..."> : Specifies the specific databases to backup or restore
Use  list  to  display the backup level, the name of the directory containing the backup and the index of the  last backup  of the specified backup set.


; --database <name> [--tables <"name1 name2 ...">] : Specifies which specific tables should be backed up. This option is only supported during the backup operation.
Action parse-binlogs will display the parsed output of the binary logs. This is useful to  find  out  the log  positions  and/or timestamp  to  be used for restore operations.


; --destination <directory name> : Directory to which backup should be done. Default location is      /var/lib/mysql-zrm
Specify  purge to remove backups present in the directory specified by the destination option whose retention policy has been exceeded.


; --backup-level <0|1> : If 0 is specified, then a full backup is done. If 1 is specified, an incremental backup is done.  Default is 0 if backup-level option is not specified
Specify verify-backup to verify a backup


; --backup-mode <raw|logical> : If raw is specified  then mysqlhotcopy is used to backup the specified database/tables if the database does  not contain any tables that uses a transactional engine. Otherwise, mysqldump is used. If logical is  specified then  mysqldump is only used. Default is raw.
Use extract-backup to uncompress/decrypt a specified backup


; --lvm-snapshot <size> :  This specifies the size of the lvm snapshot to be used. For raw backups, each specified database is checked to see if that is on a  LVM  volume.  If it is then a snapshot of the specified size is              created and that is used to backup up the database. If not it will use either mysqlhotcopy or mysqldump based on the logic described in the backup-mode option. This option is ignored if the backup-mode is specified as logical.
Specify abort-backup to abort the backup run for a given backup-set.


; --start-position N : Start selective restore of all events after log position N. Log positions can be determined using mysqlbinlog --hexdump option.
===OPTIONS===
 
; --stop-position N : Stop selective restore of all events before log position N. Log positions can be determined using mysqlbinlog --hexdump option.
 
; --start-datetime <name> : Selective restore till specified date and time (should be in MySQL DATETIME or TIMESTAMP format)
 
; --stop-datetime <name> :  Selective restore till specified date and time (should be in MySQL DATETIME or TIMESTAMP format)
 
; --index|--noindex : Specify if the contents of the index file should be displayed during the list action
 
; --all-backups : Specifies that information about all available backups should be displayed
 
; --till-lastfull :  Specifies that information till the last full backup should be displayed
 
; --options-file <filename> : Specify the file containing all of the options
 
; --mailto <mail address> : Address to which backup report to be sent.
 
; --user <user> : Specify MySQL backup/restore user
 
; --password <password> : Specify password for the MySQL user
 
; --host <hostname> : MySQL server host name or IP name
 
; --port <portnumber> : MySQL server port
 
; --ssl-options <"MySQL ssl options"> : Any --ssl* options that MySQL supports. Please refer to MySQL documentation for details of the ssl* options.
 
; --comment <"Note about the backup run"> : Comment or a note about the backup run.  This can be used to tag            backup  runs  and  the  note  can  retrieved  using [[msql-zrm-reporter]](1) tool.
 
; --quiet|--no-quiet : Specifying no-quiet will lead to the log messages also being displayed on stdout. Default is quiet.
 
; --verbose : Provide more verbose output in the log
 
; --help : Display help message and exit. This option cannot be specified in the options file
 
==EXAMPLES==
 
For  backup the most common usage of mysql-zrm will be to specify replication, an appropriate lvm-snapshot size and the  destination  directory for backup. Usually, these backup parameters are specified in the configuration file and the MySQL backups are done using mysql-zrm-scheduler(1).
 
# mysql-zrm  --action  backup  --replication  --lvm-snapshot 100MB --destination /var/lib/mysql-zrm
 
For a logical backup of specific tables you would use
 
# mysql-zrm  --action  backup  --replication  --lvm-snapshot 100MB --destination /var/lib/mysql-backup \
  --backup-mode  logical --database dbname --tables "table1 table2 table"
 
Following command will list contents of backup
 
# mysql-zrm --action list --source-directory /var/lib/mysql-zrm/backupset1/2006081812153
 
For restoring the following can be used


  # mysql-zrm --action restore --source-directory /var/lib/mysql-zrm/backupset1/20060818121532
  --action backup | restore | schedule-backup | report | list  |
          purge  |  parse-binlogs  |  check  | verify-backup |
          extract-backup | abort-backup


This will restore all databases that were backed up. If the source directory points to a full backup, it will do a full restore else it will do a incremental restore.
These mutually exclusive  --action  options choose the basic functionality  of  the  utility. This form cannot be used in the configuration file.


==FILES==
==FILES==
Line 172: Line 103:
; /var/lib/mysql-zrm : Directory under which all backup data is stored.
; /var/lib/mysql-zrm : Directory under which all backup data is stored.


; /etc/mysql-zrm/<backup set name>/mysql-zrm.conf : Configuration file read by mysql-zrm tool.
; /etc/mysql-zrm/backup set name/mysql-zrm.conf : Configuration file ZRM for MySQL.


==RETURN VALUES==
==RETURN VALUES==


On success, zero is returned. On error, non-zero value is returned.
On success, zero is returned. On error, non-zero value is returned.


==SEE ALSO==
==SEE ALSO==


[[mysql-zrm-scheduler]](1), [[mysql-zrm-reporter]](1),  mysqldump(1), mysqlbinlog(1), mysql(1), lvm(8)
[[mysql-zrm-backup]](1), [[mysql-zrm-manage-backup]](1), [[mysql-zrm-restore]](1),  [[mysql-zrm-check]](1), [[mysql-zrm-list]](1),  [[mysql-zrm-parse-binlogs]](1),  [[mysql-zrm-purge]](1), [[mysql-zrm-extract-backup]](1), [[mysql-zrm-verify-backup]](1), [[mysql-zrm-abort-backup]](1), [[mysql-zrm-scheduler]](1), [[mysql-zrm-reporter]](1),  [[mysql-zrm.conf]](5),  mysqldump(1), mysqlbinlog(1), mysql(1), lvm(8)


==AUTHOR==
==AUTHOR==


Zmanda Inc. (http://www.zmanda.com)
Zmanda Inc. (http://www.zmanda.com/)

Latest revision as of 21:16, 26 November 2008

NAME

mysql-zrm - Backup and recovery utility for ZRM for MySQL

SYNOPSIS

      mysql-zrm --action [ backup |
                           restore |
                           schedule-backup |
                           report |
                           list |
                           purge  |
                           parse-binlogs  |
                           check   |
                           verify-backup  |
                           extract-backup  |
                           abort-backup ]

DESCRIPTION

ZRM for MySQL provides automated scheduling of live MySQL database backup. You only need to configure it once to reflect the MySQL deployment, then schedule it to run unattended backups. Various options can help an administrator:

  • Verify the backups created.
  • Generate various types of reports about the backups created.
  • Specify compression and encryption as desired.
  • Report information about the backups via an email or RSS feed.
  • Access pre- and post- backup plugins to extend the suite further.
  • Control full and selective restore operations on the database, both locally and remotely.

ZRM for MySQL ’s primary command line utility is mysql-zrm, which provides the core backup/restore functions for MySQL databases.

Use the mysql-zrm.conf(5) configuration file to set mysql-zrm options.

Use the --action check option to verify the configuration of mysql-zrm.

Use mysql-zrm to create full or incremental backups of MySQL databases and perform full, incremental and selective restores as well. The --list option provides information about prior backups.

To display help on individual action options, append the --help option to the appropriate command line. For example:

 mysql-zrm --action backup --help

BACKUP SETS

ZRM for MySQL organizes the backups into backup sets. Each backup set defines:

  • a list of database(s) or table(s) within a database to back up
  • backup options to use on this backup set
  • scheduling options to use on this backup set.

Backup sets are identified by a unique name.

Every backup run (each time mysql-zrm is executed) is associated with one backup set. Various parameters can be associated with each backup run.

mysql-zrm first reads the global configuration file (/etc/mysql-zrm/mysql-zrm.conf). The global configuration file can be overridden by any backup set configuration file stored in /etc/mysql-zrm/backup set name/ directory. The mysql-zrm command line options will override the parameters specified in the configuration files.

BACKUP METHODS

mysql-zrm backups can be either full or incremental. Full backups can be logical backups or raw backups. Logical backups contain SQL statements to recreate the database. Raw backups are actual copies of the database files.

When logical backup is specified, the utility uses only mysqldump for backing up specified databases and tables.

When raw backup is specified, the utility has the ability to decide which backup mechanism to use for a particular database. If there are no transactional storage engine based tables in the specified database, it uses mysqlhotcopy for backing up that database. Otherwise, it uses mysqldump for backing up the specified database.

An index file is also created in the backup directory. The index contains the details of what was backed up, how much data was backed up, what parameters were used to backup the data, how much time it took to backup etc.

RECOVERY

When restoring databases, only the all-databases and databases options are allowed. In the case of clusters, only the all-databases option is allowed.

When the backup contains only specific tables from a database, you need to specify mysql-zrm action as restore and the database name to restore the backed up tables. Tables not included in the backup but present in the database will be left untouched.

ACTIONS

Specify backup to initiate a backup run.

Use restore to restore from a specified backup.

Use schedule-backup to setup the schedule for the backup.

Specify report to generate reports on backup runs.

Use check to verify if a backup set configuration is correct.

Use list to display the backup level, the name of the directory containing the backup and the index of the last backup of the specified backup set.

Action parse-binlogs will display the parsed output of the binary logs. This is useful to find out the log positions and/or timestamp to be used for restore operations.

Specify purge to remove backups present in the directory specified by the destination option whose retention policy has been exceeded.

Specify verify-backup to verify a backup

Use extract-backup to uncompress/decrypt a specified backup

Specify abort-backup to abort the backup run for a given backup-set.

OPTIONS

--action backup | restore | schedule-backup | report | list  |
         purge  |  parse-binlogs  |  check  | verify-backup |
         extract-backup | abort-backup

These mutually exclusive --action options choose the basic functionality of the utility. This form cannot be used in the configuration file.

FILES

/var/lib/mysql-zrm
Directory under which all backup data is stored.
/etc/mysql-zrm/backup set name/mysql-zrm.conf
Configuration file ZRM for MySQL.

RETURN VALUES

On success, zero is returned. On error, non-zero value is returned.

SEE ALSO

mysql-zrm-backup(1), mysql-zrm-manage-backup(1), mysql-zrm-restore(1), mysql-zrm-check(1), mysql-zrm-list(1), mysql-zrm-parse-binlogs(1), mysql-zrm-purge(1), mysql-zrm-extract-backup(1), mysql-zrm-verify-backup(1), mysql-zrm-abort-backup(1), mysql-zrm-scheduler(1), mysql-zrm-reporter(1), mysql-zrm.conf(5), mysqldump(1), mysqlbinlog(1), mysql(1), lvm(8)

AUTHOR

Zmanda Inc. (http://www.zmanda.com/)