时间: 2020-09-03 00:08:26 人气: 2285 评论: 0
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功能的脚本来加快故障转移。
如下图所示,使用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 |
(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
步骤一:安装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<