mysql mmm安装管理详解

机器简介:

monitor 192.168.146.131 监控服务器

master-001 192.168.146.129 读写主机001

master-002 192.168.146.130 读写主机002

slave-001 192.168.146.131 只读主机001

虚拟IP分配

master-001 192.168.146.135 writer

master-002 192.168.146.136 reader

slave-001  192.168.146.137 reader

三台相同操作:

关闭防火墙

一,安装mysql

二,mysql 权限赋值

GRANT REPLICATION SLAVE ON *.* TO ‘myrepl‘@‘192.168.146.%‘ IDENTIFIED BY ‘123456‘;

GRANT REPLICATION CLIENT                 ON *.* TO ‘mmm_monitor‘@‘192.168.146.%‘ IDENTIFIED BY ‘monitor‘;

GRANT SUPER, REPLICATION CLIENT, PROCESS ON *.* TO ‘mmm_agent‘@‘192.168.146.%‘   IDENTIFIED BY ‘agent‘;

二,安装MMM

安装mysql-MMM

安装依赖包:

yum install epel-release

yum install  perl-Log-Log4perl-Appender-Socket-UNIX

rpm 安装

rpm -ivh mysql-mmm-2.2.1-2.el6.noarch.rpm

安装mysql-agent

安装依赖包:

yum install -y perl-Algorithm-Diff perl-Class-Singleton perl-Proc-Daemon perl-Net-ARP perl-DBD-mysql

rpm 安装

rpm -ivh mysql-mmm-agent-2.2.1-2.el6.noarch.rpm

chkconfig mysql-mmm-agent on

(131上)monitor 机器上安装monitor包

rpm -ivh mysql-mmm-monitor-2.2.1-2.el6.noarch.rpm

三.配置MMM

修改my.cnf

db1

server-id= 1

gtid_mode= on

log_slave_updates=1           #当一个主故障,另一个立即接管

enforce_gtid_consistency= 1

auto-increment-increment = 2

auto-increment-offset = 1

replicate-ignore-db=mysql,information_schema #不同步的数据库,多个写多行

db2

server-id= 2

gtid_mode= on

log_slave_updates=1           #当一个主故障,另一个立即接管

enforce_gtid_consistency= 1

auto-increment-increment = 2

auto-increment-offset = 2

replicate-ignore-db=mysql,information_schema #不同步的数据库,多个写多行

db3

server-id= 3

gtid_mode= on

log_slave_updates=1           #当一个主故障,另一个立即接管

enforce_gtid_consistency= 1

replicate-ignore-db=mysql,information_schema #不同步的数据库,多个写多行

read_only=1

配置主从

130 和131 上操作

CHANGE MASTER TO MASTER_HOST=‘192.168.146.129‘,MASTER_USER=‘myrepl‘,MASTER_PASSWORD=‘123456‘,MASTER_PORT=3306,MASTER_LOG_FILE=‘mysql-bin.000022‘, MASTER_CONNECT_RETRY=311;

start slave;

129上操作

130 和131 上操作

CHANGE MASTER TO MASTER_HOST=‘192.168.146.130‘,MASTER_USER=‘myrepl‘,MASTER_PASSWORD=‘123456‘,MASTER_PORT=3306,MASTER_LOG_FILE=‘mysql-bin.000032‘, MASTER_CONNECT_RETRY=234;

start slave;

配置/etc/mysql-mmm/mmm_common.conf #三机器统一

active_master_role      writer

<host default>

cluster_interface       eth0

pid_path                /var/run/mysql-mmm/mmm_agentd.pid

bin_path                /usr/libexec/mysql-mmm/

replication_user        myrepl

replication_password    123456

agent_user              mmm_agent

agent_password          agent

</host>

<host db1>

ip      192.168.146.129

mode    master

peer    db2

</host>

<host db2>

ip      192.168.146.130

mode    master

peer    db1

</host>

<host db3>

ip      192.168.146.131

mode    slave

</host>

<role writer>

hosts   db1, db2

ips     192.168.146.135

mode    exclusive

</role>

<role reader>

hosts   db1, db2, db3

ips     192.168.146.136, 192.168.146.137, 192.168.146.138

mode    balanced

</role>

配置/etc/mysql-mmm/mmm_agent.conf

this db1 #是谁就写谁

管理机上配置 mmm_mon.conf

include mmm_common.conf

<monitor>

ip                  127.0.0.1

pid_path            /var/run/mysql-mmm/mmm_mond.pid

bin_path            /usr/libexec/mysql-mmm

status_path         /var/lib/mysql-mmm/mmm_mond.status

ping_ips            192.168.146.129,192.168.146.130  #其他机器IP

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>

<host default>

monitor_user        mmm_monitor

monitor_password    monitor

</host>

debug 0

加入自启动:

chkconfig mysql-mmm-monitor on

chkconfig mysql-mmm-agent on

开启服务:

启动 mmm_agent

service mysql-mmm-agent start

启动 mmm_monitor

service mysql-mmm-monitor start

管理命令

[[email protected] mysql-mmm]# mmm_control --help

Invalid command ‘--help‘

Valid commands are:

help                              - show this message

ping                              - ping monitor

show                              - show status

checks [<host>|all [<check>|all]] - show checks status

set_online <host>                 - set host <host> online

set_offline <host>                - set host <host> offline

mode                              - print current mode.

set_active                        - switch into active mode.

set_manual                        - switch into manual mode.

set_passive                       - switch into passive mode.

move_role [--force] <role> <host> - move exclusive role <role> to host <host>

(Only use --force if you know what you are doing!)

set_ip <ip> <host>                - set role with ip <ip> to host <host>

[[email protected] mysql-mmm]# mmm_control show

db1(192.168.146.129) master/ONLINE. Roles: reader(192.168.146.138), writer(192.168.146.135)

db2(192.168.146.130) master/ONLINE. Roles: reader(192.168.146.137)

db3(192.168.146.131) slave/ONLINE. Roles: reader(192.168.146.136

[[email protected] mysql-mmm]# mmm_control checks all

db2  ping         [last change: 2016/11/10 19:18:54]  OK

db2  mysql        [last change: 2016/11/10 19:18:54]  OK

db2  rep_threads  [last change: 2016/11/10 19:18:54]  OK

db2  rep_backlog  [last change: 2016/11/10 19:18:54]  OK: Backlog is null

db3  ping         [last change: 2016/11/10 19:18:54]  OK

db3  mysql        [last change: 2016/11/10 19:19:17]  OK

db3  rep_threads  [last change: 2016/11/10 19:19:17]  OK

db3  rep_backlog  [last change: 2016/11/10 19:19:17]  OK: Backlog is null

db1  ping         [last change: 2016/11/10 19:18:54]  OK

db1  mysql        [last change: 2016/11/10 19:18:54]  OK

db1  rep_threads  [last change: 2016/11/10 19:18:54]  OK

db1  rep_backlog  [last change: 2016/11/10 19:18:54]  OK: Backlog is null

测试转换:

DB1上操作:

[[email protected] mysql-mmm]# mysqladmin -uroot -p -S /tmp/mysql.sock shutdown

Enter password:

管理机器上查看:

Bye

[[email protected] mysql-mmm]# mmm_control checks all

db2  ping         [last change: 2016/11/10 19:18:54]  OK

db2  mysql        [last change: 2016/11/10 19:18:54]  OK

db2  rep_threads  [last change: 2016/11/10 19:18:54]  OK

db2  rep_backlog  [last change: 2016/11/10 19:18:54]  OK: Backlog is null

db3  ping         [last change: 2016/11/10 19:18:54]  OK

db3  mysql        [last change: 2016/11/10 19:39:20]  OK

db3  rep_threads  [last change: 2016/11/10 19:39:20]  OK

db3  rep_backlog  [last change: 2016/11/10 19:19:17]  OK: Backlog is null

db1  ping         [last change: 2016/11/10 19:18:54]  OK

db1  mysql        [last change: 2016/11/10 19:31:34]  ERROR: Connect error (host = 192.168.146.129:3306, user = mmm_monitor)! Lost connection to MySQL server at ‘reading initial communication packet‘, system error: 111

db1  rep_threads  [last change: 2016/11/10 19:18:54]  OK

db1  rep_backlog  [last change: 2016/11/10 19:18:54]  OK: Backlog is null

[[email protected] mysql-mmm]# mmm_control show

db1(192.168.146.129) master/HARD_OFFLINE. Roles:

db2(192.168.146.130) master/ONLINE. Roles: reader(192.168.146.137), writer(192.168.146.135)

db3(192.168.146.131) slave/ONLINE. Roles: reader(192.168.146.136), reader(192.168.146.138)

启动DB1 等待60s再看:

[[email protected] mysql-mmm]# mmm_control show

db1(192.168.146.129) master/ONLINE. Roles: reader(192.168.146.136)

db2(192.168.146.130) master/ONLINE. Roles: reader(192.168.146.137), writer(192.168.146.135)

db3(192.168.146.131) slave/ONLINE. Roles: reader(192.168.146.138)

我们想把writer角色切回到db1上:

[[email protected] mysql-mmm]# mmm_control move_role writer db1

OK: Role ‘writer‘ has been moved from ‘db2‘ to ‘db1‘. Now you can wait some time and check new roles info!

[[email protected] mysql-mmm]# mmm_control show

db1(192.168.146.129) master/ONLINE. Roles: reader(192.168.146.136), writer(192.168.146.135)

db2(192.168.146.130) master/ONLINE. Roles: reader(192.168.146.137)

db3(192.168.146.131) slave/ONLINE. Roles: reader(192.168.146.138)

遇到两个问题

1. 监控程序服务器无法启动

在管理服务器上,一切都完成后,通过mmm_control查看状态,得到下面的错误信息:

ERROR: Cant connect to monitor daemon! 通过编辑/etc/mysql-mmm/mmm_mon.conf文件将debug 0改为debug 1,打开监控程序的debug状态。重新启动监控程序(service mysql-mmm-monitor restart),就会看到详细的错误信息,找不到Perl Time HiRes库。执行yum -y install perl-Time-HiRes*就可以解决。

2. 防火墙问题导致Warning: agent on host db1 is not reachable.

控制台程序正确启动后,再次执行mmm_control show,却看到下面的输出:

# Warning: agent on host db1 is not reachable

# Warning: agent on host db2 is not reachable

db1(192.168.146.129) master/ONLINE. Roles:

db2(192.168.146.130) master/ONLINE. Roles:

db3(192.168.146.131) slave/ONLINE. Roles: reader(192.168.146.138)

再次打开debug,查看错误信息

通过telnet 192.168.146.130 9989下面检查网络连接,得到了No route to host的错误信息。登录db1,关闭iptables(这不是一个好主意)。同样,关闭db2、db3上的防火墙,再次重启监控程序,一切回到正常状态!

时间: 2024-10-11 22:34:49

mysql mmm安装管理详解的相关文章

Spotlight on Unix/Mysql安装使用详解

Spotlight on Unix安装使用详解  1.远程连接linux服务器,查看系统是否已经安装sysstat包,如果没有的话,按照以下方法安装sysstat. (1)检查Linux是否安装sysstat. //方式1 # rpm -qa | grep sysstat //方式2 # rpm -q sysstat (2)安装sysstat(需要root权限安装). //方式1:离线安装 # tar zxvf sysstat-10.0.4.tar.gz # cd sysstat-10.0.4

【转】Python中操作mysql的pymysql模块详解

Python中操作mysql的pymysql模块详解 前言 pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同.但目前pymysql支持python3.x而后者不支持3.x版本. 本文测试python版本:2.7.11.mysql版本:5.6.24 一.安装 1 pip3 install pymysql 二.使用操作 1.执行SQL 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

Python中操作mysql的pymysql模块详解

Python中操作mysql的pymysql模块详解 前言 pymsql是Python中操作MySQL的模块,pymysql支持python3.x. 一.安装 pip install pymysql 二.使用操作 1.执行SQL #!/usr/bin/env pytho # -*- coding:utf-8 -*- importpymysql # 创建连接 conn =pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd

hbase-0.94安装方法详解

先决条件: 1)java环境,需要安装java1.6以上版本 2)hadoop环境,由于HBase架构是基于其他文件存储系统的,因此在分布式模式下安装Hadoop是必须的,但是,如果运行在单价模式下,此条件可以省略.Hadoop-1.2.1的安装方法参考 hadoop-1.2.1安装方法详解 注意:安装时要注意Hadoop和HBase之间的版本关系,如果不匹配,很可能会影响HBase系统的稳定性. 本帖教程采用的hadoop是hadoop-1.2.1,hbase采用的是hbase-0.94 hb

LNMP编译安装之msyql安装--图文详解

LNMP编译安装之msyql安装--图文详解 1.前言 本次安装采用源码安装,主要资源包从官网下载,次要依赖则使用yum进行安装,本篇只涉及mysql的安装,msyql远程登录,不涉及mysql具体配置.该教程纯属安装,不涉及任何重要知识点,老少皆宜. 2.安装步骤 2.1.下载boost(只下载不安装) wget http://nchc.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz 2.2.解压bosot t

Activiti(一)--安装配置详解

有一段时间没有更新文章了,虽然有一直在写文章,可是一直没有更新到博客内,这段时间写的文章大多还是以技术为主.接下来的系列文章将会来讨论企业工作流的开发,主要是来研究开源工作流Activiti的使用. 该篇文章来详细了解下Activiti 5.15的安装配置全过程,其实安装的过程相当的简单,因为随着Activiti的版本升级安装就变得简单了很多,但是它的配置方法没有想象的那么简单,在配置时需要注意很多问题,这里就来详细的了解下Activiti 5.15的配置全过程. Note:文章都是读者经过实践

lvs原理及安装部署详解(参考)

LVS安装使用详解 摘至:http://www.cnblogs.com/MacoLee/p/5856858.html 简介 LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 是一个由章文嵩博士发起的自由软件项目,它的官方站点是www.linuxvirtualserver.org. 现在LVS已经是Linux标准内核的一部分,在Linux2.4内核以前,使用LVS时必须要重新编译内核以支持LVS功能模块,但是从Linux2.4内核以后,已经完全内置了LVS的各个

NFS服务器原理和安装配置详解附案例演练

NFS服务器原理和安装配置详解附案例演练 1.什么是NFS服务器 NFS就是Network File System的缩写,它最大的功能就是可以通过网络,让不同的机器.不同的操作系统可以共享彼此的文件. NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地端的文件系统中,而在本地端的系统中来看,那个远程主机的目录就好像是自己的一个磁盘分区一样,在使用上相当便利: 2.NFS挂载原理 NFS服务器的挂载结构图: 如上图示: 当我们在NFS服务器设置好一个共享目录/home/public后

hive-0.11.0安装方法详解

先决条件: 1)java环境,需要安装java1.6以上版本 2)hadoop环境,Hadoop-1.2.1的安装方法参考hadoop-1.2.1安装方法详解 本文采用的hadoop是hadoop-1.2.1,hive采用的是hive-0.11.0 hive有三种安装模式: 内嵌模式:元数据保持在内嵌的Derby模式,只允许一个会话连接 本地独立模式:在本地安装Mysql,把元数据放到Mysql内 远程模式:元数据放置在远程的Mysql数据库 内嵌模式安装: 1.上传并解压hive-0.11.0