MHA部署

news2024/9/24 19:14:37

目录

高可用集群MHA

环境准备

设置服务器免密通联

修改主机名和hosts文件(四台)

四台服务器相同操作

四台服务器相同操作-关闭防火墙 

四台服务器-免密配置-生成密钥

四台服务器-免密配置-复制密钥

 将authorized_keysau文件发送给node2/3/4

测试是否免密登陆其他主机

master操作-主从复制配置

slave1从库操作

slave2操作

manager操作

对各个节点进行检测

检查管理的MySQL复制集群的连接配置参数是否OK 


MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件。在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用。

环境准备

环境准备     CentOS Linux release 7.5.1804 (Core)

设置服务器免密通联

角色    节点    ip    说明

manager    node1    192.168.1.85    管理

master    node2    192.168.1.86    主

slave1     node3    192.168.1.87    从

slave2     node4    192.168.1.88    从

修改主机名和hosts文件(四台)

[root@localhost1 ~]# hostname node1

[root@localhost2 ~]# hostname node2

[root@localhost3 ~]# hostname node3

[root@localhost4~]# hostname node4

四台服务器相同操作

[root@localhost ~]# vim /etc/hosts

192.168.1.85 node1

192.168.1.86 node2

192.168.1.87 node3

192.168.1.88 node4

四台服务器相同操作-关闭防火墙 

[root@node1 ~]# systemctl stop firewalld;setenforce 0    

 [root@node2 ~]# systemctl stop firewalld;setenforce 0    

[root@node3 ~]# systemctl stop firewalld;setenforce 0    

 [root@node4 ~]# systemctl stop firewalld;setenforce 0

四台服务器-免密配置-生成密钥

[root@node1 ~]# ssh-keygen -t rsa

[root@node2 ~]# ssh-keygen -t rsa

[root@node3 ~]# ssh-keygen -t rsa

[root@node4 ~]# ssh-keygen -t rsa

四台服务器-免密配置-复制密钥

[root@node1 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@node1

[root@node2 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@node1

[root@node3 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@node1

[root@node4 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@node1

[root@node1 ~]# cat /root/.ssh/authorized_keysau

 将authorized_keysau文件发送给node2/3/4

[root@node1 ~]# scp .ssh/authorized_keys root@node2:.ssh/

[root@node1 ~]# scp .ssh/authorized_keys root@node3:.ssh/

[root@node1 ~]# scp .ssh/authorized_keys root@node4:.ssh/

测试是否免密登陆其他主机

[root@node1 ~]# ssh node2

[root@node1 ~]# ssh node3

[root@node1 ~]# ssh node4

master操作-主从复制配置

[root@node2 ~]# yum -y install epel-release

[root@node2 ~]# yum -y install mariadb mariadb-server

  根据需要获取对应版本的安装包,再进行安装。

[root@node2 ~]# rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm

root@node2 ~]# vim /etc/my.cnf  #修改配置文件

[mysqld]

server-id = 1

log-bin = master-log

relay-log = relay-log

skip_name_resolve

[root@node2 ~]# systemctl start mariadb  启动mariadb服务

[root@node2 ~]#  mysql进入mariadb

#授权用户给从库使用

MariaDB [(none)]> grant replication slave on *.* to slave@'%' identified by '123';

#授权用户给manager管理master使用

MariaDB [(none)]> grant all on *.* to mha@'%' identified by '123';

MariaDB [(none)]> show master status;

 +-------------------+----------+--------------+------------------+

| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+-------------------+----------+--------------+------------------+

| master-log.000003 |      529 |              |                

 | +-------------------+----------+--------------+------------------+

1 row in set (0.00 sec)  每个master-log值都不一样  按照自己那个值

slave1从库操作

[root@node3 ~]# yum -y install mariadb mariadb-server epel-release

[root@node3 ~]# rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm

[root@node3 ~]# vim /etc/my.cnf

[mysqld]

server-id = 2                

relay-log = relay-log        

log-bin = master-log        

read_only = ON              

relay_log_purge = 0          

skip_name_resolve              

log_slave_updates = 1

[root@node2 ~]# systemctl start mariadb  启动mariadb服务

[root@node2 ~]#mysql

MariaDB [(none)]> change master to master_host='主库IP',master_user='slave',master_password='123',master_log_file='master-log.000003',master_log_pos=529;

MariaDB [(none)]> start slave;

MariaDB [(none)]> show slave status \G

授权管理manager

grant all on *.* to mha@'%' identified by '123';

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

slave2操作

[root@node4 ~]# yum -y install mariadb mariadb-server epel-release

[root@node4 ~]# rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm

[root@node3 ~]# vim /etc/my.cnf  配置文件修改

server-id = 3

[mysqld]

              relay-log = relay-log

        log-bin = master-log    

    read_only = ON              

relay_log_purge = 0        

  skip_name_resolve    

          log_slave_updates = 1

[root@node2 ~]# systemctl start mariadb  启动mariadb服务

[root@node2 ~]#mysql

MariaDB [(none)]> change master to master_host='主库IP',master_user='slave',master_password='123',master_log_file='master-log.000003',master_log_pos=529;

MariaDB [(none)]> start slave;

MariaDB [(none)]> show slave status \G

授权管理manager

grant all on *.* to mha@'%' identified by '123';

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

manager操作

[root@node1 ~]# yum -y install mariadb mariadb-server epel-release

[root@node1 ~]#根据需要获取对应版本的安装包,再进行安装。

 

yum -y install mha4mysql-node-0.56-0.el6.noarch.rpm mha4mysql-manager-0.56-0.el6.noarch.rpm

创建manager配置文件

[root@node1 ~]# mkdir /etc/mha_master

[root@node1 ~]# vim /etc/mha_master/mha.cnf

[server default]

user=mha

password=123

manager_workdir=/etc/mha_master/app1

manager_log=/etc/mha_master/manager.log

remote_workdir=/mydata/mha_master/app1

ssh_user=root

repl_user=slave

repl_password=123

ping_interval=1

[server1] hostname=192.168.174.131

ssh_port=22

candidate_master=1

[server2] hostname=192.168.174.132

ssh_port=22

candidate_master=1

[server3] hostname=192.168.174.133

ssh_port=22

candidate_master=1

:wq保存退出

对各个节点进行检测

[root@node1 ~]# masterha_check_ssh --conf=/etc/mha_master/mha.cnf

检查管理的MySQL复制集群的连接配置参数是否OK 

[root@node1 ~]# masterha_check_repl --conf=/etc/mha_master/mha.cnf

 最后一步出现错误通常是授权问题,在三个主从服务器中进入mysql 从新授权即可。

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

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

相关文章

0018-TIPS-pawnyable : NULL-Pointer-Dereference

原文 NULL Pointer Dereference 题目下载 环境宽松限制 启动选项中可以看到,SMAP在被攻击的机器上被禁用。除非禁用 SMAP,否则无法利用本章中讨论的 NULL 指针取消引用。 还可以尝试启动该内核并输入以下命令: $ cat /proc/sys/vm/mmap_mi…

chatgpt赋能python:Python文件打包:了解基本概念和步骤

Python文件打包: 了解基本概念和步骤 Python开发现在已经越来越成为了一种主流开发方式,然而,当我们的代码在多个环境中运行时,我们可能会遇到各种问题。Python文件打包就起到了非常重要的作用,它可以把我们的代码和环…

java ArrayList()常用详解

文章目录 java ArrayList()常用详解构造方法构造一个具有指定初始容量的空列表构造具有指定初始容量的空列表 常用方法指定的元素追加到此列表的末尾泛型 用来约束集合中存储数据的数据类型在次列表中的指定位置插入指定的元素返回此列表中指定位置的元素删除该列表中指定位置的…

spring 解决循环依赖

spring 解决循环依赖 1、什么是循环依赖? 循环依赖其实就是循环引用,也就是两个或则两个以上的bean互相持有对方,最终形成闭环。比如A依赖于B,B依赖于C,C又依赖于A。如下图: spring的单例对象的初始化主要…

DAC0832

芯片简介: DAC0832是采样频率为八位的D/A转换芯片,集成电路内有两级输入寄存器,使DAC0832芯片具备双缓冲、单缓冲和直通三种输入方式。D/A转换结果采用电流形式输出。若需要相应的模拟电压信号,可通过一个高输入阻抗的线性运算放…

Redmi Book Pro 15 2022 笔记本电脑更换硬盘总结

我的电脑型号是Redmi Book Pro 15 2022 锐龙版,早在6月15日磁盘空间就告急了,正好遇上618就打算更换硬盘,直到今天更换成功,特此来记录一下 目录 一、更换硬盘前准备工作二、更换硬盘三、硬盘迁移以及分区四、总结 本文的更换过程…

实验记录之——mac用visual studio code配置opencv

安装opencv 用Homebrew安装opencv brew install wget brew install cmake brew install opencv看来都安装过了hhh 通过下面命令再次检测安装的opencv版本 brew info opencv全部都打绿色的勾,应该就是都安装完了。 Vscode配置c/c环境 配置cpp项目可以看下面链接…

第一天,PyTorch张量的运算

文章目录 一、说明二、张量的常用运算1. 索引和切片(与numpy类似)2. 通过torch.cat来进行连接张量3. 矩阵运算和算数运算1. 在PyTorch中mul与matmul和的区别2. 矩阵运算和算数运算的示例 4. 聚合张量中的所有值5. 给所有元组增加1,使用add_&a…

Chrome 开发者调试常用工具

Chrome调试工具介绍 ①②③④⑤⑥⑦⑧⑨⑩ 一、Elements-元素 选项说明 styles filter搜索框:查找过滤样式, 包括class名当前选中的元素 查看其伪类效果已经样式给当前选中元素添加class名可以把当前元素class名或者id, 按照css层级添加一…

C语言:获得月份天数(多组输入)

题目: 描述 KiKi想获得某年某月有多少天,请帮他编程实现。输入年份和月份,计算这一年这个月有多少天。 输入描述: 多组输入,一行有两个整数,分别表示年份和月份,用空格分隔。 输出描述&#xff…

chatgpt赋能python:Python整除判断——一个不可缺少的技能

Python整除判断——一个不可缺少的技能 Python是一门广泛应用于科学计算、人工智能等多个领域的编程语言。在Python中,整除判断是一个非常基础但却不可或缺的技能。本篇文章将从基础开始介绍如何判断是否整除,以及如何在实际应用中使用整除判断。 整除…

PB9与Navicat Premium 16同时连接Oracle11g的连接问题

PB9与Navicat Premium 16同时连接Oracle11g的连接问题。 电脑安装的是win64_11gR2_database就是64的。 Navicat Premium 16其实是等oracle安装好后直接就能连了毫无问题。 pb9呢。因为需要32驱动的oci.dll,所以需要下载instantclient-basic-win32-11.1.0.7.0解压…

第七章 MobileNetv2网络详解

系列文章目录 第一章 AlexNet网络详解 第二章 VGG网络详解 第三章 GoogLeNet网络详解 第四章 ResNet网络详解 第五章 ResNeXt网络详解 第六章 MobileNetv1网络详解 第七章 MobileNetv2网络详解 第八章 MobileNetv3网络详解 第九章 ShuffleNetv1网络详解 第十章…

【C++篇】动态分配内存

友情链接:C/C系列系统学习目录 知识点内容正确性以C Primer(中文版第五版)、C Primer Plus(中文版第六版)为标准,同时参考其它各类书籍、优质文章等,总结归纳出个人认为较有逻辑的整体框架&…

EBU5476 Microprocessor System Design 知识点总结_6 Timer

Timer 想让程序定时运行,比如led 1s闪烁一次。如何做到? 第一种方法是愚蠢的delay延时,我自己估算一下:嗯,delay(2000)差不多1s。然后在程序中delay,点亮,delay,熄灭…… 太浪费资…

【C++篇】友元、运算符重载与多态

友情链接:C/C系列系统学习目录 知识总结顺序参考C Primer Plus(第六版)和谭浩强老师的C程序设计(第五版)等,内容以书中为标准,同时参考其它各类书籍以及优质文章,以至减少知识点上的…

【滤波】粒子滤波

%matplotlib inline#format the book import book_format book_format.set_style()动机 现在的问题是:我们要跟踪移动中的物体,也许这些物体是战斗机和导弹,或者是在场地里打球的人。但这都没有太大差别。那么,我们所学的滤波器中…

数据发布到WordPress网站,变为已计划、定时或Scheduled

采集数据发布到WordPress网站,但数据没有在前端页面显示,在wordpress后台查看变为已计划、定时或Scheduled。 这个是由于发布的时间变成未来时间导致的,先核实下设置的发布时间是否正确。 如果正确,那就是时区的问题导致时间变成…

Vue--》Vue3打造可扩展的项目管理系统后台的完整指南(六)

今天开始使用 vue3 ts 搭建一个项目管理的后台,因为文章会将项目的每一个地方代码的书写都会讲解到,所以本项目会分成好几篇文章进行讲解,我会在最后一篇文章中会将项目代码开源到我的GithHub上,大家可以自行去进行下载运行&…

翻过那座山——Gitlab流水线任务疑难之编译有子模块的项目指南

📢欢迎点赞 :👍 收藏 ⭐留言 📝 如有错误敬请指正,赐人玫瑰,手留余香!📢本文作者:由webmote 原创📢作者格言:新的征程,我们面对的不是…