Package CedarBackup2 :: Package extend :: Module mysql
[show private | hide private]
[frames | no frames]

Module CedarBackup2.extend.mysql

Provides an extension to back up MySQL databases.

This is a Cedar Backup extension used to back up MySQL databases via the Cedar Backup command line. It requires a new configuration section <mysql> and is intended to be run either immediately before or immediately after the standard collect action. Aside from its own configuration, it requires the options and collect configuration sections in the standard Cedar Backup configuration file.

The backup is done via the mysqldump command included with the MySQL product. Output can be compressed using gzip or bzip2. Administrators can configure the extension either to back up all databases or to back up only specific databases. Note that this code always produces a full backup. There is currently no facility for making incremental backups. If/when someone has a need for this and can describe how to do it, I'll update this extension or provide another.

The extension assumes that all configured databases can be backed up by a single user. Often, the "root" database user will be used. An alternative is to create a separate MySQL "backup" user and grant that user rights to read (but not write) various databases as needed. This second option is probably the best choice.

The extension accepts a username and password in configuration. However, you probably do not want to provide those values in Cedar Backup configuration. This is because Cedar Backup will provide these values to mysqldump via the command-line --user and --password switches, which will be visible to other users in the process listing.

Instead, you should configure the username and password in one of MySQL's configuration files. Typically, that would be done by putting a stanza like this in /root/.my.cnf:
  [mysqldump]
  user     = root
  password = <secret>
Regardless of whether you are using ~/.my.cnf or /etc/cback.conf to store database login and password information, you should be careful about who is allowed to view that information. Typically, this means locking down permissions so that only the file owner can read the file contents (i.e. use mode 0600).

Author: Kenneth J. Pronovici <pronovic@ieee.org>

Classes
LocalConfig Class representing this extension's configuration document.
MysqlConfig Class representing MySQL configuration.

Function Summary
  backupDatabase(user, password, backupFile, database)
Backs up an individual MySQL database, or all databases.
  executeAction(configPath, options, config)
Executes the MySQL backup action.

Variable Summary
Logger logger = <logging.Logger instance at 0x3aefcbcc>
list MYSQLDUMP_COMMAND = ['mysqldump']

Function Details

backupDatabase(user, password, backupFile, database=None)

Backs up an individual MySQL database, or all databases.

This function backs up either a named local MySQL database or all local MySQL databases, using the passed-in user and password (if provided) for connectivity. This function call always results a full backup. There is no facility for incremental backups.

The backup data will be written into the passed-in backup file. Normally, this would be an object as returned from open(), but it is possible to use something like a GzipFile to write compressed output. The caller is responsible for closing the passed-in backup file.

Often, the "root" database user will be used when backing up all databases. An alternative is to create a separate MySQL "backup" user and grant that user rights to read (but not write) all of the databases that will be backed up.

This function accepts a username and password. However, you probably do not want to pass those values in. This is because they will be provided to mysqldump via the command-line --user and --password switches, which will be visible to other users in the process listing.

Instead, you should configure the username and password in one of MySQL's configuration files. Typically, this would be done by putting a stanza like this in /root/.my.cnf, to provide mysqldump with the root database username and its password:
  [mysqldump]
  user     = root
  password = <secret>
If you are executing this function as some system user other than root, then the .my.cnf file would be placed in the home directory of that user. In either case, make sure to set restrictive permissions (typically, mode 0600) on .my.cnf to make sure that other users cannot read the file.
Parameters:
user - User to use for connecting to the database (if any)
           (type=String representing MySQL username, or None)
password - Password associated with user (if any)
           (type=String representing MySQL password, or None)
backupFile - File use for writing backup.
           (type=Python file object as from open() or file().)
database - Name of the database to be backed up.
           (type=String representing database name, or None for all databases.)
Raises:
ValueError - If some value is missing or invalid.
IOError - If there is a problem executing the MySQL dump.

executeAction(configPath, options, config)

Executes the MySQL backup action.
Parameters:
configPath - Path to configuration file on disk.
           (type=String representing a path on disk.)
options - Program command-line options.
           (type=Options object.)
config - Program configuration.
           (type=Config object.)
Raises:
ValueError - Under many generic error conditions
IOError - If a backup could not be written for some reason.

Variable Details

logger

Type:
Logger
Value:
<logging.Logger instance at 0x3aefcbcc>                                

MYSQLDUMP_COMMAND

Type:
list
Value:
['mysqldump']                                                          

Generated by Epydoc 2.1 on Mon Sep 4 13:49:32 2006 http://epydoc.sf.net