说明

主从配置在本文档略过,主要是mysql-mmm多实例的部署。文档中涉及的一些基础知识不做详细说明。

节点信息如下:

IP
主机名
角色
192.168.0.1
db1
master1
192.168.0.2 db2
master2
192.168.0.3 db3
slave1
192.168.0.4 db4
slave2
192.168.0.5 db5
管理节点

1、软件安装

为了简单,本次安装都是通过yum来进行。配置epel的yum源

yum instll mysql-mmm mysql-mmm-agent mysql-mmm-monitor

2、配置

yum安装的mysql-mmm的配置文件路径是在 /etc/mysql-mmm/中,我们需要修改如下几个文件mmm_agent.conf,mmm_common.conf,mmm_mon_log.conf。由于是多实例的部署,所以默认提供的文件将不起作用。我应用中是以mysql的多实例端口,作为配置文件和启动服务的参数。默认安装的mysql-mmm启动命令也需要相应修改,稍后会提供方法。

创建一个slave密码为slave的帐号,用于mysql主从同步,以及mysql-mmm管理和其它使用。

比如:mysql端口为3301,那配置文件为mmm_agent_3301.conf

A>配置文件 【/etc/mysql/mmm_common_3301.conf】 这个文件要在4个节点中都存在

active_master_role      writer
cluster_interface bond1 pid_path /var/run/mysql-mmm/mmm_agentd_3301.pid bin_path /usr/libexec/mysql-mmm/ replication_user slave replication_password slave agent_user slave agent_password slave agent_port 43301
ip 192.168.0.1 mysql_port 3301 mode master peer db2
ip 192.168.0.2 mysql_port 3301 mode master peer db1
ip 192.168.0.3 mysql_port 3301 mode slave
ip 192.168.0.4 mysql_port 3301 mode slave
hosts db1, db2 ips 192.168.0.100 mode exclusive
hosts db3, db4 ips 192.168.0.101,192.168.0.102 mode balanced

B>配置文件 【/etc/mysql-mmm/mmm_agent_3301.conf】 不同的节点上,this以当前节点名为准

include mmm_common_3301.conf# The 'this' variable refers to this server.  Proper operation requires# that 'this' server (db1 by default), as well as all other servers, have the# proper IP addresses set in mmm_common.conf.this db1

C>配置文件 【/etc/mysql-mmm/mmm_mon_3301.conf 】这个文件只存在管理节点上

include mmm_common_3301.conf
ip 192.168.0.5 port 53301 pid_path /var/run/mysql-mmm/mmm_mond_3301.pid bin_path /usr/libexec/mysql-mmm status_path /var/lib/mysql-mmm/mmm_mond.status ping_ips 192.168.0.1,192.168.0.2,192.168.0.3,192.168.0.4,192.168.201.5 auto_set_online 60 # The kill_host_bin does not exist by default, though the monitor will # throw a warning about it missing. See the section 5.10 "Kill Host # Functionality" in the PDF documentation. # # kill_host_bin /usr/libexec/mysql-mmm/monitor/kill_host #
monitor_user slave monitor_password slave
debug 0

3、修改mysql-mmm启动脚本

#!/bin/sh## mysql-mmm-agent    This shell script takes care of starting and stopping#                    the mmm agent daemon.## chkconfig: - 64 36# description:  MMM Agent.# processname: mmm_agentd# config: /etc/mysql-mmm/mmm_agent.conf# pidfile: /var/run/mysql-mmm/mmm_agentd.pid# Source function library and defaults file.. /etc/rc.d/init.d/functions. /etc/default/mysql-mmm-agent# PathsCLUSTER=$2if [ "$CLUSTER" != "" ]; then        MMMD_AGENT_BIN="/usr/sbin/mmm_agentd @$CLUSTER"        MMMD_AGENT_PIDFILE="/var/run/mysql-mmm/mmm_agentd_$CLUSTER.pid"        LOCKFILE="/var/lock/subsys/mysql-mmm-agentd_$CLUSTER"else        MMMD_AGENT_BIN="/usr/sbin/mmm_agentd"        MMMD_AGENT_PIDFILE="/var/run/mysql-mmm/mmm_agentd.pid"        LOCKFILE="/var/lock/subsys/mysql-mmm-agentd"fiprog='MMM Agent Daemon'start() {        if [ "${ENABLED}" != "1" ]; then                echo "$prog is disabled!"                exit 1        fi        echo -n "Starting $prog: "        if [ -s $MMMD_AGENT_PIDFILE ] && kill -0 `cat $MMMD_AGENT_PIDFILE` 2> /dev/null; then            echo " already running."            exit 0        fi        daemon $MMMD_AGENT_BIN        RETVAL=$?        echo        [ $RETVAL = 0 ] && touch $LOCKFILE        return $RETVAL}stop() {        # Stop daemon.        echo -n "Stopping $prog: "        killproc -p $MMMD_AGENT_PIDFILE $MMMD_AGENT_BIN        RETVAL=$?        echo        [ $RETVAL = 0 ] && rm -f $LOCKFILE        return $RETVAL}case "$1" in  start)        start        ;;  stop)        stop        ;;  status)        status -p $MMMD_AGENT_PIDFILE $MMMD_AGENT_BIN        RETVAL=$?        ;;  restart|reload)        stop        start        ;;  condrestart)        if [ -f $LOCKFILE ]; then                stop                start        fi        ;;  *)        echo "Usage: $0 {start|stop|restart|condrestart|status}"        ;;esacexit $RETVAL

4、修改mysql-mmm监控脚本

#!/bin/sh## mysql-mmm-monitor  This shell script takes care of starting and stopping#                    the mmm monitoring daemon.## chkconfig: - 64 36# description:  MMM Monitor.# processname: mmm_mond# config: /etc/mysql-mmm/mmm_mon.conf# pidfile: /var/run/mysql-mmm/mmm_mond.pid# Source function library and defaults file.. /etc/rc.d/init.d/functions. /etc/default/mysql-mmm-monitor# Cluster name (it can be empty for default cases)CLUSTER=$2LOCKFILE='/var/lock/subsys/mysql-mmm-monitor'prog='MMM Monitor Daemon'if [ "$CLUSTER" != "" ]; then        MMMD_MON_BIN="/usr/sbin/mmm_mond @$CLUSTER"        MMMD_MON_PIDFILE="/var/run/mysql-mmm/mmm_mond_$CLUSTER.pid"else        MMMD_MON_BIN="/usr/sbin/mmm_mond"        MMMD_MON_PIDFILE="/var/run/mysql-mmm/mmm_mond.pid"fistart() {        if [ "${ENABLED}" != "1" ]; then                echo "$prog is disabled!"                exit 1        fi        echo -n "Starting $prog: "        if [ -s $MMMD_MON_PIDFILE ] && kill -0 `cat $MMMD_MON_PIDFILE` 2> /dev/null; then            echo " already running."            exit 0        fi        daemon $MMMD_MON_BIN        RETVAL=$?        echo        [ $RETVAL = 0 ] && touch $LOCKFILE        return $RETVAL}stop() {        # Stop daemon.        echo -n "Stopping $prog: "        killproc -p $MMMD_MON_PIDFILE $MMMD_MON_BIN        RETVAL=$?        echo        [ $RETVAL = 0 ] && rm -f $LOCKFILE        return $RETVAL}case "$1" in  start)        start        ;;  stop)        stop        ;;  status)        status -p $MMMD_MON_PIDFILE $MMMD_MON_BIN        RETVAL=$?        ;;  restart|reload)        stop        start        ;;  condrestart)        if [ -f $LOCKFILE ]; then                stop                start        fi        ;;  *)        echo "Usage: $0 {start|stop|restart|condrestart|status}"        ;;esacexit $RETVAL

5、启动和监控方法

/etc/init.d/mysql-mmm-agent start 3301

/etc/init.d/mysql-mmm-agent stop 3301

/etc/init.d/mysql-mmm-monitor start 3301

/etc/init.d/mysql-mmm-monitor stop 3301

mmm_control @3301 show

mmm_control @3301 checks all