MHA高可用架构部署以及配置(详细)

MHA高可用架构部署
摘要由CSDN通过智能技术生成

目录

一、MHA概述

1、简介

2、MHA特点

3、何为高可用

4、故障切换过程

二、MHA高可用架构部署

1、架构图

2、 实验环境:需要四台Centos7服务器

3、实验部署

3.1、master、slave1、slave2安装mysql服务,之前博客有编译安装教程

3.2、master、slave1、slave2上配置my.cnf

3.3、在master、slave1、slave2上分别做两个软链接

3.4、重启3台MySQL服务,再查看端口,是否启动成功

3.5、配置主从复制

3.6、在manager主机上配置mha

3.7、配置无密码认证

3.8、在manager节点上配置MHA脚本

3.9、创建 MHA 软件目录并拷贝配置文件

三、测试

1、在manager端测试无密码认证

2、测试主从复制

3、启动mha

4、查看到当前的master节点

5、查看当前日志信息

6、模拟master宕机,slave1是否能顶上


一、MHA概述

1、简介

MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,MHA是由
日本人开发,是一套优秀的MySQL故障切换和主从复制的高可用软件。

在MySQL故障切换的过程中,MHA能做到0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能够最大程度上保证数据库的一致性,以达到真正意义上的高可用。

MHA里有 两个角色一个是MHA Node(数据节点)另一个是MHA Manager(管理节点)。MHA Manager可以单独部署 在一台独立的机器上管理多个master-slave集群,也可以部署在一台slave节点上。MHA Node运行在每台 MySQL服务器上,MHA Manager会定时探测集群中的master节点,当master出现故障时,它可以自动将最新 数据的slave提升为新的master,然后将所有其他的slave重新指向新的master。整个故障转移过程对应用程序完全透明。

2、MHA特点

自动故障切换过程中,MHA总会试图从宕机的主服务器上保存二进制日志,最大程度的保证数据不丢失。

但这并不总是可行,例如如果主服务器硬件故障或者无法通过ssh访问,MHA则无法保存二进制日志,只能进行故障转移而丢失了最新的数据。此时,使用MySQL5.5的半同步复制,可以大大降低数据丢失的风险。MHA可以与半同步复制结合起来,如果只有一个slave已经收到了最新的二进制日志,MHA可以将最新的二进制日志应用于其他所有的slave服务器上,因此可以保证所有节点的数据一致性,有时候可故意设置从节点慢于主节点,当发生意外删除数据库倒是数据丢失时可从从节点二进制日志中恢复。

3、何为高可用

高可用就是可用性强,在一定条件下(某个服务器出错或宕机)可以保证服务器可以正常运行,在一定程度上不会影响业务的运行。

4、故障切换过程

当主服务器出现错误时,被manager服务器监控到主库mysqld服务停止后,首先对主库进行SSH登录检查(save_binary_logs -command=test),然后对mysqld服务进行健康检查(PING(SELECT)每个3秒检查一次,持续3次),最后作出Master is down!的判断,master failover开始进行对应的处理

二、MHA高可用架构部署

安装包下载:

https://download.csdn.net/download/m0_62948770/86724795

1、架构图

2、 实验环境:需要四台Centos7服务器

①一台作为mha服务器(manager)来监控管理下面的MySQL服务器

②三台:一主两从MySQL服务器

主机 IP
manager 192.168.159.13
master 192.168.159.68
slave1 192.168.159.11
slave2 192.168.159.10

实验流程:

安装编译环境——> 安装MySQL5.6.36数据库——>配置时间同步——>配置主从复制与储备MySQL服务器——>安装node工具——>配置mha服务器——>测试验证

3、实验部署

3.1、master、slave1、slave2安装mysql服务,之前博客有编译安装教程

3.2、master、slave1、slave2上配置my.cnf

修改master的配置文件my.cnf

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

[client]
port = 3306
#default-character-set=utf8                    ## 注销字符集
socket = /usr/local/mysql/mysql.sock

[mysql]
port = 3306
#default-character-set=utf8                   ## 注销字符集
socket = /usr/local/mysql/mysql.sock

[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                          

##增加内容
log_bin = master-bin                   
log-slave-update = true                

修改slave1的配置文件my.cnf

[root@slave1 ~]# vim /etc/my.cnf
[client]
port = 3306
#default-character-set=utf8
socket = /usr/local/mysql/mysql.sock

[mysql]
port = 3306
#default-character-set=utf8
socket = /usr/local/mysql/mysql.sock

[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 =2                               ## 修改为2 
log_bin = master-bin                       ## 开启二进制日志                    
relay-log = relay-log-bin                  ## 使用中继日志进行同步       
relay-log-index = slave-relay-bin.index    ## 索引

修改slave2的配置文件my.cnf

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

[client]
[mysql]
port = 3306
#default-character-set=utf8
socket = /usr/local/mysql/mysql.sock

[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 = 3
log_bin = master-bin
relay-log = relay-log-bin
relay-log-index = slave-relay-bin.index

3.3、在master、slave1、slave2上分别做两个软链接

############ 只做master上的配置演示了 ###########################

[root@master ~]# ln -s /usr/local/mysql/bin/mysql /usr/sbin
[root@master ~]# ln -s /usr/local/mysql/bin/mysqlbinlog /usr/sbin

3.4、重启3台MySQL服务,再查看端口,是否启动成功

[root@master ~]# systemctl restart mysqld.service     ## 只演示master节点了

[root@master ~]# netstat -natp | grep 3306
tcp6       0      0 :::3306                 :::*                    LISTEN      10503/mysqld 

3.5、配置主从复制

在所有数据库节点上授权两个用户,一个是从数据库同步使用用户myslave,另一个是manager 使用用户mha

grant replication slave on *.* to 'myslave'@'192.168.159.%' identified by '123456'; 
grant all privileges on *.* to 'mha'@'192.168.159.%' identified by 'manager';

下面三条授权理论上不用添加,但是实验环境通过MHA检查MySQL主从报错,报两个从库通过主机名连接不上主库,所以所有数据库都需要添加以下授权,通过mha检查的时候,是通过主机名的形式进行监控,这种情况会容易报错。

grant all privileges on *.* to 'mha'@'master' identified by 'manager';
grant all privileges on *.* to 'mha'@'slave1' identified by 'manager';
grant all privileges on *.* to 'mha'@'slave2' identified by 'manager';

把从库均设为只读功能:set global read_only=1;

master

[root@master ~]# mysql -uroot -pabc123


mysql> grant replication slave on *.* to 'myslave'@'192.168.159.%' identified by '123456';
Query OK, 0 rows affected, 1 warning (0.01 sec)

mysql> grant all privileges on *.* to 'mha'@'192.168.159.%' identified by 'manager';
Query OK, 0 rows affected, 1 warning (0.00 sec)


mysql> grant all privileges on *.* to 'mha'@'master' identified by 'manager';
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> grant all privileges on *.* to 'mha'@'slave1' identified by 'manager';
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> grant all privileges on *.* to 'mha'@'slave2' identified by 'manager';
Query OK, 0 rows affected, 1 warning (0.00 sec)

slave1


                
  • 2
    点赞
  • 78
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要在Ubuntu上安装MHAMySQL Master High Availability),你需要按照以下步骤进行操作: 1. 首先,你需要在MHA manager节点和MHA node节点上安装MySQL。在MHA manager节点上执行以下步骤: - 下载并安装mysql-apt-config软件包。 - 执行apt update更新软件包列表。 - 执行apt install安装mysql-server mysql-client libmysqlclient-dev libmysqlclient20 libmysqld-dev软件包。 2. 安装MHA软件包。你可以通过以下命令在MHA node节点上安装MHA: - 执行cd命令切换到家目录。 - 使用rz命令将MHA的.deb安装包上传到MHA node节点。 - 执行dpkg -i命令安装MHA安装包。 3. 配置MHA。在MHA manager节点上,你需要编辑MHA配置文件来指定数据库服务器的详细信息。根据你的需求,你可以使用文本编辑器打开/etc/app1.cnf文件,并根据你的实际情况进行相应的配置。 4. 启动MHA。在MHA manager节点上,执行mha-manager命令来启动MHA: - 执行mha-manager start命令启动MHA服务。 请确保你按照上述步骤的顺序进行操作,并根据你的实际情况进行相应的配置。这样,你就可以在Ubuntu上成功安装MHA了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [mha4mysql组件manager和node节点deb包](https://download.csdn.net/download/dajdajdajdaj/10603401)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [mysql 高可用架构 mha 之六 setup on ubuntu 16.04](https://blog.csdn.net/ctypyb2002/article/details/88352585)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值