mysql之搭建MMM架构实现高可用

news2025/2/22 18:23:00

实验目的

解决mysql的主从服务器单点故障问题,实现高可用

实验思路

实验条件:

主机名

作用

IP地址

组件

mysql1

master01

20.0.0.13

 mysql服务、mysql-mmm

mysql2

masert02

20.0.0.23

mysql服务、mysql-mmm

mysql3

slave01

20.0.0.33

mysql服务、mysql-mmm

mysql4

slave02

20.0.0.43

mysql服务、mysql-mmm

test1

客户端

20.0.0.10

mysql-mmm

实验步骤

一、主主同步、主从同步

1、临时修改主机名

2、搭建 MySQL 多主多从模式

(1)在master01节点上修改配置文件

vim /etc/my.cnf

......

[mysqld]

user = mysql

basedir = /usr/local/mysql

datadir = /usr/local/mysql/data

port = 3306

character_set_server=utf8

pid-file = /usr/local/mysql/mysqld.pid

socket = /usr/local/mysql/mysql.sock

server-id = 1                                               

#每台 Mysql 主机的 server-id 不能相同

log-error=/usr/local/mysql/data/mysql_error.log             

#错误日志

general_log=ON                                              #通用查询日志

general_log_file=/usr/local/mysql/data/mysql_general.log

slow_query_log=ON                                           #慢查询日志

slow_query_log_file=mysql_slow_query.log

long_query_time=5

binlog-ignore-db=mysql,information_schema        

#不需要同步的库名

log_bin=mysql_bin                                

#开启二进制日志用于主从数据复制

log_slave_updates=true                           

#允许slave从master复制数据时可以写入到自己的二进制日志

sync_binlog=1                            

#"双1设置",MySQL 在每写一次二进制日志时都会同步到磁盘中去    

innodb_flush_log_at_trx_commit=1         

#"双1设置",每次事务提交时MySQL都会把缓存的数据写入日志文件,并且刷到磁盘中去

auto_increment_increment=2               

#自增字段一次递增多少

auto_increment_offset=1

(2)把配置文件复制到其它 3 台数据库服务器上并启动服务器,注意:配置文件中的 server_id 要修改

scp /etc/my.cnf root@20.0.0.23:/etc/

scp /etc/my.cnf root@20.0.0.33:/etc/

scp /etc/my.cnf root@20.0.0.43:/etc/

systemctl restart mysqld

(3)配置主主复制,两台主服务器相互复制

在两台主服务器上都执行授予从的权限,从服务器上不需要执行

grant replication slave on *.* to 'replication'@'20.0.0.%' identified by '123';

master01节点:

master02节点:

(1)在master02主服务器上查看,记录日志文件名称和同步点

show master status;

(2)在 master01 上配置同步

change master to master_host='20.0.0.23',master_user='replication',master_password='123',master_log_file='mysql_bin.000001',master_log_pos=456;

start slave;

show slave status\G

    Slave_IO_Running: Yes

Slave_SQL_Running: Yes

(3)在master01主服务器上查看,记录日志文件名称和同步点

show master status;

(4)在 master02上配置同步

change master to master_host='20.0.0.13',master_user='replication',master_password='123',master_log_file='mysql_bin.000001',master_log_pos=456;

start slave;

show slave status\G

    Slave_IO_Running: Yes

Slave_SQL_Running: Yes

4、配置主从复制,在两台从服务器上做

(1)在master01节点上

show master status;

(2)在slave01、slave02节点上

change master to master_host='20.0.0.13',master_user='replication',master_password='123',master_log_file='mysql_bin.000001',master_log_pos=1374;

show slave status\G;

5、测试主从同步

结论:主主复制、主从同步成功

二、安装配置 MySQL-MMM

1、在所有服务器上安装 MySQL-MMM

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

yum -y install epel-release

yum -y install mysql-mmm*

(1)在 master01 上对 MySQL-MMM 进行配置

cd /etc/mysql-mmm/

vim /etc/mysql-mmm/mmm_common.conf

(2)把配置文件复制到其它 4 台主机,所有主机该配置文件内容都是一样的

scp mmm_common.conf root@20.0.0.23:/etc/mysql-mmm/

scp mmm_common.conf root@20.0.0.33:/etc/mysql-mmm/

scp mmm_common.conf root@20.0.0.43:/etc/mysql-mmm/

scp mmm_common.conf root@20.0.0.10:/etc/mysql-mmm/

(3)修改所有数据库服务器的代理配置文件 mmm_agent.conf

vim /etc/mysql-mmm/mmm_agent.conf

include mmm_common.conf

this db1 #根据不同的主机分别修改为 db1,db2,db3,db4

(4)在 monitor 监控服务器上修改监控配置文件 mmm_mon.conf

vim /etc/mysql-mmm/mmm_mon.conf

include mmm_common.conf

<monitor>

.....

    ping_ips         192.168.80.20,192.168.80.30,192.168.80.13,192.168.80.14    #指定所有数据库服务器的 IP

auto_set_online 10 #指定自动上线时间

</monitor>

<host default>

    monitor_user        mmm_monitor #指定 mmm_monitor 的用户名

    monitor_password    123456          #指定 mmm_monitor 的密码

</host>

(5)在所有数据库上为 mmm_agent(代理进程)授权

grant super, replication client, process on *.* to 'mmm_agent'@'20.0.0.%' identified by '123';

(6)在所有数据库上为 mmm_moniter(监控进程)授权

grant replication client on *.* to 'mmm_monitor'@'20.0.0.%' identified by '123';

flush privileges;

(7)在所有数据库服务器上启动 mysql-mmm-agent

systemctl start mysql-mmm-agent.service

(8)在 monitor 服务器上启动 mysql-mmm-monitor

systemctl start mysql-mmm-monitor.service  

(9)在 monitor 服务器上测试群集

查看各节点的情况

mmm_control show

  db1(20.0.0.13) master/ONLINE. Roles: writer(20.0.0.188)

  db2(20.0.0.23) master/ONLINE. Roles:

  db3(20.0.0.33) slave/ONLINE. Roles: reader(20.0.0.198)

  db4(20.0.0.43) slave/ONLINE. Roles: reader(20.0.0.199)

(10)检测监控功能是否都完善,需要各种OK

mmm_control checks all

(11)指定绑定 VIP 的主机

mmm_control move_role writer db2

现在VIP在db2上

四、故障测试

(1)模拟故障

停止 master02确认 VIP 是否移动到 master01 上。注意:master02 主服务器恢复服务后,不会抢占

mmm_control show

(2)master02故障恢复

(3)停止一台从服务器,另一台将接管两个虚拟IP,以保证业务不停止

mmm_control show

一台从服务器(slave01)故障

故障恢复

4、客户端测试

(1)在 master01 服务器上为 monitor 服务器地址授权登录

grant all on *.* to 'yyy'@'20.0.0.10' identified by '123';

flush privileges;

(2)在 monitor 服务器上使用 VIP 登录

yum install -y mariadb-server mariadb

systemctl start mariadb.service

mysql -uyyy -p -h 20.0.0.188

#创建数据,测试同步情况

create database testdba;

三、排错

1、错误问题:主库、从库的二进制日志文件名不一致

主库:

从库:

解决方法:

2、错误问题:主库不同步

解决方式:重启从库

3、错误问题:第一次查主从同步成功,第二次再查主从同步发生变化,失败了

解决方式:主、从服务器重新赋权,绑定主从

change master to master_host='192.168.80.20',master_user='replication',master_password='123456',master_log_file='mysql_bin.000002',master_log_pos=154;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1212096.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C# 使用Microsoft.Office.Interop.Excel库操作Excel

1.在NuGet管理包中搜索&#xff1a;Microsoft.Office.Interop.Excel&#xff0c;如下图红色标记处所示&#xff0c;进行安装 2. 安装完成后&#xff0c;在程序中引入命名空间如下所示&#xff1a; using Microsoft.Office.Interop.Excel; //第一步 添加excel第三方库 usi…

kubernetes集群编排——prometheus监控

部署prometheus 创建项目仓库并上传镜像 编写配置文件 [rootk8s2 values]# vim prometheus-values.yaml alertmanager:alertmanagerSpec:image:repository: prometheus/alertmanagertag: v0.24.0 grafana:enabled: trueimage:repository: grafana/grafanatag: 9.0.6service:typ…

【开发问题解决方法记录】01.dian

一些问题记录 新增角色失败&#xff1a;Error: Ajax 调用为Execute Server-Side Code返回了服务器错误ORA-01722: 无效数字。 【问题原因】&#xff1a;CREATE_BY(NUMBER类型)应该存入USER_ID(NUMBER类型)而非USER_NAME&#xff08;NVARCHAR2类型&#xff09; 【解决方法】将…

一篇文章让你真正搞懂epoll机制

目录 1.epoll简介 2.epoll实现原理 3.创建epoll文件 4.增加&#xff0c;删除&#xff0c;修改epoll事件 5.epoll事件就绪 6.epoll编程流程 7.epoll常见问题&#xff1f; 1.epoll简介 epoll是Linux内核为处理大批量文件描述符而作了改进的poll&#xff0c;它能显著提高程…

一篇文章让你搞懂 MySQL 的锁

一篇文章让你搞懂 MySQL 的锁 1、并发问题的解决方案2、MySQL的各类型锁2.1、从数据操作的类型划分 (读锁、写锁)2.2、从数据操作的粒度划分2.2.1、表锁2.2.1.1、表级别的S 锁、X 锁2.2.1.2、意向锁&#xff08;IS、IX&#xff09;2.2.1.3、自增锁2.2.1.4、元数据锁 2.2.2、行锁…

亚马逊收到CPSC查验通知后卖家需要怎么弄?ASTM F963标准测试 ,CPC认证

收到CPSC查验亚马逊卖家需要怎么做&#xff1f; 。CPSC消费品安全协会&#xff0c;成立于1972年&#xff0c;它的责任是保护广大消费者的利益&#xff0c;通过减少消费品存在的伤害及死亡的危险来维护人身及家庭安全。CPSC现在负责对超过15000种消费品的安全监控&#xff0c;具…

【送书福利-第二十七期】《边缘计算系统设计与实践》

&#x1f60e; 作者介绍&#xff1a;我是程序员洲洲&#xff0c;一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主、前后端开发、人工智能研究生。公粽号&#xff1a;程序员洲洲。 &#x1f388; 本文专栏&#xff1a;本文…

基于Genio 700 (MT8390)芯片的AR智能眼镜方案

AR眼镜是一种具有前所未有发展机遇的设备&#xff0c;无论是显示效果、体积还是功能都有明显的提升。AR技术因其智能、实时、三维、多重交互和开放世界的特点备受关注。 AR眼镜集成了AR技术、语音识别、智能控制等多项高科技功能&#xff0c;可以帮助用户实现更加便捷、高效、个…

电脑桌面任务提醒便签选择哪一个好用?

伴随着科技现代化的发展&#xff0c;电脑成为大家日常办公及生活中必不可少的工具&#xff0c;如在日常办公中大家可以借助电脑上的任务提醒便签来合理规划自己的工作时间&#xff0c;督促任务的完成&#xff0c;提高工作的效率。 当前&#xff0c;支持在电脑上安装的任务提醒…

RGB转Bayer,一个小数点引发的血案

前几天写了一个RGB数据转Bayer格式的函数&#xff0c;经过测试功能正常。后来把这个函数用到一个数据库构建中&#xff0c;结果数据库出来的结果一直是一张黑图&#xff0c;追查了好几个小时&#xff0c;总算把这只虫子找出来了&#xff0c;原来是一个整数后面的小数点作祟。 …

基础课4——客服中心管理者面临的挑战

客服管理者在当今的数字化时代也面临着许多挑战。以下是一些主要的挑战&#xff1a; 同行业竞争加剧&#xff1a;客服行业面临着来自同行业的竞争压力。为了获得竞争优势&#xff0c;企业需要不断提高自身的产品和服务质量&#xff0c;同时还需要不断降低成本、提高效率。然而…

热烈庆祝瑞森半导体成立10周年

瑞森半导体10年芯路&#xff0c;衷心感谢全球合作伙伴、 客户、员工、朋友的帮助与支持。 弹指一挥间&#xff0c;瑞森半导体已在功率半导体行业奋勇前行了十年。3650个白天与黑夜&#xff0c;瑞森半导体在风雨兼程中砥砺前行&#xff0c;在倾情奉献中不负初心。十年里有太多的…

Go ZIP压缩文件读写操作

创建zip文件 golang提供了archive/zip包来处理zip压缩文件&#xff0c;下面通过一个简单的示例来展示golang如何创建zip压缩文件&#xff1a; func createZip(filename string) {// 缓存压缩文件内容buf : new(bytes.Buffer)// 创建zipwriter : zip.NewWriter(buf)defer writ…

如何高效收集数据?

在当今这个信息爆炸的时代&#xff0c;数据已经成为了一种新的资源&#xff0c;其价值不可估量。收集数据的重要性日益凸显&#xff0c;无论是对于企业、政府还是个人&#xff0c;数据都已经成为了一种宝贵的财富。分享一些网站。 一、宏观数据 1.国家统计局&#xff08;数据…

智慧工地综合管理平台-项目开发管理规范

目的 本规范制定旨在规范项目的开发流程,提高软件开发质量和效率,降低开发成本和风险。该规范包括但不限于以下几个方面: 项目管理 包括项目计划、需求分析、设计、开发、测试、发布等环节,以及项目进度、质量和风险管理等方面项目计划管理:制定项目计划,包括确定项目目…

基于Springboot+Vue的社区医院管理系统

基于SpringbootVue的社区医院管理系统的设计与实现~ 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBootMyBatisVue工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 主页 医生列表 医生详情 登录界面 管理员界面 医生界面 摘要 社区医院管…

day22_mysql

今日内容 零、 复习昨日 一、MySQL 一、约束 1.1 约束 是什么? 约束,即限制,就是通过设置约束,可以限制对数据表数据的插入,删除,更新 怎么做? 约束设置的语法,大部分是 create table 表名( 字段 数据类型(长度) 约束, 字段 数据类型(长度) 约束 );1.1 数据类型 其实数据类型…

HDFS入门--学习笔记

1&#xff0c;大数据介绍 定义 数据指的是&#xff1a;一种可以被鉴别的、对客观事件进行记录的符号&#xff0c;除了可以是最简单的 数字外&#xff0c;也可以是各类符号、文字、图像、声音等。 通俗地说&#xff0c;数据就是对人类的行为及发生事件的一种记录。 存在的价值…

【验证码逆向专栏】百某网数字九宫格验证码逆向分析

声明 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;不提供完整代码&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 本文章未…

Debezium-Embedded 实时监控MySQL数据变更

1.Debezium-Embedded 简介 Debezium连接器的操作通常是将它们部署到Kafka Connect服务&#xff0c;并配置一个或多个连接器来监控上游数据库&#xff0c;并为它们在上游数据库中看到的所有更改生成数据更改事件。这些数据更改事件被写入Kafka&#xff0c;在那里它们可以被许多不…