Using Heartbeat with MariaDB and DRBD
To use Heartbeat in combination with MySQL, use DRBD (see , "Using MariaDB with DRBD") or another solution that enables sharing the MariaDB 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 10.0.0.100
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 MariaDB 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.MariaDB
: Manages the MariaDB instances and starts the MariaDB server. Copy themysql.resource
file from thesupport-files
directory from any MariaDB 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:#!/bin/bash # # This script is intended to be used as resource script by heartbeat # # Mar 2006 by Monty Taylor # ### . /etc/ha.d/shellfuncs case '$1' in start) res=`/etc/init.d/mysql start` ret=$? ha_log $res exit $ret ;; stop) res=`/etc/init.d/mysql stop` ret=$? ha_log $res exit $ret ;; status) if [[ `ps -ef | grep '[m]ysqld'` > 1 ]] ; then echo 'running' else echo 'stopped' fi ;; *) echo 'Usage: mysql {start|stop|status}' exit 1 ;; esac exit 0
To be notified of the failure by email, add another line to the haresources
file with the address for warnings and the warning text:
MailTo::youremail@address.com::DRBDFailure
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.