System Requirements

This page provides the list of requirements for ZRM Backup Server, ZRM client (MySQL server), MySQL server configuration and requirements for various backup methods. Users must read this section before starting to install ZRM for MySQL components as described in Downloading and Installing instructions section.

Throughout this document, The MySQL Server refers the database server being backed up by the ZRM for MySQL Server, which also called the ZRM Server.

Mysql_zrm_configuration.png

ZRM Backup Server Requirements

Backup server performs various CPU, Memory, Network, and Disk intensive operations. While hardware requirements will vary based on your backup environment, we recommend a server with at least 4GB of memory and a modern quad-core server-class CPU. The bandwidth of the network link between backup server and your network switch is also very critical. If network bonding is supported by your switch, we recommend providing a bonded connection to the backup server.

  • You should have at least 2 GB of disk space on the disk where ZRM Enterprise software is being installed.
  • Zmanda UI installation directory (/opt/zmanda/zrm) must not be a NFS mounted directory.
  • Ensure that there is at least 10% free disk space in the Zmanda installation (/opt/zmanda/zrm) and temporary directories (/tmp).

Linux/Solaris

  • Verify that the ZRM server has operating system accounts for a mysql user belonging to the mysql group. The account should have a login shell, and be able to execute commands on the ZRM server. If implementing a copy plugin to back up clients, matching accounts must be set up on the MySQL servers. The uid and gid of themysql user must match on the ZRM server and the MySQL server (backup client).
  • The mysql user must be added to cron.allow file. This file is usually in /etc or /etc/cron.d directory. The crontab file must be also editable by mysql user.
  • On ubuntu platform, the crontab for mysql must set the MAILTO parameter to a valid email address (or an empty string). The following example shows the entry for setting the parameter to an empty string:
MAILTO=””
  • The ZRM server must have the locale set to en_US.UTF-8 (US English, UTF-8 Character set).

Windows

  • ZRM server must be installed and run from the Administrator account.
  • Windows server must be running US English edition

ZRM Server Package Dependencies

The following packages are required on the ZRM Server (32-bit versions of packages required):

Linux

  • The MySQL client commands installed on the ZRM server must be compatible with the version of MySQL servers being backed up. Zmanda recommends installing the same version of MySQL software on the ZRM server and MySQL server. The ZRM server uses mysqlbinlog command to parse binary logs created by the MySQL servers. So, the version of mysqlbinlog command must be compatible with binary logs generated by different MySQL servers that are being backed up.
  • MySQL Enterprise Backup and Xtrabackup binaries must be installed on the ZRM server in the same location as MySQL server under the following use cases: streaming backup mode (default configuration) and when apply logs are performed during restores (apply-log parameter should be set to 0 in the backup set's mysql-zrm.conf).
  • The ZRM server assumes that the MySQL commands are installed in /usr/bin/. You can change this default either globally or by backup set. If necessary, you can change the client command location and binary log location inSet Site Defaults page. See the MySQL subsection of the Backup Tab for details.
  • On some distributions (such as debian), the default mysql binary log location /var/log/mysql is owned by mysqluser and adm group. ZRM expects the binary logs to be owned by mysql user and mysql group. Please change the group ownership of the directory.
  • mailx: The mailx package can be found as part of the Linux distribution. The mailx package must be configured to send mail from the ZRM machine to the MySQL database backup administrator.
  • On 64-bit ubuntu/debian platforms, ZRM installer needs ia32-libs package. On 64bit RHEL/Oracle Enterprise Linux/Fedora/CentOS platforms, glibc.i686, libgcc.i686, libstdc++.i686 and ncurses-libs.i686 packages are required.
  • ZRM server also installs ZRM client. So, all ZRM client dependencies are also required.

The dependency packages are installed by default on most Linux distributions. If you need to add them, you can use yum or apt-get, either from the distribution media, or from a distribution repository (run either as root):

#yum install package_name

or

#apt-get install package_name

 

Solaris

  • The MySQL client commands installed on the ZRM server must be compatible with the version of MySQL servers being backed up. Zmanda recommends installing the same version of MySQL software on the ZRM server and MySQL server.
  • The ZRM server assumes that the MySQL backup client's MySQL commands are installed in /usr/bin/. You can change this default either globally or by backup set. If necessary, you can change the client command location and binary log location in Set Site Defaults page. See the MySQL subsection of the Backup Tab for details.
  • mailx: The mailx package can be found as part SUNWcsu package. ZRM uses mailx program to send email notification.
  • GNU utilities (such as GNU tar, GNU find) are also required on the server.

The Zmanda Network downloads page collects all these packages in a downloadable tar archive (which is made available after you select a platform to download). If necessary, download the tar archive to the local system, extract it, and run pkgadd as the superuser to install any necessary packages:

# pkgadd -d package_name

Windows

  • ZRM server can only run on 32bit Windows platform.
  • ActivePerl version 5.8.8 is required. Please contact Zmanda if you do not have access to ActivePerl version 5.8.8. After downloading the file, run the Setup program. After you confirm the license agreement, the Setupprogram asks you what programs to install and prompts you for some installation details. Install all of the products in their default locations, and make sure that the Add Perl to the PATH environment variable andCreate Perl file extension association boxes are checked before clicking through the Finish dialog.
  • Additional Perl modules are also required. These are installed as part of ZRM installation. ZRM installer requires connection to Internet during installation.
  • ZRM for MySQL requires the MySQL client commands listed below to be installed on the ZRM server. ZRM uses the following MySQL commands on the ZRM server:

MySQL server (Backup Client) Requirements

  • Verify that the version(s) of MySQL server(s) that you deploy are supported by Zmanda Recovery Manager for MySQL. Check the supported platform compatibility matrix.
  • You must set up an operating system account for the mysql user. Our recommendation is the mysql user should have UID and GID that match mysql user on the ZRM server especially for ssh copy plugin. This user must have read/write access to the MySQL data directory and binary logs.
  • MyDumper (Logical parallel backup tool) or MySQL Enterprise Backup or Xtrabackup (1.6 or later) tools must be installed on the MySQL server if the tool is going to be used for full backups. If you are planning to use Xtrabackup compression option, the compression tool, qpress must be installed on the MySQL server.

MySQL server (backup clients) package dependencies

 

Linux

  • perl: The perl-DBIperl-DBD-MySQL, and perl-XML-Parser modules are also required.
  • perl LWP-UserAgent module is required for Netapp snapshot backups.
  • xinetd
  • sudo (required only for snapshot backup configurations)
  • Gnu tar version 1.15 or later.

These programs are installed by default on most Linux distributions. If you need to add them, you can use yum orapt-get to install them, either from the distribution media, or from a distribution repository (you run either as root):

#yum install package_name

or

#apt-get install package_name
 

Solaris

  • perl: The Perl-DBIPerl-DBD-MySQL, and perl-XML-Parser modules are also required. 
  • perl LWP-UserAgent module is required for Netapp snapshot backups.
  • SUNWcsu
  • SUNWsshcu
  • SUNWgzip
  • SMCtar (version 1.15.1 or greater)
  • SMCgpgme
  • SMCsudo (required only for snapshot backup configurations)
  • SMCgrep
  • SMCcoreu

The Zmanda Network downloads page collects all these packages in a downloadable tar archive (which is made available after you select Solaris platform). If necessary, download the tar archive to the local system, extract it, and run pkgadd as the superuser to install any necessary packages:

# pkgadd -d package_name

If you are using ZRM dependency tar ball for installation, you may need additional dependency common-1.4.5-SunOS5.8-sparc-CSW.pkg that is not part of the tar ball.

Windows

  • Databases to be backed up must be stored on NTFS volumes with the Volume Shadow Copy Service (VSS) enabled.
  • Windows clients must open inbound TCP ports 10080 and 10081, and outbound TCP ports 700:800.
  • Windows clients must open inbound TCP ports 10080 and 10081, and outbound TCP ports 700:800.
  • The Remote Registry Service must be enabled before installation.
 

MySQL database user for ZRM

We recommend creating a MySQL database user for ZRM backup and recovery instead of using the MySQL root user. If the MySQL database backup user and restore user are different, set the privileges of the backup user in Backup Tab for the backup set.

Restore user privileges can be specified on the mysql-zrm(1) command line via the --user and --password options.

If you are using Xtrabackup or MySQL Enterprise Backup as the full backup method, the MySQL user should have privileges to access the database(s) from the localhost (mysql server) as well as the ZRM server.

Although MySQL allows dollar signs ($) in passwords, the ZMC does not. If you must use passwords that include dollar signs at your site, consider using one of the alternative methods for storing MySQL user passwords described in the MySQL article "Keeping your Password Secure".

Required Privileges for the MySQL Account

MySQL backup and restore users need, at minimum, the following MySQL privileges (MySQL 5.1.6 or later):

backup user 
LOCK TABLES, SELECT, FILE, RELOAD, SUPER, UPDATE, TRIGGER, SHOW VIEW, EXECUTE, EVENT
restore user 
CREATE, DROP, INDEX, SHUTDOWN, INSERT, ALTER, DELETE, UPDATE, TRIGGER, SUPER, REPLICATION CLIENT, CREATE VIEW

EXECUTE,  SHOW VIEW and CREATE VIEW privileges are required for MySQL server version 5.0 or greater.  Before MySQL 5.1.6, the SUPER privilege was required to create or drop triggers and so TRIGGER and EVENT privileges are not required.

MySQL backup user requires SUPER privileges even when MySQL replication is not being used. For incremental backups, ZRM for MySQL requires SUPER privileges to enable binary logging.

A MySQL replication slave backup user should have REPLICATION CLIENT privileges in addition to the above privileges.

Example: Command that grants minimal user privileges for database user dbabackup to backup and restore databaseexpenses (MySQL 5.1 server) remotely from machine server.company.com :

mysql> GRANT LOCK TABLES, EXECUTE, SELECT, FILE, RELOAD, DELETE, SUPER, CREATE, DROP, INDEX, SHUTDOWN, INSERT, ALTER, UPDATE, SUPER, REPLICATION CLIENT, TRIGGER, SHOW VIEW, CREATE VIEW
     -> ON expenses.*
     -> TO 'dbabackup'@'server.company.com'
     -> IDENTIFIED BY 'obscure';

ZRM for MySQL should be running on server.company.com. If you are restoring from logical backups, additional privileges will be required for the restore user. For example, if there are stored procedures in the logical backup image being restored, the restore user must have CREATE ROUTINE and ALTER ROUTINE privileges. If you are not sure of the list of privileges that are required for restoration, temporarily grant the restore user all privileges for the databases and/or tables being restored.

Note:

  1. If you are backing up remote MySQL server, backup user privileges should be granted for the backup user accessing from the MySQL server as well as the server running ZRM (ZRM server).
  2. RELOAD privilege is granted at MySQL server level (not at database level) and so following grant command for RELOAD privilege at MySQL server level. Please see MySQL documentation for privileges.
grant RELOAD on *.* to 'user'@'host' identified by 'password

 

Enabling MySQL server binary logs

MySQL backups (full and log incremental) require that binary logging on the MySQL server. To enable binary logging, start the MySQL server daemon (mysqld) with the --log-bin option:

mysqld --log-bin=BinLogFilename

Enabling binary logs on a MySQL server reduces performance by about 1%. Actual performance degradation depends on the type of database workload. It is the best practice to store binary logs in a different file system than the file system containing the database directories.

Consult MySQL reference manual for more information on MySQL binary logs.

log-slave-updates must be enabled on the replication slave mysqld options file (my.cnf) if you are performing backups of a MySQL replication slave. Please note when replication master is switched over to a slave and there is chained replication (master -> slave -> slave), there might be duplicate events if log-slave-updates is enabled on the slave.

Requirements for Snapshot and Storage Checkpoint Backups

ZRM for MySQL can create temporary snapshots of the file systems or storage volumes and use these snapshot volumes to do backups. If the database resides on a Veritas File System (VxFS), storage checkpoints can be leveraged.

Various storage and filesystem snapshots are supported. Some snapshot mechanisms are licensed and will require licenses to be purchased. All MySQL database files (data, log, indexes) must be stored on snapshot-capable storage volumes.

The requirements for each file system and storage snapshot is different. They are discussed in the Snapshot Plugins chapter.

 

Requirements for InnoDB Hot Backup/MySQL Enterprise Backup

The ibbackup command (which is installed as part of the MySQL Enterprise Backup or InnoDB Hot Backup product) must be installed on the MySQL Server. MySQL Enterprise Backup or InnoDB Hot Backup product must be purchased from Oracle or at www.innodb.com. ZRM provides integration with MySQL Enterprise Backup or InnoDB Hot Backup product. Make sure the mysql operating system user has permissions to execute the command. If ibbackup command is installed in a place other than /usr/bin, you must specify the path when you choose InnoDB Hot Backup on theBackup How page.

 

SSL Between MySQL Servers and ZRM server

SSL provides an additional layer of security while moving backups over a network. We recommended that you enable SSL on the MySQL server if the backups are performed on unsecured networks. Installing SSL between the local ZRM for MySQL server and remote MySQL server(s) is necessary only for logical backups of remote MySQL servers.

To verify the availability of SSL support in the MySQL server, you can either:

  • Run the following command on the local server:
# mysqld --ssl --help
When the SSL support does not exist, the system responds with a message like this:
060828 15:25:08 [ERROR] mysqld: unknown option '--ssl'
  • Examine the value of the have_openssl system variable:
mysql> SHOW VARIABLES LIKE 'have_openssl';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| have_openssl  | YES   |
+---------------+-------+

Consult the MySQL reference manual for configuring SSL on MySQL.

Zmanda recommends using either of the two options given below to configure SSL when remote backups of MySQL servers done using unsecured networks.

  • Set SSL parameters in the my.cnf file of MySQL on the ZRM server.
 ssl-ca=mySQL_conf_dir/openssl/cacert.pem
 ssl-cert=mySQL_conf_dir/openssl/client-cert.pem
 ssl-key=mySQL_conf_dir/openssl/client-key.pem
  • Set SSL parameters for all backup set in mysql-zrm.conf file of ZRM for MySQL or you can specify it in the SSL options field in Backup What page of ZMC.
 ssl-options="--ssl --ssl-ca=mySQL_conf_dir/openssl/cacert.pem
                    --ssl-cert=mySQL_conf_dir/openssl/client-cert.pem        
                    --ssl-key=mySQL_conf_dir/openssl/client-key.pem"