区块链技术博客
www.b2bchain.cn

Mysql 实现高可用架构之MHA

这篇文章主要介绍了Mysql 实现高可用架构之MHA的讲解,通过具体代码实例进行19465 讲解,并且分析了Mysql 实现高可用架构之MHA的详细步骤与相关技巧,需要的朋友可以参考下https://www.b2bchain.cn/?p=19465

本文实例讲述了2、树莓派设置连接WiFi,开启VNC等等的讲解。分享给大家供大家参考文章查询地址https://www.b2bchain.cn/7039.html。具体如下:

  • MHA简介
    • 开始部署
      • 准备 ssh 互通环境
      • 部署master节点
      • 部署slave节点
      • 部署一主多从
      • 安装配置MHA
      • 启动MHA 查看master节点

MHA简介

MHA(Master HA)是一款开源的 MySQL 的高可用程序,它为 MySQL 主从复制架构提供了 automating master failover 功能。MHA 在监控到 master 节点故障时,会提升其中拥有最新数据的 slave 节点成为新的master 节点,在此期间,MHA 会通过于其它从节点获取额外信息来避免一致性方面的问题。MHA 还提供了 master 节点的在线切换功能,即按需切换 master/slave 节点。

MHA 是由日本人 yoshinorim(原就职于DeNA现就职于FaceBook)开发的比较成熟的 MySQL 高可用方案。MHA 能够在30秒内实现故障切换,并能在故障切换中,最大可能的保证数据一致性。

开始部署

准备4台Centos7虚拟机

Mysql 实现高可用架构之MHA
关掉防火墙 setenforce

[[email protected] ~]# systemctl stop firewalld [[email protected] ~]# setenforce 0 

准备 ssh 互通环境

四台机器都做

[[email protected] ~]# ssh-******  [[email protected] ~]# ssh-copy-id  [email protected] [[email protected] ~]# ssh-copy-id  [email protected] [[email protected] ~]# ssh-copy-id  [email protected] [[email protected] ~]# ssh-copy-id  [email protected] 

部署master节点

[[email protected] ~]# yum -y install mariadb mariadb-server [[email protected] ~]# vim /etc/my.cnf [mysqld] server-id = 1           #集群中的各节点的id均必须唯一 log-bin = master-log    #开启二进制日志 relay-log = relay-log   #开启中继日志 [[email protected] ~]# systemctl restart mariadb 

部署slave节点

slave1 [[email protected] ~]# yum -y install mariadb mariadb-server [[email protected] ~]# vim /etc/my.cnf [mysqld] server-id = 2              #集群中的各节点的id均必须唯一; relay-log = relay-log       #开启中继日志 log-bin = master-log        #开启二进制日志 read_only = ON              #启用只读属性 relay_log_purge = 0         #是否自动清空不再需要中继日志 log_slave_updates = 1       #使得更新的数据写进二进制日志中   slave2 [[email protected] ~]# yum -y install mariadb mariadb-server [[email protected] ~]# vim /etc/my.cnf [mysqld] server-id = 3              #集群中的各节点的id均必须唯一; relay-log = relay-log       #开启中继日志 log-bin = master-log        #开启二进制日志 read_only = ON              #启用只读属性 relay_log_purge = 0         #是否自动清空不再需要中继日志 log_slave_updates = 1       #使得更新的数据写进二进制日志中  [[email protected] ~]# systemctl restart mariadb 

部署一主多从

在主上授权用户并 查看master

MariaDB [(none)]> grant all on *.* to 'tom'@'%' identified by '123'; Query OK, 0 rows affected (0.00 sec)  MariaDB [(none)]> show master status; +-------------------+----------+--------------+------------------+ | File              | Position | Binlog_Do_DB | Binlog_Ignore_DB | +-------------------+----------+--------------+------------------+ | master-log.000003 |      369 |              |                  | +-------------------+----------+--------------+------------------+ 

从节点

MariaDB [(none)]> change master to     -> master_host='192.168.27.137',     -> master_user='tom',     -> master_password='123',     -> master_log_file='master-log.000003',     -> master_log_pos=369; MariaDB [(none)]> start slave; MariaDB [(none)]> show slave statusG; *************************** 1. row ***************************                Slave_IO_State: Waiting for master to send event                   Master_Host: 192.168.27.137                   Master_User: tom                   Master_Port: 3306                 Connect_Retry: 60               Master_Log_File: master-log.000003           Read_Master_Log_Pos: 369                Relay_Log_File: relay-log.000002                 Relay_Log_Pos: 530         Relay_Master_Log_File: master-log.000003              Slave_IO_Running: Yes             Slave_SQL_Running: Yes 

安装配置MHA

在master上进行授权
在所有 Mysql 节点授权拥有管理权限的用户可在本地网络中有其他节点上远程访问。

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

四个节点都需安装:mha4mysql-node

[[email protected] ~]# yum -y install mha4mysql-node-0.56-0.el6.noarch.rpm 

Manager 节点另需要安装:mha4mysql-manager

[[email protected] ~]# yum -y install perl-DBD-MySQL epel-release [[email protected] ~]# yum -y install mha4mysql-manager-0.56-0.el6.noarch.rpm mha4mysql-node-0.56-0.el6.noarch.rpm  

定义MHA管理配置文件

[[email protected] ~]# mkdir /etc/mha_master [[email protected] ~]# vim /etc/mha_master/mha.cnf [server default]                        //适用于server1,2,3个server的配置 user=mhaadmin                           //mha管理用户 password=123                            //mha管理密码 manager_workdir=/etc/mha_master/app1            //mha_master自己的工作路径 manager_log=/etc/mha_master/manager.log         // mha_master自己的日志文件 remote_workdir=/mydata/mha_master/app1          //每个远程主机的工作目录在何处 ssh_user=root                           // 基于ssh的**认证 repl_user=tom                   //数据库用户名 repl_password=123               //数据库密码 ping_interval=1                         //ping间隔时长 [server1]                                       //节点2 hostname=192.168.27.137         //master主机地址 ssh_port=22                             //节点ssh端口  candidate_master=1                      //将来可不可以成为master候选节点/主节点 [server2] hostname=192.168.27.138         //slave主机地址 ssh_port=22 candidate_master=1 [server3] hostname=192.168.27.139         //slave主机地址 ssh_port=22 candidate_master=1 

对四个节点进行检测
检测各节点间 ssh 互信通信配置是否 ok 我们在 Manager 机器上输入下述命令来检测:

Mysql 实现高可用架构之MHA
检查管理的MySQL复制集群的连接配置参数是否OK

[[email protected] ~]#  masterha_check_repl -conf=/etc/mha_master/mha.cnf 

Mysql 实现高可用架构之MHA
我们发现检测失败,这可能是因为从节点上没有账号,因为这个架构,任何一个从节点, 将有可能成为主节点, 所以也需要创建账号。
因此,我们需要在master节点上再次执行以下操作:

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

再次查看
Mysql 实现高可用架构之MHA

启动MHA 查看master节点

[[email protected] ~]# nohup masterha_manager -conf=/etc/mha_master/mha.cnf &> /etc/mha_master/manager.log & [1] 24349 [[email protected] ~]# masterha_check_status -conf=/etc/mha_master/mha.cnf mha (pid:24349) is running(0:PING_OK), master:192.168.27.137 

本文转自互联网,侵权联系删除Mysql 实现高可用架构之MHA

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » Mysql 实现高可用架构之MHA
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们