MySQL-高可用MHA+Atlas读写分离

公司最近为新的MySQL架构进行调整,要求给出方案,我这边提出使用MHA+Atlas做高可用集群读写分离架构,就多方讨论最终确认方案,进行实施;

一、简单说下MHA的工作原理

1个管理节点可以管理多套mysql架构,可以不装在mysql主机上

通过管理节点,来对其它数据节点上的mysql做监控,会每隔几秒做心跳检测

二、MHA的简单架构图

三、部署MHA

1,环境准备(依赖包、软件包、创建存放目录等)所有节点进行

#安装依赖包
[[email protected] ~]#yum install perl-DBD-MySQL -y
#进入安装包存放目录
[[email protected] ~]#cd /home/oldboy/tools/
#上传mha安装包
[[email protected]]# rz -be
mha4mysql-manager-0.56-0.el6.noarch.rpm
mha4mysql-manager-0.56.tar.gz
mha4mysql-node-0.56-0.el6.noarch.rpm
mha4mysql-node-0.56.tar.gz
#安装node包
[[email protected] tools]# rpm -ivhmha4mysql-node-0.56-0.el6.noarch.rpm
Preparing...               ########################################### [100%]
  1:mha4mysql-node         ###########################################[100%]
#登录数据库
[[email protected]]# mysql -uroot -poldboy123
#添加mha管理账号
mysql> grant allprivileges on *.* to [email protected]‘10.0.0.%‘ identified by ‘mha‘;
#查看是否添加成功
mysql> selectuser,host from mysql.user;
#主库上创建,从库会自动复制(在从库上查看)

2,命令软连接 所有节点进行

[[email protected] ~]# ln -s /application/mysql/bin/mysqlbinlog/usr/bin/mysqlbinlog
[[email protected] ~]# ln -s /application/mysql/bin/mysql/usr/bin/mysql
#如果不创建命令软连接,检测mha复制情况的时候会报错

3,部署管理节点(mha-manager)

1)     在mysql-db03上部署管理节点

#使用epel源
[[email protected] ~]#
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
#安装manager依赖包
[[email protected] ~]# yum install -y perl-Config-Tinyepel-release perl-Log-Dispatch perl-Parallel-ForkManager perl-Time-HiRes
#安装manager包
[[email protected] tools]# rpm -ivhmha4mysql-manager-0.56-0.el6.noarch.rpm 
Preparing...              ###########################################[100%]
1:mha4mysql-manager      ########################################### [100%]

2)    编辑配置文件

#创建配置文件目录
[[email protected] ~]# mkdir -p /etc/mha
#创建日志目录
[[email protected] ~]# mkdir -p /var/log/mha/app1
#编辑mha配置文件
[[email protected] ~]# vim /etc/mha/app1.cnf
[server default]
candidate_master=1
check_repl_delay=0
manager_log=/var/log/mha/app1/manager
manager_workdir=/var/log/mha/app1
master_binlog_dir=/application/mysql/data
master_ip_failover_script=/usr/local/bin/master_ip_failover
password=mha
ping_interval=2
repl_password=oldboy123
repl_user=rep
ssh_user=root
user=mha

[server1]
hostname=10.0.0.51
port=3306

[server2]
hostname=10.0.0.52
port=3306

[server3]
hostname=10.0.0.53
port=3306

3)    建立ssh-key免秘钥登录 所有节点进行

#创建秘钥对
[[email protected] ~]# ssh-keygen -t dsa -P ‘‘ -f ~/.ssh/id_dsa>/dev/null 2>&1
#发送公钥,包括自己
[[email protected] ~]# ssh-copy-id -i /root/.ssh/id_dsa.pub [email protected]
[[email protected] ~]# ssh-copy-id -i /root/.ssh/id_dsa.pub [email protected]
[[email protected] ~]# ssh-copy-id -i /root/.ssh/id_dsa.pub [email protected]

4)    启动测试 db03

#测试ssh
[[email protected] ~]# masterha_check_ssh --conf=/etc/mha/app1.cnf
#看到如下字样,则测试成功
Tue Mar  7 01:03:33 2017 -[info] All SSH connection tests passed successfully.
#测试复制
[[email protected] ~]# masterha_check_repl --conf=/etc/mha/app1.cnf
#看到如下字样,则测试成功
MySQL Replication Health is OK.

5)    启动MHA db03

[[email protected] ~]# nohup masterha_manager--conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover </dev/null > /var/log/mha/app1/manager.log 2>&1 &

6)    切换master测试

登录数据库db02

[[email protected] ~]# mysql -uroot -poldboy123
#检查复制情况
mysql> show slave status\G
*************************** 1. row ***************************
              Slave_IO_State: Waiting for master to send event
                  Master_Host: 10.0.0.51
                 Master_User: rep
                 Master_Port: 3306
               Connect_Retry: 60
             Master_Log_File: mysql-bin.000006
         Read_Master_Log_Pos: 191
              Relay_Log_File: mysql-db02-relay-bin.000002
               Relay_Log_Pos: 361
       Relay_Master_Log_File: mysql-bin.000006
            Slave_IO_Running: Yes
           Slave_SQL_Running: Yes

#登录数据库(db03)

[[email protected] ~]# mysql -uroot -poldboy123
#检查复制情况
mysql> show slave status\G
*************************** 1. row ***************************
              Slave_IO_State: Waiting for master to send event
                  Master_Host: 10.0.0.51
                 Master_User: rep
                  Master_Port: 3306
               Connect_Retry: 60
             Master_Log_File: mysql-bin.000006
         Read_Master_Log_Pos: 191
               Relay_Log_File: mysql-db03-relay-bin.000002
               Relay_Log_Pos: 361
        Relay_Master_Log_File:mysql-bin.000006
            Slave_IO_Running: Yes
           Slave_SQL_Running: Yes

#停掉主库

[[email protected] ~]# /etc/init.d/mysqld stop
Shutting down MySQL..... SUCCESS!
#登录数据库(db02)
[[email protected] ~]# mysql -uroot -poldboy123
#查看slave状态
mysql> show slave status\G
#db02的slave已经为空
Empty set (0.00 sec)
#登录数据库(db03)
[[email protected] ~]# mysql -uroot -poldboy123
#查看slave状态
mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State:Waiting for master to send event
                  Master_Host: 10.0.0.52
                 Master_User: rep
                 Master_Port: 3306
               Connect_Retry: 60
             Master_Log_File: mysql-bin.000006
          Read_Master_Log_Pos:191
              Relay_Log_File: mysql-db03-relay-bin.000002
               Relay_Log_Pos: 361
       Relay_Master_Log_File: mysql-bin.000006
            Slave_IO_Running: Yes
           Slave_SQL_Running: Yes
时间: 2024-10-12 23:28:14

MySQL-高可用MHA+Atlas读写分离的相关文章

MySql 高可用架构Atlas

Atlas是由 Qihoo 360公司Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目.它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基础上,修改了大量bug,添加了很多功能特性.目前该项目在360公司内部得到了广泛应用,很多MySQL业务已经接入了Atlas平台,每天承载的读写请求数达几十亿条. Atlas主要功能: 1.读写分离 2.从库负载均衡 3.IP过滤 4.自动分表 5.DBA可平滑上下线DB 6.自动摘除宕机的DB Atlas介绍 Atla

mysql高可用MHA架构搭建

前言:首先介绍一下mha,引用自网络. MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案. 该软件由两部分组成:MHA Manager(管理节点)和MHA Node(数据节点).MHA Manager可以单独部署在一台独立的机器上管理多个master-slave集群,也可以部署在一台slave节点上.MHA Node运行在每台MySQL服务器上,MHA Manager会定时探测集群中的master节点,当master出现故障时,它可以自

Mysql高可用MHA

MHA(Master High Availability)目前在 MySQL 高可用方面是一个相对成熟的解决方案,它由 日本 DeNA 公司 youshimaton(现就职于 Facebook 公司)开发,是一套优秀的作为 MySQL 高可用性环境下故障切换和主从提升的高可用软件. 在 MySQL 故障切换过程中,MHA 能做 到在 0~30 秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA 能 在最大程度上保证数据的一致性,以达到真正意义上的高可用. MHA 里有两个角色

mysql+proxysql+keepalived实现高可用的数据库读写分离

前言 为了降低一台数据库的IO,远程连接数据库的时候,可以实现读写分离进行调度.这里就出现了一个单点,所以必须要做一个高可用.当然数据库服务器也需要做主从复制. 实验结构 说明:上图的拓扑只是整个架构中的一个小部分,其余功能的实现此图并未规划出来.此拓扑实现的目的是利用proxysql实现数据读写分离,并对proxysql高可用.两台安装了Keepalived和proxysql虚拟成一个VIP对外提供服务.这两台mysql服务器做的半同步复制,192.168.32.111是主节点负责用户的写操作

MySQL高可用MHA部署 (一主二从)

MHA介绍: MHA是一套MySQL故障切换和主从提升的高可用软件.在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性.MHA部署简单,也需要额外的服务器开销,运行MHA时对数据服务器性能几乎没有影响,也不需要对现有架构做调整. 同时MHA还支持主库在线切换,能够安全地将现在的主库切到新的主库,只会对写操作有0.5~2s的阻塞,对读没有影响. MHA有以下功能,对有高可用,数据一致性,主库不停机维

MySQL高可用MHA集群

MHA 简介 MHA(Master High Availability)它由日本DeNA公司youshimaton开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件.在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用.MHA软件由两部分组成:MHA Manager(管理节点)和MHA Node(数据节点).MHA Manager可以单独部署在一台

MySQL 高可用MHA安装部署以及故障转移详细资料汇总 转

http://blog.itpub.net/26230597/cid-87082-list-2/ 1,简介 1.1mha简介 MHA,即MasterHigh Availability Manager and Tools for MySQL,是日本的一位MySQL专家采用Perl语言编写的一个脚本管理工具,该工具仅适用于MySQLReplication(二层)环境,目的在于维持Master主库的高可用性. MHA(Master High Availability)是自动的master故障转移和Sl

MySQL 高可用MHA安装部署以及故障转移详细资料汇总

1,简介 1.1mha简介 MHA,即MasterHigh Availability Manager and Tools for MySQL,是日本的一位MySQL专家采用Perl语言编写的一个脚本管理工具,该工具仅适用于MySQLReplication(二层)环境,目的在于维持Master主库的高可用性. MHA(Master High Availability)是自动的master故障转移和Slave提升的软件包.它是基于标准的MySQL复制(异步/半同步). MHA有两部分组成:MHA M

mysql高可用MHA部署全过程

部署计划 mysql_master 192.168.2.74 centos6.9 mysql5.5/mha-node mysql_salve1 192.168.2.75 centos6.9 mysql5.5/mha-node mysql_salve2 192.168.2.76 centos6.9 mysql5.5/mha-node/mha-man 本次部署采用3台服务器,mha-manager不单独使用一台服务器安装,生产上可以单独出来,本次使用采用centos6.9系统(使用 http://y