1-MHA集群概述_、_部署MHA集群_测试配置
MHA简介
1、mha是一个软件,master high availability
2、MHA是用perl脚本写的
3、是一套优秀的实现mysql高可用的解决方案
4、数据库的自动故障切换操作能做到在0~30秒之内
5、MHA能确保在故障切换过程中保证数据的一致性,以达到真正意义上的高可用
MHA组成
1、MHA Manager(管理节点)
(1)可以单独部署在一台独立的机器上,管理其他节点
(2)也可以部署在一台slave节点上
2、MHA Node(数据节点)
(1)运行在每台mysql服务器上
(2)中继日志文件默认只保留最新的两个
MHA工作过程
1、由manager定时检测集群中的master节点
2、当master故障时,manager自动将拥有最新数据的slave提升为新的master
关键点
- 从宕机崩溃的master保存二进制日志事件
- 识别含有最新更新的slave
- 应用差异中的中继日志到其他的slave
- 应用从master保存的二进制日志事件
- 提升一个slave为新的master
- 使其它的slave连接新的master进行复制
Manager节点提供的命令工具
| 命令 | 作用 |
|---|---|
| master_check_ssh | 检查MHA的SSH配置状况 |
| Master_check_repl | 检查masql复制状况 |
| masterha_manager | 启动MHA |
| master_check_status | 检测MHA运行状态 |
| master_check_monitor | 检测master是否宕机 |
MHA集群环境准备
51~53 主数据库服务器,共用一个浮动IP,其中一台坏了,另一台顶上去做主数据库服务器
56 监控51~53的健康状况,
54、55 纯从数据库服务器,备份数据
配置ssh密钥对认证登陆,所有节点之间互相以root秘钥对认证登录
| 角色 | IP地址 | 主机名 |
|---|---|---|
| 客户端 | 192.168.4.50 | client50 |
| Master主节点服务器 | 192.168.4.51 | master51 |
| 备用1主节点服务器 | 192.168.4.52 | master52 |
| 备用2主节点服务器 | 192.168.4.53 | master53 |
| 第一台slave服务器 | 192.168.4.54 | slave54 |
| 第二台slave服务器 | 192.168.4.55 | slave55 |
| MHA_manager服务器 | 192.168.4.56 | mgm56 |
| VIP | 192.168.4.100 |
搭建MHA
准备集群环境
1)修改主机名,配置IP(这里以master51为例)
echo master51 > /etc/hostname
nmcli connection modify eth0 ipv4.method manual ipv4.addresses 192.168.4.51/24 connection.autoconnect yes
nmcli connection up eth0
2) 在所有主机上安装Perl依赖包(51-56操作)
cd mysql/mha-soft-student/
yum -y install perl-*.rpm
3)在所有数据库服务器上安装mha-node包(51-55操作)
yum -y install perl-DBD-mysql perl-DBI
rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm
4)在管理主机上安装mha_node 和 mha-manager包(56操作),且必须先装mha-node
yum -y install perl-DBD-mysql perl-DBI
rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm
yum -y install perl-ExtUtils-* perl-CPAN-*
tar -zxf mha4mysql-manager-0.56.tar.gz
cd mha4mysql-manager-0.56/
perl Makefile.PL // 这是perl脚本编写的,perl的源码安装过程
*** Module::AutoInstall version 1.03
*** Checking for Perl dependencies...
[Core Features]
- DBI ...loaded. (1.627)
- DBD::mysql ...loaded. (4.023)
- Time::HiRes ...loaded. (1.9725)
- Config::Tiny ...loaded. (2.14)
- Log::Dispatch ...loaded. (2.41)
- Parallel::ForkManager ...loaded. (1.18)
- MHA::NodeConst ...loaded. (0.56)
*** Module::AutoInstall configuration finished. //配置完成
Checking if your kit is complete...
Looks good
Writing Makefile for mha4mysql::manager
Writing MYMETA.yml and MYMETA.json
make && make install
配置ssh密钥对认证登陆
1)所有节点之间可以互相以ssh密钥对方式认证登陆以(以51为例)
ssh-keygen
ssh-copy-id 192.168.4.52
//除了传给52外,53,54,55也要传,52-55主机也是一样的
2)配置56主机 无密码ssh登录所有数据节点主机
ssh-keygen
ssh-copy-id 192.168.4.51
//除传给51外,还要传给52-55
配置MHA集群环境
配置主节点 master51 一主多从
配置两个备用主节点 master52、master53
配置两个从节点 slave54、slave55
配置管理节点 mgm56
1)安装数据库(51-55同样操作,以51为例)
cd /root/mysql
tar -xf mysql-5.7.17.tar
yum -y install perl-JSON
rpm -Uvh mysql-community-*.rpm
rpm -qa | grep -i mysql
2)master51 数据库服务器配置文件
vim /etc/my.cnf
server_id=51 // 指定数据库id
log-bin=master51 // 指定日志前缀
binlog-format="mixed" // 指定日志类型
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 = off // 关闭自动删除中继日志
systemctl restart mysqld
//添加主从同步授权用户
grant replication slave on *.* to repluser@"%" identified by "123456";
show master status;
3)master52和 master53数据库服务器配置文件
//配置文件的设置同master51 注意修改server_id
vim /etc/my.cnf
systemctl restart mysqld
mysql -u root -p123456
change master to
master_host="192.168.4.51",
master_user="repluser",
master_password="123456",
master_log_file="master51.000003",
master_log_pos=441;
start slave;
show slave status\G;
4)slave54 和 slave55数据库服务器配置文件
vim /etc/my.cnf
server_id=54
//也可以开启只作为从库的半同步复制
plugin_load=”rpl_semi_sync_master=semisync_master.so”
rpl_semi_sync_slave_enabled=1
systemctl restart mysqld
mysql -u root -p123456
change master to
master_host="192.168.4.51",
master_user="repluser",
master_password="123456",
master_log_file="master51.000003",
master_log_pos=441;
start slave;
show slave status\G;
5)配置管理主机4.56
修改主配置文件
mkdir /etc/mha //创建工作目录,路径和文件名随意
cp 源码文件目录/samps/conf/app1.cnf /etc/mha //建立样板文件
vim /etc/mha/app1.cnf //编辑主配置文件
[server default] //定义服务器的默认配置
manager_workdir=/etc/mha //工作目录(管理目录),相关的配置文件都在这
manager_log=/etc/mha/manager.log //指定日志文件的存储目录及日志名
master_ip_failover_script=/etc/mha/master_ip_failover
//主库IP地址故障切换脚本 主库IP地址故障切换脚本存放路径
ssh_user=root //指定ssh用户和端口
ssh_port=22
repl_user=repluser //指定主从授权的用户名及密码
repl_password=123456
user=root //指定数据库用户和密码(监视用户)
password=123456
[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
[server4]
hostname=192.168.4.54
no_master=1 //不竞选主库
[server5]
hostname=192.168.4.55
no_master=1
2.根据配置文件修改内容做相应设置
在主库中授权root为all
在备选主库中查询
select host,user from mysql.user where host=”%” and user=”root”
cp master_ip_failover /etc/mha //将脚本拷贝到 /etc/mha
chmod 755 /etc/mha/master_ip_failover //修改vip并添加权限
ifconfig eth0:1 192.168.4.100/24 // 在主库中临时配置vip
验证配置
在管理节点上做ssh检查
master_check_ssh --conf=/etc/mha/app1.cnf
在管理节点上查看集群状态
master_check_repl --conf=/etc/mha/app1.cnf
启动管理服务MHA_Manager
masterha_manager --conf=/etc/mha_manager/app1.cnf \
--remove_dead_master_conf –ignore_last_failover
查看状态(新开一个终端)
masterha_check_status --conf=/etc/mha_manager/app1.cnf
停止服务
masterha_stop --conf=/etc/mha_manager/app1.cnf

浙公网安备 33010602011771号