广告
返回顶部
首页 > 资讯 > 数据库 >MHA群集管理
  • 272
分享到

MHA群集管理

2024-04-02 19:04:59 272人浏览 安东尼
摘要

环境: 192.168.205.37: as MHA server 192.168.205.47: as Master server 192.168.205.57: as Slave1 server192

MHA群集管理

环境:

192.168.205.37: as MHA server
192.168.205.47: as Master server
192.168.205.57: as Slave1 server
192.168.205.67: as Slave2 server

版本:

OS: Centos 7 1810 with mini install
mariadb-server 5.5.60
mha4Mysql-manager-0.56-0.el6.noarch.rpm
mha4mysql-node-0.56-0.el6.noarch.rpm

目地:

MHA使用perl脚本写的程序,当主节点down时如果从节点复制没有完成时,当他成为主节点后,它需要尝试将主节点的二进制日志复制到新的主节点,从而保证数据的完整性,所以它需要sshkey验证。我们使用一台做为管理节点,其中三个为数据库节点,一主两从,模拟主节点down机,看从是如何被提升为主节点的。

安装数据库
  1. 安装mariadb使用如下脚本:
    [root@master data]#cat maridb_yum.sh 
    #!/bin/bash
    ID=`ip a show dev eth0 | sed -r '3!d;s@(.*inet)(.*)(/.*)@\2@' | cut -d. -f4`
    rpm -q mariadb-server ||yum install -y mariadb-server
    [ -d /data/mysql ] || mkdir -p /data/mysql
    [ -d /data/logs ] || mkdir -p /data/logs
    chown mysql:mysql /data/{mysql,logs}
    sed -i 's@datadir=/var/lib/mysql@datadir=/data/mysql@' /etc/my.cnf
    grep "log-bin" /etc/my.cnf || sed -i '/\[mysqld\]/a log-bin=/data/logs/bin' /etc/my.cnf
    grep "innodb_file_per_table" /etc/my.cnf || sed -i '/\[mysqld\]/a innodb_file_per_table = on' /etc/my.cnf
    grep "skip_name_resolve" /etc/my.cnf || sed -i '/\[mysqld\]/a skip_name_resolve = on' /etc/my.cnf
    grep "server-id" /etc/my.cnf || sed -i "/\[mysqld\]/a server-id=$ID" /etc/my.cnf
    service mariadb restart
  2. 修改两个从节点的配置文件
    [root@slave1 data]#vi /etc/my.cnf
    [mysqld]
    read_only   
    relay_log_purge=0     #不删除中继日志
  3. 建立主节点的复制位置和帐号

    MariaDB [(none)]> show master logs;
    +------------+-----------+
    | Log_name   | File_size |
    +------------+-----------+
    | bin.000001 |     30373 |
    | bin.000002 |   1038814 |
    | bin.000003 |       245 |
    +------------+-----------+
    3 rows in set (0.00 sec)
    
    MariaDB [(none)]> grant replication slave on *.* to repluser@'192.168.205.%' identified by 'centos';
    Query OK, 0 rows affected (0.00 sec)
    MariaDB [(none)]> grant all on *.* to mhauser@'192.168.205.%' identified by 'centos'; 
    Query OK, 0 rows affected (0.00 sec)
  4. 配置从节点的change master to并启动线程

    MariaDB [(none)]> CHANGE MASTER TO
        ->   MASTER_HOST='192.168.205.47',
        ->   MASTER_USER='repluser',
        ->   MASTER_PASSWord='centos',
        ->   MASTER_PORT=3306,
        ->   MASTER_LOG_FILE='bin.000003',
        ->   MASTER_LOG_POS=245;
    Query OK, 0 rows affected (0.01 sec)
    
    MariaDB [(none)]> start slave;
    Query OK, 0 rows affected (0.00 sec)
    MariaDB [(none)]> show slave status\G
    *************************** 1. row ***************************
                   Slave_IO_State: Waiting for master to send event
                      Master_Host: 192.168.205.47
                      Master_User: repluser
                      Master_Port: 3306
                    Connect_Retry: 60
                  Master_Log_File: bin.000003
              Read_Master_Log_Pos: 401
                   Relay_Log_File: mariadb-relay-bin.000002
                    Relay_Log_Pos: 679
            Relay_Master_Log_File: bin.000003
                 Slave_IO_Running: Yes
                Slave_SQL_Running: Yes
    MHA实现
  5. 安装包,mha依赖epel源,我们要把epel起用
    [root@MHA ~]#yum install mha4mysql-manager-0.56-0.el6.noarch.rpm mha4mysql-node-0.56-0.el6.noarch.rpm 
  6. 在所有的sql节点上安装node包
    [root@master ~]#yum install mha4mysql-node-0.56-0.el6.noarch.rpm 
    [root@slave1 data]#yum install mha4mysql-node-0.56-0.el6.noarch.rpm 
    [root@slave2 data]#yum install mha4mysql-node-0.56-0.el6.noarch.rpm 
  7. 配置ssh key 验证
    [root@MHA ~]#ssh-keygen 
    [root@MHA ~]#ssh-copy-id 192.168.205.37
    [root@MHA ~]#cat .ssh/authorized_keys 
    [root@MHA ~]#scp -r .ssh 192.168.205.47:/root/
    [root@MHA ~]#scp -r .ssh 192.168.205.57:/root/
    [root@MHA ~]#scp -r .ssh 192.168.205.67:/root/
  8. 生成配置MHA文件
    [root@MHA ~]#mkdir /etc/mha
    [root@MHA ~]#vim /etc/mha/app1.cnf
    [server default]
    master_binlog_dir=/data/logs/ 
    user=mhauser
    password=centos
    manager_workdir=/data/mastermha/app1/
    manager_log=/data/mastermha/app1/manager.log
    remote_workdir=/data/mastermha/app1/
    ssh_user=root
    repl_user=repluser
    repl_password=centos
    ping_interval=1
    [server1]
    hostname=192.168.205.47
    candidate_master=1
    [server2]                                                                                                                          
    hostname=192.168.205.57
    [server3]
    hostname=192.168.205.67
    candidate_master=1
  9. 启动之前进行检查ssh,repl复制是否准备好
    [root@MHA ~]#masterha_check_ssh --conf=/etc/mha/app1.cnf
    [root@MHA ~]#masterha_check_repl --conf=/etc/mha/app1.cnf
  10. 起动进程,此进程前台运行,当主节点失败时切换完成后它会终止,所以要想持续要重启进程
    [root@MHA ~]#masterha_manager --conf=/etc/mha/app1.cnf
    Mon Aug 12 23:33:22 2019 - [warning] Global configuration file /etc/masterha_default.cnf not found. Skipping.
    Mon Aug 12 23:33:22 2019 - [info] Reading application default configuration from /etc/mha/app1.cnf..
    Mon Aug 12 23:33:22 2019 - [info] Reading server configuration from /etc/mha/app1.cnf..
    测试
  11. 我们模拟一个正在写入操作时,主节点down, 看服务器能不能正常切换并不能复制丢失的数据

    MariaDB [(none)]> use test;
    Database changed
    MariaDB [test]> create table testlog (id int auto_increment primary key,name char(10),age int default 20);
    
    Query OK, 0 rows affected (0.01 sec)
    
    MariaDB [test]> 
    MariaDB [test]> delimiter $$
    MariaDB [test]> 
    MariaDB [test]> create procedure  sp_testlog() 
        -> begin  
        -> declare i int;
        -> set i = 1; 
        -> while i <= 100000 
        -> do  insert into testlog(name,age) values (concat('wang',i),i); 
        -> set i = i +1; 
        -> end while; 
        -> end$$
    Query OK, 0 rows affected (0.00 sec)
    
    MariaDB [test]> 
    MariaDB [test]> delimiter ;
    MariaDB [test]> call sp_testlog;
  12. 正在写入数据时我们及时关闭47服务器,MHA检测到节点,并响应,成功提升其它的为主后退出程序。
    [root@MHA ~]#masterha_manager --conf=/etc/mha/app1.cnf
    Mon Aug 12 23:33:22 2019 - [warning] Global configuration file /etc/masterha_default.cnf not found. Skipping.
    Mon Aug 12 23:33:22 2019 - [info] Reading application default configuration from /etc/mha/app1.cnf..
    Mon Aug 12 23:33:22 2019 - [info] Reading server configuration from /etc/mha/app1.cnf..
    Mon Aug 12 23:45:16 2019 - [warning] Global configuration file /etc/masterha_default.cnf not found. Skipping.
    Mon Aug 12 23:45:16 2019 - [info] Reading application default configuration from /etc/mha/app1.cnf..
    Mon Aug 12 23:45:16 2019 - [info] Reading server configuration from /etc/mha/app1.cnf..
    [root@MHA ~]#
  13. 我们可以查看日志看一下发生的情况,slave2提升为主

    [root@MHA data]#cat mastermha/app1/manager.log 
    ----- Failover Report -----
    
    app1: MySQL Master failover 192.168.205.47(192.168.205.47:3306) to 192.168.205.67(192.168.205.67:3306) succeeded
    
    Master 192.168.205.47(192.168.205.47:3306) is down!
    
    Check MHA Manager logs at MHA:/data/mastermha/app1/manager.log for details.
    
    Started automated(non-interactive) failover.
    The latest slave 192.168.205.57(192.168.205.57:3306) has all relay logs for recovery.
    Selected 192.168.205.67(192.168.205.67:3306) as a new master.
    192.168.205.67(192.168.205.67:3306): OK: Applying all logs succeeded.
    192.168.205.57(192.168.205.57:3306): This host has the latest relay log events.
    Generating relay diff files from the latest slave succeeded.
    192.168.205.57(192.168.205.57:3306): OK: Applying all logs succeeded. Slave started, replicating from 192.168.205.67(192.168.205.67:3306)
    192.168.205.67(192.168.205.67:3306): Resetting slave info succeeded.
    Master failover to 192.168.205.67(192.168.205.67:3306) completed successfully.
  14. 我们来核实一下,在slave2上看一下slave的状态,发现已经没了,因为它是主
    MariaDB [(none)]> show slave status\G
    Empty set (0.00 sec)
  15. 检查一下slave1,发现主节点指向了slave2
    MariaDB [test]> show slave status\G
    *************************** 1. row ***************************
                   Slave_IO_State: Waiting for master to send event
                      Master_Host: 192.168.205.67
                      Master_User: repluser
                      Master_Port: 3306
                    Connect_Retry: 60
                  Master_Log_File: bin.000005
              Read_Master_Log_Pos: 245
                   Relay_Log_File: mariadb-relay-bin.000002
                    Relay_Log_Pos: 523
            Relay_Master_Log_File: bin.000005
                 Slave_IO_Running: Yes
                Slave_SQL_Running: Yes
  16. 在新主节点上看一下是否将read_only off掉,发现是,但不要忘记改回配置文件,如果重启的话又会变成read_only
    MariaDB [(none)]> show variables like 'read_only';
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | read_only     | OFF   |
    +---------------+-------+
    1 row in set (0.00 sec)
您可能感兴趣的文档:

--结束END--

本文标题: MHA群集管理

本文链接: https://www.lsjlt.com/news/41941.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MHA群集管理
    环境: 192.168.205.37: as MHA server 192.168.205.47: as Master server 192.168.205.57: as Slave1 server192...
    99+
    2022-10-18
  • MHA集群搭建
    开篇 本文主要介绍如何搭建MHA集群,希望给你带来帮助 基本环境介绍 Linux:CentOS 7.4 MySQL:5.7.21+传统复制(开启GTID不搭建binlog server) VIP:192.1...
    99+
    2022-10-18
  • MySQL高可用篇之MHA集群
       1 准备工作 1.1 修改主机名 vim /etc/hosts # 添加对应主机 192.168.28.128 mha1 192.168.28.131 mha2 192.168.28.132 mha3 1.2 关闭...
    99+
    2016-10-07
    MySQL高可用篇之MHA集群
  • 配置MySQL高可用集群MHA
    配置MySQL高可用集群+++++++++++++++++++主机角色 :客户端 client50数据库服务器 mysql51 到 mysql55管理主机 mgm56VIP地址 ...
    99+
    2022-10-18
  • MySQL MHA高可用群集的原理与配置
    这篇文章主要为大家详细介绍MySQL MHA高可用群集的原理与配置,文中还介绍了MHA高可用群集的启动方法和查看MHA状态的方法,希望大家通过这篇文章能有所收获。MHA高可用架构部署配置实例一、前言1.1W...
    99+
    2022-10-18
  • mysql进阶(三)MHA高可用集群
    简介: 1、MHA目前在MySQL高可用方面是一个相对成熟的解决方案,是MySQL高可用环境下故障切换和主从提升的高可用软件 2、MHA能在短时间内完成故障切换,并且在最大程度上保证数据的一致性,以达到真正...
    99+
    2022-10-18
  • MySQL MHA集群方案是怎样的
    本篇文章为大家展示了MySQL MHA集群方案是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。MySQL MHA集群方案调研 1  MHA集群的基本...
    99+
    2022-10-18
  • Rancher管理k8s集群
    Rancher和k8s都是用来作为容器的调度与编排系统。但是rancher不仅能够管理应用容器,更重要的一点是能够管理k8s集群。Rancher2.x底层基于k8s调度引擎,通过Rancher的封装,用户可以在不熟悉k8s概念的情况下轻松的...
    99+
    2023-01-31
    集群 Rancher k8s
  • MySQL数据库之MHA高可用群集
    MHA概述 日本DeNA公司youshimaton (现就职于Facebook公司) 开发一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件 MHA的组成 MHA Manager (...
    99+
    2022-10-18
  • MHA实现MySQL高可用集群架构
    转转连接 https://www.cnblogs.com/tanxiaojun/p/10424699.html MHA简介 MHA(Master HighAvailability)目前在MySQL高可...
    99+
    2022-10-18
  • MySQL中MHA高可用集群是怎样的
    本篇文章为大家展示了MySQL中MHA高可用集群是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、什么是MHA传统的主从复制如果主库宕机,其余从库不会自动的...
    99+
    2022-10-18
  • 基于MHA搭建MySQL Replication集群高可用架
    MHA架构介绍 MHA是Master High Availability的缩写,它是目前MySQL高可用方面的一个相对成熟的解决方案,其核心是使用perl语言编写的一组脚本,是一套优秀的作为MySQL高可用...
    99+
    2022-10-18
  • SaltStck 搭建Web集群-Job 管理
    在SaltStack默认的工作模式中,minion端会将数据直接返回给mysql数据库,这个过程中不需要master参与。由于提供更加灵活的管理,也可以在master端保存minion端的执行结果(job ...
    99+
    2022-10-18
  • RHCS集群如何管理和维护
    这篇文章主要介绍了RHCS集群如何管理和维护的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇RHCS集群如何管理和维护文章都会有所收获,下面我们一起来看看吧。RHCS是Redhat Hat Cluster Sui...
    99+
    2023-06-27
  • Zookeeper集群管理与选举怎么理解
    本篇内容主要讲解“Zookeeper集群管理与选举怎么理解”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Zookeeper集群管理与选举怎么理解”吧!  1.集群机器监控  这通常用于那种对集群...
    99+
    2023-06-02
  • keepalived+MHA应该如何实现mysql主从高可用集群
    下文给大家带来关于keepalived+MHA应该如何实现mysql主从高可用集群,感兴趣的话就一起来看看这篇文章吧,相信看完keepalived+MHA应该如何实现mysql主从高可用集群对大家多少有点帮...
    99+
    2022-10-18
  • docker集群管理的方法是什么
    Docker集群管理的方法有多种,以下是其中一些常用的方法:1. Docker Swarm:Docker Swarm是Docker官...
    99+
    2023-09-20
    docker
  • ORACLE RAC集群配置管理工具-SRVCTL
    SRVCTL概述 SRVCTL是ORACLE RAC集群配置管理的工具,可以管理Database、Instance、ASM、Service、Listener和Node Application,N...
    99+
    2022-10-18
  • 什么是redis集群配置与管理
    本篇文章给大家分享的是有关什么是redis集群配置与管理,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Redis在3.0版本以后开始支持集群,...
    99+
    2022-10-18
  • 怎么安装和管理redis-cluster集群
    redis-cluster的安装管理环境介绍系统环境:Red Hat Enterprise Linux Server release 6.2 (Santiago)内核版本:Linux zxt-02.com ...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作