搭建MySQL MMM高可用_weixin_34124651的博客-程序员宅基地

搭建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
View Code

 Monitor机器:   mmm_mon.conf

include mmm_common.conf

<monitor>
    ip               127.0.0.1
    port             9992
    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  30                                           
</monitor>

<host default>
    monitor_user      sa       
    monitor_password  cc.123  
</host>

<check mysql>
    check_period      2       
    trap_period       4       
    max_backlog       900      
</check>
View Code

 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>
View Code

全部机器: /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
View Code

 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进行多线程从复制,提高复制的性能。

转载于:https://www.cnblogs.com/zping/p/10840295.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_34124651/article/details/94468969

智能推荐

神经网络训练的一些建议(Batch Normalization)_batchnorm在测试时需要设置为1吗-程序员宅基地

数据的归一化先放上宏毅大神的图,说明一下我们为什么要做数据的归一化 说明:x2的变化比较大,使用w2方向上就显得比较陡峭(梯度),学习率就不能设置得过大。Batch Normalization为什么要有batch normalization 主要是避免internal covariate shift,如图所示,输出上下波动太大(如同第二个人)的话会影响整个模型的训练..._batchnorm在测试时需要设置为1吗

随手记——在Linux下如何测试代码执行时间_rdtsc clock_gettime_穿越临界点的博客-程序员宅基地

一般情况下我们写完代码之后是不会去测试它的执行时间的。除非,你的代码运行有实时性要求;或者,你是一个追求代码执行效率的程序员。_rdtsc clock_gettime

Java的ID生成策略-程序员宅基地

一个初出茅庐的程序员 2017-04-27 08:51uuid:标准型式包含32个16进制数字,以连字号分为五段,形式为8-4-4-4-12的36个字符,示例:550e8400-e29b-41d4-a716-446655440000,到目前为止业界一共有5种方式生成UUID优点:代码简单,生成ID的性能好,全球唯一。缺点:无序,存储空间大,传输数据量大,查询的时候查询效率低。

现在可以安全地关闭计算机了,如何在Windows 10上启用“现在可以安全地关闭计算机”..._Caynor的博客-程序员宅基地

你还记得过去的“现在可以安全关闭电脑”的信息吗?似乎有些用户仍然对在windows 10中使用此警报感兴趣。就像我们过去在90年代看到Windows 95中的消息一样。那些旧系统实际上并不支持电源管理,必须通过电源开关手动关闭它们。电源管理被认为是一种奇特的东西,仅由少数计算机支持。在那个时间点,系统不兼容ACPI(高级配置和电源接口)。OS基本上使用ACPI来控制电源功能。它通过发送断电命令关闭..._现在您可以安全的关闭计算机了

2018 美赛 C_mcm 2018 c:能源生产 相关数据-程序员宅基地

2018 MCM Problem C: 能源生产 背景:能源生产和使用是任何经济的重要组成部分。在美国,能源政策的许多方面都分散 到国家一级单位。此外,不同地理区域和不同国家的工业影响能源使用和生产。1970 年, 在西部的 12 个州在美国形成西部州际能源中心(WIEC),其任务主要集中在促进这些国家 之间的合作对核能源技术的开发和管理。州际契约是两个或多个国家之间订立的合同安 排,这些国家..._mcm 2018 c:能源生产 相关数据

交叉编译2(带wiringPi库的交叉编译)_wringpi库下载_陈(Chen)的博客-程序员宅基地

可直接将树莓派的wiringPi库拿下来:(正常是直接在上位机上下载wiringPi库)scp libwiringPi.so.2.50 [email protected]:/home/CLC/leassonPi一定是要拿这个的不能拿这个libwiringPi.so这个是软连接,拿下来也无法使用带wiringPi库的交叉编译如何进行1. 正常我们先要交叉编译wiringPi库,编译出的库适合树莓派,这时候交叉编译可执行程序的试试,链接库的格式也是正确的。2. 通过-I -L来指定arm-linux_wringpi库下载

随便推点

03.PyQt5加载UI文件的两种方式_pyqt5 载入ui-程序员宅基地

from PyQt5.QtWidgets import QApplication, QPushButtonfrom PyQt5 import uicclass Stats: def __init__(self): # 从文件中加载UI定义 # 从 UI 定义中动态 创建一个相应的窗口对象 # 注意:里面的控件对象也成为窗口对象的属性了 # 比如 self.ui.button , self.ui.textEdit _pyqt5 载入ui

laravel框架权限管理_laravelv10.12.0框架vue开发一个用户权限管理模块-程序员宅基地

laravel RBAC权限管理一.角色表1.创建角色表生成迁移文件php artisan make:model Models/role -m添加字段 public function up() { Schema::create('roles', function (Blueprint $table) { $table->bigIncrements('id'); $table->string('name')-&g_laravelv10.12.0框架vue开发一个用户权限管理模块

java ssh框架实例_[Java] SSH框架笔记_框架整合示例(一)-程序员宅基地

本文描述的是框架SSH集成的示例,由于在这个过程中有一些小的细节容易被遗忘,特别撰写了一篇小的博文来记录这个过程,希望对自己以及后来者能够起到积极意义。本文中使用的框架和版本号为:struts-2.3.1.2、hibernate-3.6.10、spring-3.1.1其下载地址分别为:http://struts.apache.org/download.cgi#struts2312http://so..._javassh框架项目实例

程序员能力矩阵_矩阵 用法 程序员-程序员宅基地

[译文]程序员能力矩阵 Programmer Competency Matrix注意:每个层次的知识都是渐增的,位于层次n,也蕴涵了你需了解所有低于层次n的知识。计算机科学 Computer Science 2n (Level 0)n2 (Level 1)n (Level 2)log(n) (Level 3)Comme_矩阵 用法 程序员

GB50202-2018《建筑地基工程施工质量验收标准》免费下载_tuituisoft的博客-程序员宅基地

【资源介绍】资源名称:GB50202-2018《建筑地基工程施工质量验收标准》资源分类:建筑工程规范标准其他简介:GB50202-2018《建筑地基工程施工质量验收标准》【资源下载】链接:https://pan.baidu.com/s/1Gmeamqm9mSTMNKodPMJrBg提取码:40ue【资源截图】【免责申明】本站提供的资源下载链接均来自互联网,仅供学习研究之用,不得用于商业,请在24小时内删除!资源版权归原作者及其公司所有,如果你喜欢,请购买正版。..._50202-2018

python计算歌手得分_python求出歌手的得分-程序员宅基地

文章目录一.计算歌手最终得分二.得分范围要在【0,10】三.我们来试试一次计算五个歌手的最终成绩四.感谢大家观赏一.计算歌手最终得分1.有10个评委,每次打分舍去一个最低分和最高分,然后算出该歌手的最终得分。2.我们首先要让十个评委打分,先用for循环打出十个评委打的分数,然后我们将所有分数加起来 ,减去最大值和最小值,然后除以剩下的八个评委人数,这样就计算出了该歌手的最终得分。3.代码如下:scores = []for i in range(10): score = float_python求出歌手的得分