MHA集群概述|部署MHA集群
数据库系列文章
1 - 数据库服务概述 | 构建MySQL服务 | 数据库基本管理 | MySQL基本类型
2 - 表结构 | MySQL键值
3 - 字段约束|MySQL索引|MySQL用户管理
4 - 基础查询进阶|连接查询
5 - 视图|存储过程
6 - 数据备份与恢复|innobackupex
7 - MySQL主从同步|主从同步模式
8 - MySQL数据读写分离|MySQL多实例
9 - 数据分片概述|部署MyCat服务
10 - MHA集群概述|部署MHA集群
11 - PXC集群|MySQL存储引擎
相关概念
高可用集群知识点回顾 分为 主备2种角色,工作过程,主服务器获取vip地址 客户端连接 vip地址访问服务,当主服务器宕机后,备用的服务器升级为获取vip地址 继续给客户端提供服务。
之前网站高可用集群用的是keepalived软件做集群服务
数据库高可用集群,使用专属的集群软件MHA
MHA软件介绍:软件有两部分组成:
- 管理端软件(管理节点):安装管理集群主机上的软件
- 数据端软件(数据节点):安装在数据库服务器上的软件
MHA集群架构
至少三台数据库服务器才能做 必须是主从同步结构
MHA集群工作过程
配置MHA集群
第一步 集群环境准备
公共配置
启动binlog日志
开启办同步复制模式
禁止删除本机的中继日志文件
重启数据库服务
[51 ~]# vim /etc/my.cnf
[mysqld]
plugin-load="rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync-slave.so"
rpl_semi_sync_master_enabled=1
rpl_semi_sync_slave_enabled=1
relay_log_purge=0
server_id=51
log_bin=master51
:wq
[51 ~]# systemctl restart mysqld
[51 ~]# mysql -uroot -p123qqq..a
mysql> grant replication slave on *.* to repluser@"%" Identified by "123qqq...A"
51,52,53都要这个操作
配置ssh免密码登陆
- 所有数据库服务器之间可以彼此免密登陆
- 51 免密登陆 52 53
ssh-copy-id root@192.168.4.52 - 52 免密登陆 51 53
- 53 免密登陆 51 52
- 测试
- 51 免密登陆 52 53
- 管理主机可以免密登陆所有数据库服务器(数据库服务器不需要免密登陆管理主机)
配置mysql一主多从 同步结构
-
配置主数据库服务器
启动binlog日志 (公共配置已经配置了)
用户授权(公共配置已经配置了)
查看日志信息
-
配置从数据库服务器
指定server_id并重启数据库服务
确保数据一致(如果一样就不需要做了)
指定主服务器信息
change master to master_host="192.168.4.51",master_user="repluser",master_password="123qqq...A",master_log_file="master51.000001",master_log_pos=441;
启动slave进程
mysql > start slave
查看状态(IO线程喝sql线程都是yes状态)
show slave status
第二步 配置管理主机 57
安装软件
安装依赖软件
安装提供管理命令的软件
make && make install
了解相关管理命令
创建并编辑管理服务的主配置文件(重要)
创建工作目录
mkdir /etc/mha
拷贝模版文件创建主配置文件
cd mha4mysql-manager-0.56
cp samples/conf/app1.cnf /etc/mha/
编辑主配置文件
# 模板文件是一个半成品 需要修改
vim /etc/mha/app1.cnf (没有第四台服务器 所以删掉[server4])
[server_default]
manager_workdir=/etc/mha # 指定工作目录
manager_log=/etc/mha/manager.log # 日志文件存放的目录
# 故障切换脚本
master_ip_failover_script=/etc/mha/master_ip_failover
ssh_user=root
ssh_port=22
repl_user=repluser # server1 2 3 上都得有
repl_password=123qqq...AAA
user=sw # 监控用户 最后得在监视服务器上添加
password=123qqq...A # 密码
# 定义监视的数据库服务器
[server1]
hostname=192.168.4.51
port=3306
candidate_master=1
[server2]
hostname=192.168.4.52
port=3306
candidate_master=1
[server3]
hostname=192.168.4.53
port=3306
candidate_master=1
创建故障切换脚本
创建脚本并指定vip地址部署在哪块网卡上
第三步 配置数据库服务器
把故障切换脚本里指定的vip地址配置在主服务器数据库
要保证3台数据库都有ifconfig
命令
which ifconfig || yum -y install net-tools
ifconfig eth0:1 192.168.4.100/24
安装软件(3台都要安装)
先安装依赖 再安装主软件 添加监控用户(只需在master服务器添加 在slave服务器查看)
[51 ~]# mysql -uroot -paaa
mysql> grant all on *.* to sw@"%" Identified by "123qqq...A"
# 可以同步到从服务器
[53 ~]# mysql -uroot -p1111 -e "select user from mysql.user where user="sw""
第四步 测试配置
在管理主机57如下测试:
测试ssh免密登陆配置
测试主从同步配置
说明:两个测试都成功了 管理服务才能启动成功
第五步 启动管理服务
nohup masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover 2> /dev/null &
测试集群的高可用,具体操作如下:
- 客户端50连接vip地址访问数据库服务
在主服务器是51添加客户端连接使用的用户 2台从服务器会自动同步用户
mysql> create database db1;
mysql> create table db1.a;
mysql> grant select,insert on db1.* to yaya@"%" identified by "123qqq...A";
- 停止51主机的数据库服务
systemctl stop mysqld
- 客户端50连接vip地址访问数据库服务
mysql -h192.168.4.100 -uyaya -p123qqq...A
- 在52和53主机查看vip地址 谁有vip地址 谁就是信息的主服务器
[52 ~]# ifconfig eth0:1
-
在剩下的另一台数据库服务器查看主服务器ip地址 自动做新主服务器的slave主机
-
查看app1.cnf配置文件(发现没有[server1]的配置了)
-
查看管理服务的状态,并启动管理服务,再次查看状态(会监视新主数据库服务器)