MySQL高可用解决方案---MHA

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

一主两从一管理,一共四台设备

MHA的作用是做master的高可用,当主节点MySQL故障时,会将和主节点数据最接近的一个从节点提升为主节点,同时如果其他从节点有更新的数据也会同步到此“准主节点”上。如果在主节点有数据已经提交但是所有的从节点还未完成复制,则从节点提升为主节点后只能将此数据回退,没有别的办法。


准备事项:


1、同步时间

1
ntpdate 172.18.0.1

2、配置主机域名,在主节点即node1上操作

1
2
3
4
5
6
7
8
vim  /etc/hosts
192.168.1.101 node1  #主节点
192.168.1.106 node2  #从节点
192.168.1.107 node3  #从节点
192.168.1.100 node4  #manager
scp  /etc/hosts   node2: /etc/hosts
scp  /etc/hosts   node3: /etc/hosts
scp  /etc/hosts   node4: /etc/hosts

3、MHA需要ssh无密钥验证

1
2
3
4
5
6
ssh -keygen -t rsa -P  ''
cd    /root/ . ssh /
ssh -copy- id  -i . /id_rsa .pub  root@node1
scp  id_rsa{,.pub} authorized_keys  node2: /root/ . ssh
scp  id_rsa{,.pub} authorized_keys  node3: /root/ . ssh
scp  id_rsa{,.pub} authorized_keys  node4: /root/ . ssh


下面开始具体步骤:


1、配置主从复制集群

1
2
3
4
5
6
7
8
9
node1:
vim  /etc/my .cnf.d /server .cnf  
  [server]
   skip_name_resolve=ON
   innodb_file_per_table=ON
   server_id = 1
   log_bin = master-log
   relay_log = relay-log
   #主节点也要配置中继日志,因为主节点故障再恢复时就会称为从节点
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
node2:
vim  /etc/my .cnf.d /server .cnf  
[server]
   skip_name_resolve=ON
   innodb_file_per_table=ON
   server_id = 2
   relay_log = relay-log
   log_bin = master-log
   relay_log_purge = OFF
   read_only = ON
   
   node3:
vim  /etc/my .cnf.d /server .cnf  
[server]
   skip_name_resolve=ON
   innodb_file_per_table=ON
   server_id = 3
   relay_log = relay-log
   log_bin = master-log
   relay_log_purge = OFF
   read_only = ON

开启服务

1
systemctl  start mariadb.service


2、在主节点授权复制账号

1
GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO  'repluser' @ '192.168.1.%'  IDENTIFIED BY  'centos' ;

主节点授权管理设备的管理账号

1
GRANT ALL ON *.* TO  'mhaadmin' @ '192.168.1.%'  IDENTIFIED BY  'centos' ;

写入磁盘

1
FLUSH PRIVILEGES;


3、在从节点配置

1
2
3
4
5
CHANGE  MASTER TO MASTER_HOST= '192.168.1.101' ,MASTER_USER= 'repluser' ,MASTER_PASSWORD= 'centos' ,MASTER_LOG_FILE= 'master-log.000003' ,MASTER_LOG_POS=245;
START SLAVE ;
SHOW SLAVE STATUS\G;
SELECT USER FROM mysql.user;
#能看到复制授权账户和管理账户已经同步


4、安装MHA软件包

在manager节点安装manager和node包

1
2
yum -y  install  mha4mysql-manager-0.56-0.el6.noarch.rpm
yum -y  install  mha4mysql-node-0.56-0.el6.noarch.rpm


5、在node上安装node包

1
yum -y  install   mha4mysql-node-0.56-0.el6.noarch.rpm


6、在manager上配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
mkdir  /etc/masterha
vim  /etc/masterha/app1 .cnf
[server default]
user=mhaadmin
password=centos
manager_workdir= /data/masterha/app1
manager_log= /data/masterha/app1/manager .log
remote_workdir= /data/masterha/app1
ssh_user=root
repl_user=repluser
repl_password=centos
ping_interval=1
 
[server1]
hostname =192.168.1.101
ssh_port=22
candidate_master=1
 
[server2]
hostname =192.168.1.106
ssh_port=22
candidate_master=1
 
[server3]
hostname =192.168.1.107
ssh_port=22
candidate_master=1


7、检查配置并启动服务

1
2
3
4
5
6
检查
masterha_check_ssh --conf= /etc/masterha/app1 .cnf
masterha_check_repl --conf= /etc/masterha/app1 .cnf 
 
启动manager服务器
masterha_manager  --conf= /etc/masterha/app1 .cnf


8、测试

此时模拟主节点故障

1
2
3
SHOW MASTER STATUS; 
SHOW SLAVE STATUS;
#在从节点查看从节点信息,此时有一个从节点已经升级为主节点


9、修复原主节点

1
2
3
4
5
6
7
8
9
10
11
vim  /etc/my .cnf.d /server .cnf     #添加两行
relay_log_purge = OFF
read_only = ON
 
再次开启服务上线
systemctl  start mariadb.service
 
CHANGE  MASTER TO MASTER_HOST= '192.168.1.106' ,MASTER_USER= 'repluser' ,MASTER_PASSWORD= 'centos' ,MASTER_LOG_FILE= 'master-log.000003' ,MASTER_LOG_POS=320; 
START SLAVE;
SHOW SLAVE STATUS\G;
#此时的主节点就是替代的原从节点


10、在manager上检查复制功能

1
2
3
4
5
masterha_check_repl --conf= /etc/masterha/app1 .cnf
出现如下字样就说明主从已经切换了,而且原主节点此时也变成了从节点
192.168.1.106(192.168.1.106:3306) (current master)
  +--192.168.1.101(192.168.1.101:3306)
  +--192.168.1.107(192.168.1.107:3306)


11、再次启动MHA

1
2
3
nohup  masterha_manager  --conf= /etc/masterha/app1 .cnf &>  /data/masterha/app1/manager .log &
#在后台执行,并剥离与当前终端的关系
#当主节点再次down掉,此程序会自动结束同时主从节点自动切换。然后我们还要再次手动开启MHA


至此实验结束


本文转自  a_pan  51CTO博客,原文链接:http://blog.51cto.com/panpangao/1981848

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
SQL 关系型数据库 MySQL
解决MySQL主从慢同步问题的常见的解决方案:
解决MySQL主从慢同步问题的方法有很多,以下是一些常见的解决方案: 1. 检查网络连接:确保主从服务器之间的网络连接稳定,避免网络延迟或丢包导致数据同步缓慢。 2. 优化数据库配置:调整MySQL的配置参数,如增大binlog文件大小、调整innodb_flush_log_at_trx_commit等参数,以提高主从同步性能。 3. 检查IO线程和SQL线程状态:通过SHOW SLAVE STATUS命令检查IO线程和SQL线程的状态,确保它们正常运行并没有出现错误。 4. 检查主从日志位置:确认主从服务器的binlog文件和位置是否正确,避免由于错误的日志位置导致同步延迟。 5.
117 1
|
2月前
|
存储 关系型数据库 MySQL
Mysql高可用|索引|事务 | 调优
Mysql高可用|索引|事务 | 调优
|
3月前
|
SQL 容灾 关系型数据库
rds容灾与高可用
rds容灾与高可用
28 4
|
3月前
|
关系型数据库 MySQL
电子好书发您分享《MySQL MGR 8.0高可用实战》
电子好书发您分享《MySQL MGR 8.0高可用实战》 电子好书发您分享《MySQL MGR 8.0高可用实战》
89 1
|
1月前
|
关系型数据库 MySQL 数据库
深入探讨MySQL并发事务的问题及解决方案
深入探讨MySQL并发事务的问题及解决方案
65 0
|
2月前
|
SQL 关系型数据库 MySQL
MySQL - 死锁的产生及解决方案
MySQL - 死锁的产生及解决方案
192 0
|
2月前
|
监控 容灾 关系型数据库
rds容灾与高可用
rds容灾与高可用
45 6
|
3月前
|
SQL 关系型数据库 MySQL
Mysql高可用,索引,事务与调优:提高数据库性能的关键技术
在当今互联网时代,高可用性、稳定性和性能是数据库的三大关键要素。本文将深入探讨Mysql高可用、索引、事务和调优等方面的技术,为读者提供实用的解决方案和经验。
24 0
|
3月前
|
监控 关系型数据库 MySQL
MySQL高可用与性能优化综述
MySQL作为一种常用的关系型数据库管理系统,高可用性、索引优化、事务处理和性能调优一直是开发人员和运维人员关注的重点。本文将从MySQL高可用性解决方案、索引设计与优化、事务处理最佳实践以及性能调优策略等方面进行探讨,为读者提供全面的MySQL技术知识概览。
|
3月前
|
JavaScript 前端开发 关系型数据库
针对Mysql转义反斜杠的解决方案
针对Mysql转义反斜杠的解决方案
40 2