机器简介:

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

管理命令

[root@mysqlDB03 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>

[root@mysqlDB03 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

[root@mysqlDB03 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上操作:

[root@mysqlDB01 mysql-mmm]# mysqladmin -uroot -p -S /tmp/mysql.sock shutdown

Enter password:

管理机器上查看:

Bye

[root@mysqlDB03 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

[root@mysqlDB03 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再看:

[root@mysqlDB03 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上:

[root@mysqlDB03 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!

[root@mysqlDB03 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上的防火墙,再次重启监控程序,一切回到正常状态!

转载于:https://blog.51cto.com/9548010/1871418

mysql mmm安装管理详解相关推荐

  1. MySQL的安装步骤详解

    一.MYSQL的安装 1.打开下载的mysql安装文件,双击运行mysql-5.5.40-win64.msi. 2.选择安装类型,有"Typical(默认)"."Comp ...

  2. MySQL的安装(详解)

    安装 第一步 解压安装压缩包 第二步 配置MySQL环境变量 在系统中找到高级系统设置->环境变量-> 点击编辑,输入变量名和变量值 变量值就是你的MySQL的安装目录,直接找到copy就 ...

  3. mysql数据库安装最详解

    数据库的基本概念 当今主流的数据库 SQL Server (微软公司产品) Oracle (甲骨文公司产品) DB2 (IBM公司产品) MySQL (甲骨文公司收购) 什么是mysql数据库 MyS ...

  4. mysql服务器权限说明,MySQL用户权限管理详解

    用户权限管理主要有以下作用: 1. 可以限制用户访问哪些库.哪些表 2. 可以限制用户对哪些表执行SELECT.CREATE.DELETE.DELETE.ALTER等操作 3. 可以限制用户登录的IP ...

  5. 《MySQL安装流程详解》及《MySQL安装一直失败,重新安装显示已安装》

    <MySQL安装流程详解>及<MySQL安装一直失败,重新安装显示已安装> 本文由博主经过查阅网上资料整理总结后编写,如存在错误或不恰当之处请留言以便更正,内容仅供大家参考学习 ...

  6. mysql安装包没有安装程序_MySQL5.6的zip包安装教程详解

    之前我们都是后缀为.msi的文件,换言之就是傻瓜式安装,但是有些版本不容易控制安装路径,或者数据库编码格式,还有些会安装很多无用的服务,但是都没有后缀为.zip文件简单直接,说是在哪里,就在哪里. 1 ...

  7. rpm安装mysql5.6_利用rpm安装mysql 5.6版本详解

    前言 其实之前使用yum安装MySQL确实很方便,但是默认安装的myql5.0版本的,不支持utf8mb4(utf8mb4扩展到一个字符最多能有4节,所以能支持更多的字符集,比如支持emoji表情)编 ...

  8. 第一章笔记MySQL数据库的安装目录详解

    MySQL数据库的安装目录详解 bin目录:用于存放一些可以执行的文件,如mysql.exe;,mysqld.exe;mysqlshow.exe等. data目录:用于存放一些日志文件以及数据库. i ...

  9. mysql5.7如何启动服务_Mysql 5.7.18安装方法及启动MySQL服务的过程详解

    MySQL 是一个非常强大的关系型数据库.但有些初学者在安装配置的时候,遇到种种的困难,在此就不说安装过程了,说一下配置过程.在官网下载的MySQL时候,有msi格式和zip格式.Msi直接运行安装即 ...

  10. zabbix安装配置详解(一)

    zabbix安装配置详解(一) 一.nginx安装 1.必要软件准备: 为了支持rewrite功能,我们需要安装pcre: #yum install pcre-* 需要ssl的支持,如果不需要ssl支 ...

最新文章

  1. web标准的投资回报
  2. numpy 数组 维度 大小 形状
  3. CCIE学习(7)——VLAN相关命令汇总
  4. 开发笔记:掉落系统模块设计思路
  5. linux的shell命令 a,linux shell命令大全(都是随堂笔记)
  6. Matlab定义符号函数(ZZ)
  7. C程序设计语言现代方法13:字符串
  8. QString、QByteArray 相互转换、和16进制与asc2转换
  9. xml存储数据 优缺点_Python大神都是这样处理xml文件的!
  10. 毕业5年决定你的一生_4
  11. android stagefright框架
  12. 魔方——一面两层之后的公式
  13. MNN源码阅读之模型转换
  14. Android开机自动运行
  15. 接口测试中Post方法怎么测?
  16. 基于Kinect Azure的多相机数据采集(二)
  17. 怎样修复win7无线服务器,win7开启无线服务器
  18. 关于前端的HTML+CSS基础知识汇总(较为全面)
  19. 重要开源协议的比较(BSD,Apache,GPL,LGPL,MIT) – 整理
  20. python读取身份证号_Python实现身份证号码解析

热门文章

  1. 企业级的Java快速开发平台,首选iMatrix平台。
  2. 回不去原来是没有 实现这个 代理方法,
  3. while循环中使用read读取变量的一点小技巧
  4. 制定Windows重要安全计划——12步纲要
  5. (转)思科VPP源码分析(feature机制分析)
  6. 从海康7816的ps流里获取数据h264数据
  7. python离线安装tensorflow_TensorFlow 在Linux系统下离线安装
  8. 3992. 树上有猴-AcWing题库
  9. 用c++做算法题的注意事项(一)
  10. pandas groupby 用法详解