14.2.2. Using Heartbeat with MySQL and DRBD

To use Heartbeat in combination with MySQL, use DRBD (see Section 14.1, “Using MySQL with DRBD”) or another solution that enables sharing the MySQL database files in event of a system failure. In these examples, DRBD is used as the data sharing solution.

Heartbeat manages the configuration of different resources to manage the switching between two servers in the event of a failure. The resource configuration defines the individual services that should be brought up (or taken down) in the event of a failure.

The haresources file within /etc/ha.d defines the resources that should be managed, and the individual resource mentioned in this file in turn relates to scripts located within /etc/ha.d/resource.d. The resource definition is defined all on one line:

drbd1 drbddisk Filesystem::/dev/drbd0::/drbd::ext3 mysql

The line is notionally split by whitespace. The first entry (drbd1) is the name of the preferred host; that is the server that is normally responsible for handling the service. The last field is virtual IP address or name that should be used to share the service. This is the IP address that should be used to connect to the MySQL server. It is automatically allocated to the server that is active when Heartbeat starts.

The remaining fields between these two fields define the resources that should be managed. Each Field should contain the name of the resource (and each name should refer to a script within /etc/ha.d/resource.d). In the event of a failure, these resources are started on the backup server by calling the corresponding script (with a single argument, start), in order from left to right. If there are additional arguments to the script, you can use a double colon to separate each additional argument.

In the above example, we manage the following resources:

  • drbddisk: The DRBD resource script, this switches the DRBD disk on the secondary host into primary mode, making the device read/write.

  • Filesystem: Manages the Filesystem resource. In this case we have supplied additional arguments to specify the DRBD device, mount point and file system type. When executed this should mount the specified file system.

  • mysql: Manages the MySQL instances and starts the MySQL server. Copy the mysql.resource file from the support-files directory from any MySQL release into the /etc/ha.d/resources.d directory.

    If this file is not available in your distribution, you can use the following as the contents of the /etc/ha.d/resource.d/mysql.resource file:

    # This script is inteded to be used as resource script by heartbeat
    # Mar 2006 by Monty Taylor
    . /etc/ha.d/shellfuncs
    case "$1" in
            res=`/etc/init.d/mysql start`
            ha_log $res
            exit $ret
            res=`/etc/init.d/mysql stop`
            ha_log $res
            exit $ret
            if [[ `ps -ef | grep '[m]ysqld'` > 1 ]] ; then
               echo "running"
               echo "stopped"
            echo "Usage: mysql {start|stop|status}"
            exit 1
    exit 0

If you want to be notified of the failure by email, you can add another line to the haresources file with the address for warnings and the warning text:


With the Heartbeat configuration in place, copy the haresources, authkeys and ha.cf files from your primary and secondary servers to make sure that the configuration is identical. Then start the Heartbeat service, either by calling /etc/init.d/heartbeat start or by rebooting both primary and secondary servers.

You can test the configuration by running a manual failover, connect to the primary node and run:

root-shell> /usr/lib64/heartbeat/hb_standby

This causes the current node to relinquish its resources cleanly to the other node.

Copyright © 2010-2022 Platon Technologies, s.r.o.           Home | Man pages | tLDP | Documents | Utilities | About
Design by styleshout