基于腾讯云CVM构建MySQL MHA Keepalived集群-深蓝源码网


时间: 2020-09-03 00:08:26 人气: 2285 评论: 0

1 环境介绍

1.1 MHA简单介绍

MHA是由perl语言编写的一款开源的MySQL的高可用程序,为MySQL主从复制架构提供了automating master failover功能。MHA可以自动检测mysql是否宕机,如果宕机,在10-30s内完成new master的选举,应用所有差异的binlog日志到所有slave,将所有的slave切换到新的master上来。

由于MHA本身只负责数据库主从的切换,但是应用程序并不知道数据库的master变了。针对这种情况,可以使用MHA预留的几个脚本接口,通过虚拟IP或者修改全局配置文件的方法通知应用程序,master数据库已经改变。

MHA服务有两种角色,MHA Manager(管理节点)和HMA Node(数据节点):

(1)MHA Manager:通常部署在一台独立机器上管理多个master/slave集群,每个master/slave集群称作一个application;

(2)MHA node:运行在每台MySQL服务器上(master/slave/manager),他通过监控解析和清理logs功能的脚本来加快故障转移。

1.2 环境部署

如下图所示,使用5台腾讯云centos 7.5 CVM搭建MHA集群环境。准备集群环境,安装依赖包,授权用户,配置ssh密钥对认证登陆,所有节点之间互相以root秘钥对认证登录,管理主机以root密钥对认证登录所有数据节点主机,配置mha集群。

IP规划如下:

角色

IP地址

主机名

安装软件包

MHA-master主节点服务器

10.10.2.7

master2-7

Mysql,MHA node,keepalived

MHA-备份master1服务器

10.10.2.12

master2-12

Mysql,MHA node,keepalived

MHA-备份master2服务器

10.10.2.11

master2-11

Mysql,MHA node,keepalived

MHA-slave从节点服务器

10.10.2.9

slave2-9

Mysql,MHA node

MHA-manager管理节点服务器

10.10.2.17

mgm2-17

MHA manager

VIP地址

10.10.2.100

2 MHA集群环境搭建

2.1 环境初始化配置

(1)修改hostname,退出重新登录生效(所有的数据节点和MHA管理节点同样操作,以10.10.2.7为例)

[root@VM_2_7_centos ~]# hostnamectl set-hostname master2-7
[root@VM_2_7_centos ~]# exit

(2)centos 7默认安装mariadb,查看并卸载,否则安装MySQL时会冲突

[root@master2-7 ~]# rpm -qa | grep mariadb
mariadb-libs-5.5.56-2.el7.x86_64
[root@master2-7 ~]# rpm -e --nodeps mariadb-libs

2.2 MySQL主从搭建

步骤一:安装MySQL软件包

(1)安装mysql时可能会缺少某些依赖包,需提前单独安装

[root@master2-7 ~]# yum -y install perl-Data-Dumper  perl-JSON  perl-Time-HiRes numactl

(2)创建MySQL目录

[root@master2-7 ~]# mkdir  -p /usr/mysql
[root@master2-7 ~]# cd /usr/mysql/

(3)wget下载mysql-5.7.25.tar 整合包

[root@master2-7 mysql]# wget wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.25-1.el7.x86_64.rpm-bundle.tar

(4)解压mysql-5.7.25.tar 整合包到/usr/mysql下

[root@master2-7 mysql]# tar xvf mysql-5.7.25-1.el7.x86_64.rpm-bundle.tar
mysql-community-libs-5.7.25-1.el7.x86_64.rpm
mysql-community-libs-compat-5.7.25-1.el7.x86_64.rpm
mysql-community-embedded-devel-5.7.25-1.el7.x86_64.rpm
mysql-community-embedded-5.7.25-1.el7.x86_64.rpm
mysql-community-client-5.7.25-1.el7.x86_64.rpm
mysql-community-server-5.7.25-1.el7.x86_64.rpm
mysql-community-embedded-compat-5.7.25-1.el7.x86_64.rpm
mysql-community-test-5.7.25-1.el7.x86_64.rpm
mysql-community-devel-5.7.25-1.el7.x86_64.rpm
mysql-community-common-5.7.25-1.el7.x86_64.rpm

(5)安装MySQL

#按照以下顺序进行安装,因为它们之间存在依赖关系
common --> libs --> clients --> server --> libs-compat
[root@master2-7 mysql]# rpm -ivh mysql-community-common-5.7.25-1.el7.x86_64.rpm
warning: mysql-community-common-5.7.25-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:mysql-community-common-5.7.25-1.e################################# [100%]

[root@master2-7 mysql]# rpm -ivh mysql-community-libs-5.7.25-1.el7.x86_64.rpm
warning: mysql-community-libs-5.7.25-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:mysql-community-libs-5.7.25-1.el7################################# [100%]
 
[root@master2-7 mysql]# rpm -ivh mysql-community-client-5.7.25-1.el7.x86_64.rpm
warning: mysql-community-client-5.7.25-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:mysql-community-client-5.7.25-1.e################################# [100%]
   
[root@master2-7 mysql]# rpm -ivh mysql-community-server-5.7.25-1.el7.x86_64.rpm
warning: mysql-community-server-5.7.25-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:mysql-community-server-5.7.25-1.e################################# [100%]
   
[root@master2-7 mysql]# rpm -ivh mysql-community-libs-compat-5.7.25-1.el7.x86_64.rpm
warning: mysql-community-libs-compat-5.7.25-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:mysql-community-libs-compat-5.7.2################################# [100%]

(6)安装好后,可以去检查是否存在MySQL的配置文件或者MySQL的命令在/usr/bin下

[root@master2-7 mysql]# ls /etc/my.cnf
/etc/my.cnf
[root@master2-7 mysql]# ls /usr/bin/ | grep mysql
mysql
mysqladmin
mysqlbinlog
mysqlcheck
mysql_config_editor
mysqld_pre_systemd
mysqldump
mysqldumpslow
mysqlimport
mysql_install_db
mysql_plugin
mysqlpump
mysql_secure_installation
mysqlshow
mysqlslap
mysql_ssl_rsa_setup
mysql_tzinfo_to_sql
mysql_upgrade

步骤二:启动MySQL数据库服务并设置开机自启

(1)启动MySQL数据库服务并设置开机自启

[root@master2-7 mysql]# systemctl start mysqld
[root@master2-7 mysql]# systemctl enable mysqld

(2)查看MySQL服务状态

[root@master2-7 mysql]# systemctl status mysqld
● mysqld.service - MySQL Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2019-04-03 11:09:23 CST; 38s ago
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
 Main PID: 3965 (mysqld)
   CGroup: /system.slice/mysqld.service
           └─3965 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid

Apr 03 11:09:17 master2-7 systemd[1]: Starting MySQL Server...
Apr 03 11:09:23 master2-7 systemd[1]: Started MySQL Server.
[root@master2-7 mysql]# ps -ef | grep mysqld
mysql     3965     1  0 11:09 ?        00:00:00 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
root      4119  1399  0 11:10 pts/0    00:00:00 grep --color=auto mysqld

步骤三:连接MySQL服务器,修改密码

(1)mysql 5.7有默认密码,需要查看随机生成的root管理密码

[root@master2-7 mysql]# cat /var/log/mysqld.log  | grep password
2019-04-03T03:09:18.427243Z 1 [Note] A temporary password is generated for root@localhost: S?!SPerVi4or
2019<										

技术沙龙 教程文章 热点综合

评论