搭建MMM:
1,安装
agent 节点执行
yum install -y mysql-mmm-agent
2, monitor 节点执行
yum install -y mysql-mmm-monitor
配置文件

1, /etc/init.d/mysql-mmm-agent start
perl: warning: Setting locale failed."的解决
vi /root/.bashrc
再最底部加上
export LC_ALL=C
或者直接运行
echo "export LC_ALL=C" >> /root/.bashrc
然后执行一下:
source /root/.bashrc

2,<host db1>
ip 192.168.60.166
mode master
peer centos_TP166
</host>
启动报错,Starting MMM Monitor Daemon: Config entry 'host->db2->peer'
修改错误 这个<host db1>的db1 改成centos_TP166
3,exec of /usr/libexec/mysql-mmm/monitor/checker reaped child 17439 with exit 65280
需要修改mmm_mon.conf的bin_path
4,配置/usr/sbin/mmm_control show 老是提示
ERROR: Can't connect to monitor daemon!
取消配置文件的 # 中文注释
5,配置好主主复制,和主从复制
6,/etc/init.d/mysql-mmm-monitor restart报错
Starting MMM Monitor Daemon: Can't run second copy of mmm_mond
原来是/etc/rc.d/init.d/mysql-mmm-monitor 的 MMMD_MON_PIDFILE="/var/run/mysql-mmm/mmm_mond_test_mmm.pid"
配置错误
7,MMM 一台mysqldown掉, 会将虚IP漂移到其他的机器,当重启mmm的monitor的监控时,会给其分配虚IP
INFO Moving role 'reader(192.168.60.60)' from host 'centos_TP168'to host 'centos_TP167'
8,mmm_control show 出现:
Warning: agent on host centos_TP167 is not reachable
在167机器上ps -ef|grep mm 出现多个 mmm_agentd, kill掉这些,在启动mmm_agentd就解决
9,执行命令后 mmm_control set_offline centos_TP166 166机器下线
但执行mmm_control show 就ERROR: Can't connect to monitor daemon!
执行mmm_control checks all也出现centos_TP166 rep_threads [last change: 2019/05/15 15:06:48] ERROR: Replication is broken
只有重新执行mmm_control set_online centos_TP166 再 checks才正常

2019年5月9日13:45:59
生产库上一般不建议设置过滤规则, 如果非要设置, 强烈建议从库使用通配符方式过滤某个库

2019年5月14日14:22:10
查mysql未提交事务
查询 正在执行的事务:
SELECT * FROM information_schema.INNODB_TRX

查看正在锁的事务
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;

查看等待锁的事务

SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;

原文:https://blog.csdn.net/emoers/article/details/77971468

2019年5月16日15:12:23
手工 kill -9 mmm进程,查看/etc/init.d/mysql-mmm-monitor status
mmm_mond 已死,但 pid 文件仍存
如果
重启restart,提示 DEBUG Sending command 'GET_AGENT_STATUS()' to 167 (192.168.60.167)
一直不动,
查看167服务器的mysql-mmm-agent,手工kill -9 掉 mmm的进程,重启agent

关闭mysql-mmm-monitor ,要先关闭mysql-mmm-agent,再启动mysql-mmm-monitor

在CentOS 6.3 x86_64下安装php-mcrypt的时候出现了问题:Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again,需要安装epel源。

解决方法: 一句话:把/etc/yum.repos.d/epel.repo,文件第3行注释去掉,把第四行注释掉。具体如下:

打开/etc/yum.repos.d/epel.repo,将

[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch

修改为

[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch

再清理源,重新安装

yum clean all
yum install -y 需要的包

如果还是不行,修改DNS,到/etc/resolv.conf下添加一下:

nameserver 8.8.8.8
search localdomain

然后重启network服务:service network restart

配置文件:

 Monitor机器:   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 sa
replication_password cc.123
agent_user sa
agent_password cc.123
mysql_port 18602
</host> <host centos_TP166>
ip 192.168.60.166
mode master
peer centos_TP166
</host> <host centos_TP167>
ip 192.168.60.167
mode master
peer centos_TP167
</host> <host centos_TP168>
ip 192.168.60.168
mode slave
</host> <role writer>
hosts centos_TP167,centos_TP166
ips 192.168.60.40
mode exclusive
</role> <role reader>
hosts centos_TP167,centos_TP168
ips 192.168.60.60, 192.168.60.61
mode balanced
</role> debug 0

Monitor机器:   mmm_mon.conf

include mmm_common.conf

<monitor>
ip 127.0.0.1
port
pid_path /var/run/mysql-mmm/mmm_mond_mmm.pid
bin_path /usr/libexec/mysql-mmm
status_path /var/lib/mysql-mmm/mmm_mond_test_mmm.status
ping_ips 192.168.60.166, 192.168.60.167, 192.168.60.168
auto_set_online
</monitor> <host default>
monitor_user sa
monitor_password cc.
</host> <check mysql>
check_period
trap_period
max_backlog
</check>

 agent 机器:   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 sa
replication_password cc.123
agent_user sa
agent_password cc.123
mysql_port 18602
</host> <host centos_TP166>
ip 192.168.60.166
mode master
peer centos_TP166
</host> <host centos_TP167>
ip 192.168.60.167
mode master
peer centos_TP167
</host> <host centos_TP168>
ip 192.168.60.168
mode slave
</host> <role writer>
hosts centos_TP167,centos_TP166
ips 192.168.60.40
mode exclusive
</role> <role reader>
hosts centos_TP167,centos_TP168
ips 192.168.60.60, 192.168.60.61
mode balanced
</role>

全部机器: /etc/hosts 新加:

192.168.60.165 centos_TP165
192.168.60.166 centos_TP166
192.168.60.167 centos_TP167
192.168.60.168 centos_TP168

 Monitor机器:  /etc/rc.d/init.d/mysql-mmm-monitor  启动MMM脚本

检查 MMMD_MON_PIDFILE的pid文件 和  monitor的mmm_mon.conf配置的pid文件路径要一致

mysql-mmm故障处理机制中总结:

 1.对外提供读写的虚拟IP是由monitor程序控制。如果monitor没有启动那么db服务器不会被分配虚拟ip,但是如果已经分配好了虚拟ip,当monitor程序关闭了原先分配的虚拟ip不会立即关闭外部程序还可以连接访问(只要不重启网络),这样的好处就是对于monitor的可靠性要求就会低一些,但是如果这个时候其中的某一个db服务器故障了就无法处理切换,也就是原先的虚拟ip还是维持不变,挂掉的那台DB的虚拟ip会变的不可访问。
 2.agent程序受monitor程序的控制处理write切换,从库切换等操作。如果monitor进程关闭了那么agent进程就起不到什么作用,它本身不能处理故障。
 3.monitor程序负责监控db服务器的状态,包括Mysql数据库、服务器是否运行、复制线程是否正常、主从延时等;它还用于控制agent程序处理故障。
 4.monitor会每隔几秒钟监控db服务器的状态,如果db服务器已经从故障变成了正常,那么monitor会自动在60s之后将其设置为online状态(默认是60s可以设为其它的值),有监控端的配置文件参数“auto_set_online”决定,群集服务器的状态有三种分别是:HARD_OFFLINE→AWAITING_RECOVERY→online
 5.默认monitor会控制mmm_agent会将writer db服务器read_only修改为OFF,其它的db服务器read_only修改为ON,所以为了严谨可以在所有的服务器的my.cnf文件中加入read_only=1由monitor控制来控制writer和read,root用户和复制用户不受read_only参数的影响。

mysql-mmm架构总结:

(1)master-db2备选主节点宕机不影响集群的状态,就是移除了master-db2备选节点的读状态。
(2)master-db1主节点宕机,由master-db2备选主节点接管写角色,slave-db1,slave-db2指向新master2主库进行复制,slave-db1,slave-db2会自动change master到master2.
(3)如果master-db1主库宕机,master-db2复制应用又落后于master-db1时就变成了主可写状态,这时的数据主无法保证一致性。
如果master-db2,slave-db1,slave-db2延迟于master-db1主,这个时master-db1宕机,slave-db1,slave-db2将会等待数据追上master-db1后,再重新指向新的主master-db2进行复制操作,这时的数据也无法保证同步的一致性。
(4)如果采用MMM高可用架构,主,主备选节点机器配置一样,而且开启半同步进一步提高安全性或采用MariaDB/mysql5.7进行多线程从复制,提高复制的性能。

搭建MySQL MMM高可用的更多相关文章

  1. CentOS 搭建 Mysql MMM 高可用架构

    环境 CentOS Mysql 5.1 前提 安装了EPEL,详细安装步骤请參照 http://blog.csdn.net/robinsonmhj/article/details/36184863 机 ...

  2. (转)基于keepalived搭建MySQL的高可用集群

    基于keepalived搭建MySQL的高可用集群  原文:http://www.cnblogs.com/ivictor/p/5522383.html MySQL的高可用方案一般有如下几种: keep ...

  3. Mysql MMM 高可用

    一.Mysql MMM 高可用概况: mmm_mond  负责所有的监控工作的监控守护进程,决定节点的移除等: mmm_agentd  运行在mysql服务器上的代理守护进程,通过简单远程服务集提供给 ...

  4. Oracle Compute云快速搭建MySQL Keepalived高可用架构

    最近有个客户在测试Oracle Compute云,他们的应用需要使用MySQL数据库,由于是企业级应用一定要考虑高可用架构,因此有需求要在Oracle Compute云上搭建MySQL高可用集群.客户 ...

  5. MySQL集群搭建(3)-MMM高可用架构

    1 MMM 介绍 1.1 简介 MMM 是一套支持双主故障切换以及双主日常管理的第三方软件.MMM 由 Perl 开发,用来管理和监控双主复制,虽然是双主架构,但是业务上同一时间只允许一个节点进行写入 ...

  6. 基于keepalived搭建MySQL的高可用集群

    MySQL的高可用方案一般有如下几种: keepalived+双主,MHA,MMM,Heartbeat+DRBD,PXC,Galera Cluster 比较常用的是keepalived+双主,MHA和 ...

  7. 搭建MySQL MHA高可用

    本文内容参考:http://www.ttlsa.com/mysql/step-one-by-one-deploy-mysql-mha-cluster/ MySQL MHA 高可用集群 环境: Linu ...

  8. centos6.6部署mysql mmm高可用架构

    一.环境简述 1.工作逻辑图 2.MySQL-MMM优缺点 优点:高可用性,扩展性好,出现故障自动切换,对于主主同步,在同一时间只提供一台数据库写操作,保证的数据的一致性. 缺点:Monitor节点是 ...

  9. MySQL MMM高可用方案

    200 ? "200px" : this.width)!important;} --> 介绍 本篇文章主要介绍搭建MMM方案以及MMM架构的原理.这里不介绍主从.主主的搭建方 ...

随机推荐

  1. [LeetCode] 253. Meeting Rooms II 会议室 II

    Given an array of meeting time intervals consisting of start and end times [[s1,e1],[s2,e2],...] (si ...

  2. opengl读取灰度图生成三维地形并添加光照

    转自:https://www.cnblogs.com/gucheng/p/10152889.html 准备第三方库 glew.freeglut.glm.opencv 准备一张灰度图 最终效果 代码如下 ...

  3. idea设置内存大小

    1.打开idea安装路径下bin,编辑.vmoptions两个文件 然后重启一下idea 2.直接打开idea的.vmoptions文件进行编辑

  4. 「模拟赛20191019」A 简单DP

    题目描述 给一个\(n\times m\)的网格,每个格子上有一个小写字母. 对于所有从左上角\((1,1)\)到右下角\((n,m)\)只向下或向右走的路径构成的集合,判断是否存在两条走法不同的路径 ...

  5. 17 JQuery高级----学习笔记

    1. 动画(1) 三种方式显示和隐藏元素 <1> 默认显示和隐藏方式 1. show([speed,[easing],[fn]]) 1. 参数: 1. speed:动画的速度.三个预定义的 ...

  6. 13 JSP、MVC开发模式、EL表达式和JSPL标签+软件设计架构---学习笔记

    1.JSP (1)JSP概念:Java Server Pages 即java服务器端页面可以理解为:一个特殊的页面,其中既可以指定定义html标签,又可以定义java代码用于简化书写!!! (2)原理 ...

  7. 《算法 - Lru算法》

    一:概述 - LRU 用于管理缓存策略,其本身在 Linux/Redis/Mysql 中均有实现.只是实现方式不尽相同. - LRU 算法[Least recently used(最近最少使用)] - ...

  8. Java开发笔记(一百二十九)Swing的输入框

    Swing的输入框仍然分成两类:单行输入框和多行输入框,但与AWT的同类控件相比,它们在若干细节上有所调整.首先说单行输入框,AWT的单行输入框名叫TextField,平时输入什么字符它便显示什么字符 ...

  9. DNS欺诈的三种简单方法总结

    使用arpspoof.ettercap以及driftnet的简单组合. ①arpsppof+driftnet arpspoof -i eth0 -t 目标ip 目标网关 driftnet -i eth ...

  10. go对elasticsearch的增删改查

    环境 elasticsearch 6.8 (6.x版本应该都没问题) go客户端sdk: github.com/elastic/go-elasticsearch/v6 其实自己封装api也行,反正el ...