前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何实现CDH元数据库MySQL的高可用

如何实现CDH元数据库MySQL的高可用

作者头像
Fayson
修改2018-04-01 20:55:39
3.6K1
修改2018-04-01 20:55:39
举报
文章被收录于专栏:Hadoop实操Hadoop实操

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。 Fayson的github:https://github.com/fayson/cdhproject 提示:代码块部分可以左右滑动查看噢

1.文档编写目的


在前面Fayson讲过《如何实现CDH元数据库MySQL的主主互备》,那如何做到MySQL的高可用呢?本篇文章主要介绍如何使用Keepalived实现MySQL的高可用。本文架构图如下:

  • 内容概括

1.Keepalived安装

2.Keepalived配置

3.MySQL高可用验证

  • 测试环境

1.两台Linux服务器(192.168.0.230/192.168.0.231),操作系统为CentOS7.2

2.MariaDB 5.5.44

3.采用root用户操作

  • 前置条件

1.两个MariaDB版本必须一致

2.两个MariaDB已安装

2.测试环境说明


IP地址

状态

别名

192.168.0.230

实现主从同步

MySQLA

192.168.0.231

实现主从同步

MySQLB

3.安装Keepalived


分别在MySQLA和MySQLB服务上执行如下命令安装Keepalived服务。

1.安装Keepalived服务

代码语言:txt
复制
yum -y install keepalived

2.将Keepalived服务加入开机自启动列表

代码语言:txt
复制
systemctl enable keepalived

4.MySQL服务状态监测脚本


MySQL服务状态监测脚本,主要监控MariaDB服务状态是否正常,如果不正常则将该MySQL所在服务的Keepalived服务杀死,监控MySQL服务是否正常的方法有多种可以通过端口号、进程ID以及执行MySQL命令,这里我们使用mysladmin执行命令来监测MariaDB服务是否正常,脚本内容如下(check_mysql.sh):提示:代码块部分可以左右滑动查看噢

代码语言:txt
复制
#!/bin/bash

MYSQL_PING=`mysqladmin -uroot -p123456 ping`
MYSQL_OK="mysqld is alive"
if [[ "$MYSQL_PING" != "$MYSQL_OK" ]]
   then
      echo "mysql is not running"
      killall keepalived
    else
      echo "mysql is running"
fi

这里Fayson使用的是root用户来检测MariaDB服务是否正常,大家可以使用一个权限较低的用户来检测。

设置check_mysql.sh脚本执行权限

代码语言:txt
复制
[root@vm1 ~]# chmod +x /etc/keepalived/check_mysql.sh
[root@vm1 ~]# ll /etc/keepalived/check_mysql.sh 
-rwxr-xr-x 1 root root 233 Dec 29 07:34 /etc/keepalived/check_mysql.sh
[root@vm1 ~]# 

注意:该脚本存在于Keepalived所在服务器。

5.MySQLA服务器Keepalived配置


1.编辑/etc/keepalived/keepalived.conf配置文件,内容如下:提示:代码块部分可以左右滑动查看噢

代码语言:txt
复制
[root@vm1 ~]# vim /etc/keepalived/keepalived.conf 
! Configuration File for keepalived
global_defs {
}
vrrp_script check_mysql {
  script "/etc/keepalived/check_mysql.sh"
  interval 2
}
vrrp_instance VI_1 {
  state BACKUP
  interface ens192
  virtual_router_id 51
  priority 100
  advert_int 1
  nopreempt
  authentication {
    auth_type PASS
    auth_pass 1111
  }
  virtual_ipaddress {
    192.168.0.188
  }
  track_script {
    check_mysql
  }
}

2.启动Keepalived服务

代码语言:txt
复制
[root@vm1 ~]# systemctl start keepalived

3.检查Keepalived是否已将192.168.0.188绑定在ens192网卡

4.在MySQLB服务器上ping 192.168.0.188

5.停止Keepalived服务查看192.168.0.188是否解绑

可以看到停止Keepalived服务后192.168.10.188已和ens192网卡解绑。

6.MySQLB服务器Keepalived配置


1.编辑/etc/keepalived/keepalived.conf配置,内容如下,提示:代码块部分可以左右滑动查看噢

代码语言:txt
复制
[root@vm2 ~]# vim /etc/keepalived/keepalived.conf 
! Configuration File for keepalived
global_defs {
}
vrrp_script check_mysql {
  script "/etc/keepalived/check_mysql.sh"
  interval 2
}
vrrp_instance VI_1 {
  state BACKUP
  interface eth0
  virtual_router_id 51
  priority 90
  advert_int 1
  authentication {
    auth_type PASS
    auth_pass 1111
  }
  virtual_ipaddress {
    192.168.0.188
  }
  track_script {
    check_mysql
  }
}

2.启动Keepalived服务

代码语言:txt
复制
[root@vm2 ~]# systemctl start keepalived
[root@vm2 ~]# 

3.检查Keepalived是否已将192.168.10.188绑定在ens192网卡

注意:我们这里可以看到192.168.0.188绑定在MySQLB服务器的ens192网卡,由于MySQLA服务的Keepalived服务停了,所以这里才会绑定成功。

4.在MySQLA服务上ping 192.168.0.188

7.验证Keepalived服务IP漂移


1.启动MySQLA和MySQLB服务上的Keepalived服务

2.查看此时192.168.0.188 绑定在哪台服务器

可以看到192.168.0.188 IP地址绑定在MySQLA服务器的ens192网卡上。

3.将MySQLA服务器的Keepalived服务停掉

由上图可以看到此时MySQLA服务器已解绑192.168.0.188的IP地址

由上图可以看到IP地址192.168.0.188已自动漂移到MySQLB服务器的ens192网卡上。

4.在MySQLA服务上ping 192.168.0.188

通过以上步骤测试说明Keepalived服务IP地址漂移正常。

8.验证MySQL高可用


测试时192.168.0.188绑定在MySQLB服务器的ens192网卡

1.使用如下命令登录MariaDB

代码语言:txt
复制
[root@vm1 ~]# mysql -uroot -p -h192.168.0.188

MySQL登录成功,连接的是MySQLB服务。

2.将MySQLB服务器的MariaDB服务停掉

查看192.168.0.188是否还在该服务绑定

IP地址已解绑。

3.查看MySQLA服务器的IP地址绑定情况

4.再次登录MariaDB

这时我们看到MariaDB数据库依然能够正常访问,说明已连接到MySQLA服务的MariaDB数据库。

9.总结


  • 利用Keepalived的vrrp_script区域来做MariaDB服务的健康检查,如果检测到MariaDB服务异常则将该服务的Keepalived服务杀掉,已确保虚拟IP能漂移到正常节点的Keepalived服务器从而实现MariaDB服务的高可用。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-01-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Hadoop实操 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档