从小白到大神之路之学习运维第50天---第三阶段----MMM高可用集群数据库的安装部署

news2025/1/9 15:12:09

第三阶段基础

时  间:2023年6月30日

参加人:全班人员

内  容:

Mysql---MMM高可用集群架构

目录

一、MMM介绍

二、MMM工作原理

三、MMM安装部署

环境配置:(所有主机配置)

1、主机信息

​编辑

2、关闭防火墙

3、同步时区

4、配置主机解析文件

5、配置ssh免密登录

6、所有机器安装epel源

数据库配置:

【所有数据库均做的配置】

1、安装四台数据库并修改密码

2、修改数据库配置文件/etc/my.cnf

3、启动服务

【主库1和备用主库2配置】

设置主库1和备用主库互为主从

1.查看日志文件

2.互相授权从用户

3.都关闭从

4.都设置为主库

5.创建库互相验证

【从库1和从库2配置】

从库1和从库2都设为主库1的从库

1.都关闭从stop slave;

2.都设置成主1的从库

3.开启从start slave;

4.查看状态show slave status\G

5.创建库互相验证

【高可用配置】

所有数据库配置:【huyang1/2/3/4】

1.在所有数据库授权使monitor可以访问

2.所有主机安装

3. 所有主机修改配置文件

4.所有服务器修改角色和配置文件里对应上

5.所有数据库启动mysql agent代理服务

【监视器配置】

1.修改监控主机配置文件

2.监视器启动监控

3.查看状态

4.查看监控状态

5.手动切换状态

【结果测试】

【停止主库的mariadb服务】

1.查看其他库变化

2.在备用主库2上新建库

【重启主库1】

1.查看其他库变化

【停止备用主库2的服务】

四、结果总结:

五、mysql---MMM高可用集群架构与MHA高可用架构的区别:


一、MMM介绍

Master-Master Replication Manager for MySQL

是一套支持双主故障切换和双主日常管理的脚本程序

二、MMM工作原理

mmm_mond监控进程,负责所有的监控工作,决定和处理所有节点角色活动。因此脚本需要在监管机上运行

mmm_agentd运行在每个mysql服务器上的代理进程,完成监控的探针工作和执行简单的远端服务设置;此脚本需要在被监管机上运行

mmm_control一个简单的脚本,提供管理mmm_mond进程的命令

mysql-mmm监管端会提供多个虚拟IP(VIP),包括一个写VIP,多个可读VIP,通过监管的管理,这些IP会绑定在可用MySQL之上,当某台MySQL宕机时,监管会将VIP地址迁移至其他MySQL服务器

  

在整个监管过程中,需要在mysql中添加相关授权用户,以便让mysql可以支持监管机的维护;

授权的用户包括mmm_monitor用户和一个mmm_agent用户,如果想使用mmm的备份工具则还要添加一个mmm_tools用户。

三、MMM安装部署

环境配置:(所有主机配置)

1、主机信息

作  用

Ip地址

主机名

主库1

192.168.59.137

huyang1

备用主库2

192.168.59.138

huyang2

从库1

192.168.59.140

huyang3

从库2

192.168.59.142

huyang4

监视器

192.168.59.144

huyang5

2、关闭防火墙

systemctl stop firewalld

iptables -F

setenforce 0

3、同步时区

【huyang1/2/3/4/5/】yum -y install ntp

【huyang1】systemctl  start  ntpd

【huyang1/2/3/4/5/】ntpdate  huyang1

4、配置主机解析文件

【huyang1】vim /etc/hosts

输入信息:192.168.59.137 huyang1

192.168.59.138 huyang2

192.168.59.140 huyang3

192.168.59.142 huyang4

192.168.59.144 huyang5

【huyang1】scp /etc/hosts  huyang1/2/3/4/5:/etc/hosts

5、配置ssh免密登录

【huyang1/2/3/4/5】

ssh-keygen -t rsa

ssh-copy-id -i .ssh/id_rsa.pub root@huyang5

【huyang5】cat /root/.ssh/authorized_keys

scp .ssh/authorized_keys root@huyang1:.ssh/

scp .ssh/authorized_keys root@huyang2:.ssh/

scp .ssh/authorized_keys root@huyang3:.ssh/

scp .ssh/authorized_keys root@huyang4:.ssh/

【huyang1】生成密钥对传给其他数据库,连接测试

ssh huyang1

ssh huyang2

ssh huyang3

ssh huyang4

ssh huyang5

因为第一次连接的时候需要输入yes

影响后期故障切换时,对于每个主机的SSH控制

6、所有机器安装epel源

yum -y install epel-release

数据库配置:

【所有数据库均做的配置】

1、安装四台数据库并修改密码

yum -y install mariadb mariadb-server mariadb-devel

systemctl start mariadb

mysqladmin -u root password 123456

2、修改数据库配置文件/etc/my.cnf

vim /etc/my.cnf

主库1:

server-id=1

log-bin=mysql-bin

log-slave-updates=true

relay-log=relay-log-bin

relay-log-index=relay-log-bin.index

备用主库2:

server-id=2

log-bin=mysql-bin

log-slave-updates=true

relay-log=relay-log-bin

relay-log-index=relay-log-bin.index

从库1:

server-id=3

relay-log=relay-log-bin

relay-log-index=relay-log-bin.index

从库2:

server-id=4

relay-log=relay-log-bin

relay-log-index=relay-log-bin.index

3、启动服务

重启服务:systemctl restart mariadb

登录:mysqlmysql -uroot -p123456

【主库1和备用主库2配置】

设置主库1和备用主库互为主从

1.查看日志文件

show master status

2.互相授权从用户

【huyang1】grant replication slave on *.* to

'replication'@'192.168.59.%' identified by '123456';

flush privileges;

【huyang2】grant replication slave on *.* to

'replication'@'192.168.59.%' identified by '123456';

flush privileges;

3.都关闭从

stop slave;

4.都设置为主库

【huyang1】change master to

master_host='192.168.59.138',master_user='replication',master_password='123456',master_log_file='master-bin.000003',master_log_pos=245;

【huyang2】change master to

master_host='192.168.59.137',master_user='replication',master_password='123456',master_log_file='master-bin.000001',master_log_pos=345;

开启从start slave;

查看状态show slave status\G

5.创建库互相验证

create database huyang1

show databases;

【从库1和从库2配置】

从库1和从库2都设为主库1的从库

1.都关闭从stop slave;

2.都设置成主1的从库

change master to

master_host='192.168.59.137',master_user='replication',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=245;

3.开启从start slave;

4.查看状态show slave status\G

5.创建库互相验证

create database HUYANG1

show databases;

【高可用配置】

所有数据库配置:【huyang1/2/3/4】

1.在所有数据库授权使monitor可以访问

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

super:超级权限

replication client:客户端复制管理权限

process on:进程管理

2.所有主机安装

yum -y install mysql-mmm*

3. 所有主机修改配置文件

vim /etc/mysql-mmm/mmm_common.conf

cluster_interface       ens33  网卡

replication_user        replication  复制用户

replication_password    123456  复制用户的密码

agent_user              mmm_agent  管理用户

agent_password          123456  管理用户的密码

</host>设置的管理用户

详细配置如下图:

4.所有服务器修改角色和配置文件里对应上

 vim /etc/mysql-mmm/mmm_agent.conf

分别改为huyang1、huyang2、huyang3、huyang4

5.所有数据库启动mysql agent代理服务

 systemctl start mysql-mmm-agent

【监视器配置】

1.修改监控主机配置文件

vim /etc/mysql-mmm/mmm_mon.conf

ping_ips  后面跟上所有服务器的真实ip

<host default>

   monitor_user        mmm_agent  管理用户

    monitor_password    123456授权账户和密码

</host>

详细配置如下图:

2.监视器启动监控

systemctl start mysql-mmm-monitor

3.查看状态

mmm_control show

4.查看监控状态

mmm_control checks all

5.手动切换状态

mmm_control move_role writer huyang1

【结果测试】

【停止主库的mariadb服务】

systemctl stop mariadb

1.查看其他库变化

【监视器】mmm_control show

vip地址:192.168.59.143由主库变到了备用主库2上

【huyang3/4】show slave status\G;

【huyang2】show slave status\G;

2.在备用主库2上新建库

Create database huyang1

以下图为例:

 

可以发现备用主库2虽然新建了库huyang1,但是从库1和从库2没有发生变化

【重启主库1】

【huyang1】systemctl start mariadb

1.查看其他库变化

【监视器变化】mmm_control show

vip地址:没有变化

【huyang3/4】show slave status\G;

重新连接上了主库1

【huyang2】show slave status\G;

【停止备用主库2的服务】

【huyang2】systemctl start mariadb

【监视器变化】mmm_control show

vip地址:192.168.59.143由主库变到了主库1上

【huyang3/4】show slave status\G;

【huyang1/3/4】show databases;

可以发现当初在备用主库2上新建的库huyang1,此时出现在了【huayng1/3/4】数据库内

四、结果总结:

1.在切换主从的过程中查看结果较慢;

2.当第一个主服务停止之后,第二个服务器会成为主,但是查看状态会报错,因为一开始指定的就是第一个服务器;

3.虽然在主库1宕机之后,备用主库2和从库3从库4明面上没有产生主从复制的效果,但是在主库1恢复之后,手动停止备用主库2的服务,vip会将之前在备用主库2上的产生的数据,转移给主库1,并复制到从库1和从库2上,以保证数据的同步,这就是mysql---MMM高可用集群架构的意义!

五、mysql---MMM高可用集群架构与MHA高可用架构的区别:

MMM:相对于MHA来说,最多支持两主多从,特点是小型,且容易丢失数据;

MHA:支持多个一主两从,监控器只需要监控每个主,所以可以建立多个主从结构。

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

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

相关文章

探索无限可能的教育新领域,景联文教育GPT题库开启智慧教育新时代!

随着人工智能技术的快速发展&#xff0c;教育领域也将迎来一场革命性的变革。景联文科技是AI基础数据行业的头部企业&#xff0c;近期推出了一款高质量教育GPT题库。 景联文科技高质量教育GPT题库采用了先进的自然语言处理技术和深度学习算法&#xff0c;可以实现对各类题目的智…

一个输入网址就可显示网站安全性及网站主要内容的含GUI的Python小程序

文章目录 1.一些杂七杂八的引入2.实现2.1 显示网站安全性2.2 安装所需python包2.2.1 requests包2.2.1 beautifulsoup包 3.源码展示4.效果展示 1.一些杂七杂八的引入 上次发了一个类似爬虫&#xff0c;可以自动下载网页图片的python小程序&#xff08;详见一个自动下载网页图片…

【Web工具】3D 旋转中各数据格式之间的转换

1 Rotation Master — Link GitHub: Link 2 3D Rotation Converter — Link GitHub: Link 3 Quaternions — Link 4 Rotation Conversion Tool — Link 这是个人博客网站&#xff0c;其中可能有你需要的知识: Link

Prometheus实现自定义指标监控

1、Prometheus实现自定义指标监控 前面我们已经通过 PrometheusGrafana 实现了监控&#xff0c;可以在 Grafana 上看到对应的 SpringBoot 应用信息了&#xff0c; 通过这些信息我们可以对 SpringBoot 应用有更全面的监控。 但是如果我们需要对一些业务指标做监控&#xff0c;…

老文章可以删了!!!。2023年最新IDEA中 Java程序 | Java+Kotlin混合开发的程序如何打包成jar包和exe文件(gradle版本)

文章内容&#xff1a; 一. JAVA | JAVA和Kotlin混开开发的程序打包成jar方法 1.1 方法一 &#xff1a;IDEA中手动打包 1.2 方法二 &#xff1a;build.gradle中配置后编译时打包 二. JAVA | JAVA和Kotlin混合开发的程序打包成exe的方法 一. JAVA | JAVA和Kotlin混开开发的程序…

使用 Jetpack Compose 实现 ViewPager2

在此博客中&#xff0c;我们将介绍如何在Jetpack Compose中实现ViewPager2的功能。我们将使用Accompanist库中的Pager库&#xff0c;这是由Google开发的一个用于Jetpack Compose的库。 首先&#xff0c;需要将Pager库添加到你的项目中&#xff1a; implementation androidx.co…

投票活动链接制作方法网络投票办法公众号做投票链接

用户在使用微信投票的时候&#xff0c;需要功能齐全&#xff0c;又快捷方便的投票小程序。 而“活动星投票”这款软件使用非常的方便&#xff0c;用户可以随时使用手机微信小程序获得线上投票服务&#xff0c;很多用户都很喜欢“活动星投票”这款软件。 “活动星投票”小程序在…

ModelScope魔搭社区AI模型下载数据可能存在严重造假问题

目录 摘要&#xff1a; 一、数据分析 二、可能存在的问题 三、结论与建议 摘要&#xff1a; ModelScope魔搭社区作为一个AI模型共享平台&#xff0c;旨在提供各种领域的模型供用户下载和使用。然而&#xff0c;通过对其提供的数据进行分析&#xff0c;发现其中存在一定的数…

【Flutter】built_value 解决 Flutter 中的不可变性问题

文章目录 一、 前言二、 什么是 built_value&#xff1f;三、 为什么我们需要 built_value&#xff1f;四、 如何在 Flutter 中安装和设置 built_value&#xff1f;五、 如何使用 built_value 创建不可变的值类型&#xff1f;六、 如何使用 built_value 创建枚举类&#xff1f;…

pcl基于八叉树进行空间划分和搜索操作

建立空间索引在点云数据处理中已被广泛应用&#xff0c;常见空间索引一般是自顶向下逐级划分空间的各种空间索引结构&#xff0c;比较有代表性的包括 BSP 树、KD 树、KDB 树、 R树、R树、CELL 树、四叉树和八叉树等索引结构&#xff0c;而在这些结构中 KD 树和八叉树在 3D点云数…

使用键鼠网络共享用windows控制ubuntu,实现跨屏跨系统操作

经调研发现几种网络共享鼠标方案&#xff1a;sharemouse、synergy以及Barrier&#xff0c;由于没找到合适的资料去配置sharemouse&#xff0c;synergy又收费&#xff0c;所以使用Barrier。 一、Ubuntu安装Barrier 到Ubuntu软件商城搜索Barrier点击安装即可&#xff0c;这就不再…

学成在线----day8

1、课程发布 为了提高网站的速度需要将课程信息进行缓存&#xff0c;并且要将课程信息加入索引库方便搜索&#xff0c;下图显示了课程发布后课程信息的流转情况&#xff1a; 1、向内容管理数据库的课程发布表存储课程发布信息&#xff0c;更新课程基本信息表中发布状态为已发…

【Shell】读取用户终端输入内容

授权 cd /Users/lion/Downloads/shell-test-demos chmod ux *.shread_user_enter.sh #!/bin/bashprintHelp() {echo "1. hello"echo "2. world"echo "0. exit" }printHelpnumber"" while [ -z $number ]; doread -p "enter a n…

干货,让微信群活跃的秘籍

微信用户数量庞大、使用率高&#xff0c;是很多企业/商家做社群营销的第一平台&#xff0c;所以目前有很多微信社群营销管理系统。我一直在用的一个多群管理工具---微信管理系统&#xff0c;对于新手来说&#xff0c;操作也是十分的简单易上手&#xff0c;每一步都有教程指导&a…

网站被黑挂马应该怎么解决

遇到网站被黑或者被挂马&#xff0c;其实都是很正常的现象&#xff0c;做网站的站长&#xff0c;几乎都有网站被黑的历史 遇到这种问题&#xff0c;首先&#xff1a; 检查网站源文件的日期&#xff0c;回顾一下在过去一段时间里面&#xff0c;你有没有对源文件做过改动&#x…

程序员性能之道,从使用perf开始!

一、perf简介 从2.6.31内核开始&#xff0c;Linux内核自带了一个性能分析工具perf&#xff0c;能够进行函数级与指令级的热点查找。通过它&#xff0c;应用程序可以利用 PMU&#xff0c;tracepoint 和内核中的特殊计数器来进行性能统计。它不但可以分析指定应用程序的性能问题…

Apikit 自学日记:使用脚本处理数据

脚本分为 前置脚本 和 后置脚本 两种&#xff0c;分别对应 API 请求前 和 返回数据后 的两个阶段。您可以通过编写 Javascript 代码&#xff0c;在 API 前置脚本中改变请求参数&#xff0c;或者是在 API 后置脚本中改变返回结果。 脚本常用于以下几种情况&#xff1a; API 请求…

【夜深人静学数据结构与算法 | 第十一篇】枚举算法

目录 前言&#xff1a; 枚举算法&#xff1a; 优点&#xff1a; 枚举算法的种类&#xff1a; 枚举算法案例&#xff1a; 343. 整数拆分 - 力扣&#xff08;LeetCode&#xff09; 12. 整数转罗马数字 - 力扣&#xff08;LeetCode&#xff09; 总结&#xff1a; 前言&…

video-05-videojs编写(全屏、非全屏)自定义控件!!!!

兄弟们&#xff01;&#xff01;看到这里&#xff0c;你马上就可以自定义控件了&#xff0c;想想是不是都激动啊&#xff0c;但是这篇文章重在思路及简单实现&#xff0c;仔细看。 目录 一、控件分类 二、实现方案&#xff08;方案二最好&#xff09; 2.1 方案1&#xff08;…

前端Vue自定义轮播图swiper 轮播图dot 轮播图指示indicate

前端Vue自定义轮播图swiper 轮播图dot 轮播图指示indicate&#xff0c;下载完整代码请访问uni-app插件市场地址&#xff1a;https://ext.dcloud.net.cn/plugin?id13193 效果图如下: ​ 编辑切换为居中 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; ​…