基于MySQL数据库,谈MySQL高可用运维_MySQL_青云站长教程网
欢迎来到站长教程网!
  • 秒到短信接口 免费试用
  • 微信支付宝接口 秒结算
  • 中文网站排名|申请加入
  • 搜索引擎全站查询
  • 查询移动网站权重数据
  • 海外主机 台湾公司直销
  • MySQL

    当前位置:主页 > 数据库 > MySQL >

    基于MySQL数据库,谈MySQL高可用运维

    时间:2019-09-11|栏目:MySQL|点击:
  • 本篇文章将介绍MySQL的另外一种高可用实现方案,即:MHA(Master High Avaliable)。Master HA。是一个开源的高可用程序,为MySQL的主从架构提供了故障自动恢复的功能。

    一、基本知识介绍

    1、MHA定义

    Master HA。是一个开源的高可用程序,为MySQL的主从架构提供了故障自动恢复的功能。主从复制期间,当MHA监测到MySQL的Master节点故障时,会自动提升复制集群中的某个Slave节点成为新的Master节点。在切换期间,也会通过从其他节点中获取额外信息来避免数据一致性问题。除此之外,MHA还提供了master节点的在线故障切换功能,可以按照需要来切换Master/Slave节点。

    2、MHA结构

    MHA中的所有节点主要有两种角色,即:管理节点和数据节点。
    管理节点(MHA Manager):一般单独部署在一台机器上,用来管理多个master和slave集群,而每个master和slave组成的集群称之为一个application。
    数据节点(MHA Node):运行在每一台MySQL服务器上,通过监控具有解析和清理logs功能的脚本来加速节点的故障转移。

    3、HMA组件
    (1)Manager组件

    masterha_check_sh:MHA依赖的ssh环境监测工具 masterha_check_repl:MySQL复制环境监测工具 masterha_manager:MHA服务主程序 masterha_check_status:MHA运行状态探测工具 masterha_master_monitor:MySQL master节点可用性监测工具 masterha_master_switch:master节点切换工具 masterha_conf_host:添加或删除配置的节点 masterha_stop:关闭MHA服务的工具

    (2)Node组件

    save_binary_logs:保存和赋值master的二进制日志 apply_diff_relay_logs:识别差异的中继日志并应用于其他slave filter_mysqlbinlog:去除不必要的ROLLBACK事件(MHA已经不再使用这个工具) purge_relay_logs:清除中继日志(不会阻塞SQL线程)

    (3)自定义扩展

    secondary_check_script:通过多条网络路由监测master的可用性 master_ip_failover_script:更新application使用的masterip shutdown_script:强制关闭master节点 report_script:发送报告 init_conf_load_script:加载初始配置参数 master_ip_online_change_script:更新master节点ip地址二、MHA搭建

    1、环境准备
    操作系统:CentOS6.9_X86_64
    MySQL版本:MySQL5.6.39通用二进制
    服务器规划:
    主节点Master:192.168.199.104(mysql-master,master)

    从节点1:192.168.199.105(mysql-slave01,slave01)
    从节点2:192.168.199.106(mysql-slave02,slave02)
    管理节点:192.168.199.107(mysql-manager,manager)

    2、搭建
    (1)配置各个节点的host,在后面使用起来会比较方便,不用每次手写IP

    [root@mysql-master ~]# vim /etc/hosts #添加如下内容: 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.199.104 mysql-master master 192.168.199.105 mysql-slave01 slave01 192.168.199.106 mysql-slave02 slave02 192.168.199.107 mysql-manager manager

    (2)将配置好的host文件复制到其他三个节点上

    [root@mysql-master ~]# scp /etc/hosts slave01:/etc/ [root@mysql-master ~]# scp /etc/hosts slave02:/etc/ [root@mysql-master ~]# scp /etc/hosts manager:/etc/

    (3)配置主从同步,slave01和slave02为master的从库
    开启master的二进制日志

    [root@mysql-master ~]# vim /etc/my.cnf #在[mysqld]下面添加如下内容: server-id = 104 skip-name-resolve log_bin=http://www.php.cn/mysql_data/mysql-bin log_bin_index=http://www.php.cn/mysql_data/mysql-bin.index binlog_format = mixed

    在master上查看当前的二进制日志点位置,并创建复制账户

    [root@mysql-master ~]# mysql -uroot –proot #查看当前二进制日志点的位置 mysql> SHOW MASTER STATUS \G *************************** 1. row *************************** File: mysql-bin.000090 Position: 120 Binlog_Do_DB: Binlog_Ignore_DB: Executed_Gtid_Set: 1 row in set (0.00 sec) #创建从库的复制账户 mysql> GRANT REPLICATION SLAVE ,REPLICATION CLIENT ON *.* TO 'repl'@'192.168.199.%' IDENTIFIED BY 'repl'; #刷新权限 mysql> FLUSH PRIVILEGES;

    在slave01上开启二进制日志和中继日志,并配置为master的从库

    [root@mysql-slave01 ~]# vim /etc/my.cnf #在[mysqld]下添加如下内容: server-id = 105 log_bin = /mysql_data/mysql-bin log_bin_index = /mysql_data/mysql-bin.index relay_log = /mysql_data/mysql-relay relay_log_index = /mysql_data/mysql-relay.index read_only relay_log_purge = 0

    参数解释:

    relay_log_purge:该参数表示不自动清理中继日志,因为MHA需要根据slave的中继日志判断slave同步master的binlog到什么位置了 read_only:表示是只读,MHA需要根据这个参数来识别主从库 bin_log:开启从库的二进制日志,因为在主节点出现故障时,需要将其中某个从库提升为主库,所以需要开启从库的二进制日志

    启动slave01节点,并将需要同步的主节点信息指向master节点:

    [root@mysql-slave01 ~]# service mysqld restart [root@mysql-slave01 ~]# mysql -uroot –proot #使用change master命令将主库指向master节点 mysql> CHANGE MASTER TO MASTER_HOST = '192.168.199.104',MASTER_PORT=3306,MASTER_USER='repl',MASTER_PASSWORD='repl',MASTER_LOG_FILE='mysql-bin.000090',MASTER_LOG_POS=120; mysql> START SLAVE; #查看是否同步成功 mysql> SHOW SLAVE STATUS \G 看到如下信息表示同步成功: Slave_IO_Running: Yes Slave_SQL_Running: Yes

    上一篇:Mysql数据库导出和导入sql数据库文件命令

    栏    目:MySQL

    下一篇:在Mysql开发中经常会掉进的坑 - 无法启动Mysql

    本文标题:基于MySQL数据库,谈MySQL高可用运维

    本文地址:http://www.jh-floor.com/shujuku/MySQL/50131.html

    您可能感兴趣的文章

    广告投放 | 联系我们 | 版权申明

    重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

    如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

    联系QQ:888888 | 邮箱:888888#qq.com(#换成@)

    Copyright © 2002-2017 青云站长教程网 版权所有 琼ICP备xxxxxxxx号