• MySQL高可用


    MHA高可用工作过程

    MHA对主从节点进行监控,发现主节点故障,会提升一个同步度较高的从节点为新的主;并且应用同步度高的从节点的中继日志到其他从节点上;如果主节点的故障并非是硬件造成,可以进行ssh连接,那么MHA服务器(安装MHA-manager包的主机)会进行故障转移,会从宕机的主机节点中保存二进制日志事件,把二进制日志应用到新提升的主服务器上,使其他的从节点连接新的主
    MHA节点具有故障转移帮助程序脚本,例如解析MySQL二进制/中继日志,标识中继日志位置(应将中继日志从该位置应用到其他从属服务器,将事件应用于目标从属服务器等)。MHA Node在每个MySQL服务器上运行。当MHA Manager进行故障转移时,MHA Manager会通过SSH连接MHA Node并在需要时执行MHA Node命令。
    

    MHA工作原理

    1、从宕机崩溃的master保存二进制日志事件(binlog events)
    2、识别含有最新更新的slave
    3、应用差异的中继日志(relay log)到其他的slave
    4、应用从master保存的二进制日志事件(binlog events)
    5、提升一个slave为新的master
    6、使其他的slave连接新的master进行复制
    

    MHA原理图

    MHA的manager和node包下载地址

    https://github.com/yoshinorim/mha4mysql-manager/wiki/Downloads

    MHA的实现及配置

    最少准备4台机器

    主节点配置

    [root@localhost ~]# yum install mha4mysql-node-0.56-0.el6.noarch.rpm -y  #主从节点需要安装mha的node包
    [root@localhost ~]# vim /etc/my.cnf  
    [mysqld]
    server-id=17
    log-bin
    skip-name-resolve      #防止mha连接时,把IP反向解析成名字
    [root@localhost ~]# systemctl restart mariadb
    [root@localhost ~]# mysql
    MariaDB [(none)]> grant replication slave on *.* to repluser@'192.168.38.%' identified by 'centos';   #创建复制用的账号
    MariaDB [(none)]> grant all on *.* to mhauser@'192.168.38.%' identified by 'centos';   #创建mha用于管理的账号,提升从为主;主节点创建的账号会同步到从节点
    

    slave1配置

    [root@slave1 ~]# yum install mha4mysql-node-0.56-0.el6.noarch.rpm -y
    [root@slave1 ~]# vim /etc/my.cnf
    [mysqld]
    server-id=27
    log-bin      #从节点会提升为主节点,二进制日志必须开启
    read-only     #当从节点提升为主节点,mha会把read-only属性在mysql中关闭
    relay-log-purge=0    #不清空中继日志,mha会把统计日志同步到其他slave上
    skip-name-resolve
    [root@slave1 ~]# systemctl restart mariadb
    [root@slave1 ~]# mysql
    MariaDB [(none)]> CHANGE MASTER TO    #指定主节点信息
       -> MASTER_HOST='192.168.38.37',
       -> MASTER_USER='repluser',        
       -> MASTER_PASSWORD='centos',
       -> MASTER_PORT=3306,
       -> MASTER_LOG_FILE='mariadb-bin.000001',
       -> MASTER_LOG_POS=245;
    MariaDB [(none)]> start slave;
    

    slave2配置

    [root@slave2 ~]# yum install mha*.rpm -y 
    [root@slave2 ~]# vim /etc/my.cnf
    [mysqld]
    server-id=37
    log-bin
    read-only
    relay-log-purge=0
    skip-name-resolve
    [root@slave2 ~]# systemctl restart mariadb
    [root@slave2 ~]# mysql
    MariaDB [(none)]> CHANGE MASTER TO
       -> MASTER_HOST='192.168.38.37',
       -> MASTER_USER='repluser',
       -> MASTER_PASSWORD='centos',
       -> MASTER_PORT=3306,
       -> MASTER_LOG_FILE='mariadb-bin.000001',
       -> MASTER_LOG_POS=245;
    MariaDB [(none)]> start slave;
    

    MHA-manager管理机配置

    需要准备的包:

    mha4mysql-manager-0.56-0.el6.noarch.rpm   
    mha4mysql-node-0.56-0.el6.noarch.rpm
    安装mha4mysql-manager包时,需要开启epel源,manager有的依赖包需要从epel源上下载
    

    配置:

    [root@mha-manager ~]# ssh-keygen    #生成公钥私钥对,mha是基于ssh协议,连接节点进行相关操作的,所以需要基于Key验证
    [root@mha-manager ~]# cd .ssh/
    [root@mha-manager .ssh]# ssh-copy-id 127.0.0.1   #把公钥发送到本机的.ssh/authorized_keys文件中
    [root@mha-manager ~]# scp -rp .ssh 192.168.38.37:/root/  #把本机的.ssh目录保留属性发送到远程主机的root目录下
    [root@mha-manager ~] #scp -rp .ssh 192.168.38.47:/root/
    [root@mha-manager ~] #scp -rp .ssh 192.168.38.57:/root/  #mha-manager可以基于key验证连接三个节点,并且4台机器之间可以相互连接
    [root@mha-manager ~]# yum install mha*.rpm -y   #安装mha-manager和node包 
    [root@mha-manager ~]# vim /etc/mha.conf    #编辑mha配置文件
    [server default]
    user=mhauser       #指定mysql创建的管理账号,用于提生主节点
    password=centos
    manager_workdir=/data/mastermha/app1/    #存放manager生成的文件
    manager_log=/data/mastermha/app1/manager.log   #指定日志目录,这些目录会自动生成
    remote_workdir=/data/mastermha/app1/   #远程节点生成的数据存放目录
    ssh_user=root      #ssh连接主节点的用户
    repl_user=repluser   #指定mysql复制用户
    repl_password=centos
    ping_interval=1    #1秒钟发送一次监控报文
    
    [server1]
    hostname=192.168.38.37     #mha会自动识别主从
    [server2]
    hostname=192.168.38.47
    candidate_master=1       #优先提升为主节点;如果不指定,系统会自动根据同步进度,自行提升主节点
    [server3]
    hostname=192.168.38.57
    
    #一个高可用集群用一个配置文件
    [root@mha-manager ~]# masterha_check_ssh --conf=/etc/mha.conf   #检查mha的ssh连接,读取配置文件
    [root@mha-manager ~]# masterha_check_repl --conf=/etc/mha.conf   #检测配置文件中列出的服务器列表,识别主从及检测复制等信息
    [root@mha-manager ~]# masterha_manager --conf=/etc/mha.conf      #执行mha,mha默认是前端执行,不能关闭终端窗口,工作中需要放到后端;并且mha检查到一次故障,提升完主节点之后,就会退出mha进程
    

    注意:

    MHA把从节点提升为主节点,用管理账号连接从节点,删除里面的主从复制信息,关闭slave线程,关闭read_only等属性;
    
    MariaDB [(none)]> select @@read_only;     #从节点提升为主节点
    +-------------+
    | @@read_only |
    +-------------+
    |           0 |
    +-------------+
    MariaDB [(none)]> show slave statusG
    Empty set (0.00 sec)
  • 相关阅读:
    根据用户行为发送客服消息
    tp5链接访问
    统计每天分享次数总和
    csv中文乱码
    Jupyter Notebook命令
    Laplace(拉普拉斯)算子
    Sobel算子
    Opencv图像连通域
    Opencv常用函数讲解
    12306 Pytho抢票代码
  • 原文地址:https://www.cnblogs.com/dongzhanyi123/p/11944336.html
Copyright © 2020-2023  润新知