MHA配合Atlas实现读写分离

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: MHA配合Atlas实现读写分离

屏幕截图 2023-08-28 195743.png

1. MHA规划和实施

项目:MHA高可用架构扩展

   MHA基础架构缺点:

       没有VIP,前端应用无法自动切换到新主库;

       没有故障提醒,管理员不能及时反应;

       如果连不上前主库的ssh,可能丢失部分数据。

   方案:

       VIP        应用透明        

       sendreport     报警提醒

       binlogserver     日志补偿

   职责:

       MHA切换后,及时修复高可用架构

       尽可能缩短Failover时间

2. MHA Failover过程优化

监控:ping_interval=2    

   选主:强制选主

         candidate_master=1;

         check_repl_delay=0;

   日志补偿:

         binlog_server

         从库没有追上主库进度,所以需要补偿

         解决方案:减少延时        

   切换:VIP 主从重构

3. MHA配置参数

cat > /etc/mha/app1.cnf <
[server default]
manager_log=/var/log/mha/app1/manager        
manager_workdir=/var/log/mha/app1            
master_binlog_dir=/usr/local/mysql       
user=mha                                   
password=mha                               
ping_interval=2
repl_password=123
repl_user=repl
ssh_user=root                               
[server1]                                   
hostname=192.168.8.10
port=3306                                  
[server2]            
hostname=192.168.8.20
port=3306
[server3]
hostname=192.168.8.30
port=3306
EOF
[binlog1]
no_master=1
hostname=192.168.8.30
master_binlog_dir=/data/mysql/binlog

4. MHA的故障排查

4.1 搭建过程中排查

(1) 检查脚本

masterha_check_ssh --conf=/etc/mha/app1.cnf 
    masterha_check_repl --conf=/etc/mha/app1.cnf

1主2从复制环境

(2) 配置文件

   节点地址,端口

   vip 和send脚本指定位置和权限

4.2 切换过程的问题

查看/var/log/mha/app1/manager

脚本问题比较多一些

vip

send

binlog

4.3 恢复MHA 故障

(1) 检查各个节点是否启动

(2) 找到主库是谁?

(3) 恢复1主2从

CHANGE MASTER TO MASTER_HOST='192.168.8.20', MASTER_PORT=3306, MASTER_AUTO_POSITION=1, MASTER_USER='repl', MASTER_PASSWORD='123';

(4) 检查配置文件,恢复节点信息

[server1]                                   
hostname=192.168.8.10
port=3306                                  
[server2]            
hostname=192.168.8.20
port=3306
[server3]
hostname=192.168.8.30
port=3306

(5) 检查vip和binlogserver

   检查vip是否在主库,如果不在,手工调整到主库

   重新启动binlogserver 拉取

cd /data/mysql/binlog
mysqlbinlog  -R --host=192.168.8.20 --user=mha --password=mha --raw  --stop-never mysql-bin.000001 &

(6) 启动Mananer

nohup masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover  < /dev/null> /var/log/mha/app1/manager.log 2>&1 &
masterha_check_status --conf=/etc/mha/app1.cnf

================================================================================

MHA配合Atlas实现读写分离

1. Atlas 介绍

Atlas是由 Qihoo 360, Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。

它是在mysql-proxy 0.8.2版本的基础上,对其进行了优化,增加了一些新的功能特性。

360内部使用Atlas运行的mysql业务,每天承载的读写请求数达几十亿条。

下载地址

https://github.com/Qihoo360/Atlas/releases

注意:

1、Atlas只能安装运行在64位的系统上

2、Centos 5.X安装 Atlas-XX.el5.x86_64.rpm,Centos 6.X安装Atlas-XX.el6.x86_64.rpm。

3、后端mysql版本应大于5.1,建议使用Mysql 5.6以上

2.安装配置

复制atlas

rpm -ivh Atlas-2.2.el6.x86_64.rpm
cd /usr/local/mysql-proxy/conf
mv test.cnf test.cnf.bak
vi test.cnf
[mysql-proxy]
admin-username = user
admin-password = pwd
proxy-backend-addresses = 192.168.8.10:3306
proxy-read-only-backend-addresses = 192.168.8.20:3306,192.168.8.30:3306
pwds = repl:3yb5jEku5h4=,mha:O2jBXONX098=
daemon = true
keepalive = true
event-threads = 8
log-level = message
log-path = /usr/local/mysql-proxy/log
sql-log=ON
proxy-address = 0.0.0.0:33060
admin-address = 0.0.0.0:2345
charset=utf8

启动atlas

/usr/local/mysql-proxy/bin/mysql-proxyd test start

ps -ef |grep proxy

3. Atlas功能测试

测试读操作:

mysql -umha -pmha  -h 192.168.8.30 -P 33060 
db03 [(none)]>select @@server_id;

测试写操作:

mysql> begin;select @@server_id;commit;

4. 生产用户要求

开发人员申请一个应用用户 app(select  update  insert)  密码123456,要通过10网段登录

4.1  在主库中,创建用户

grant select ,update,insert on *.* to app@'192.168.8.%' identified by '123456';

4.2. 在atlas中添加生产用户

/usr/local/mysql-proxy/bin/encrypt  123456      ---->制作加密密码
vim /usr/local/mysql-proxy/conf/test.cnf
pwds = repl:3yb5jEku5h4=,mha:O2jBXONX098=,app:/iZxz+0GRoA=
/usr/local/mysql-proxy/bin/mysql-proxyd test restart
[root@db03 conf]# mysql -uapp -p123456  -h 192.168.8.30 -P 33060

5. Atlas基本管理

连接管理接口

mysql -uuser -ppwd -h127.0.0.1 -P2345

查看数据库帮助

select * from help;

查看数据库节点状态

SELECT * FROM backends;

关闭、开启节点

set offline 2;

set online 2;

删除、添加从节点

REMOVE BACKEND 3;

ADD SLAVE 192.168.8.30:3306;

添加白名单

add client 192.168.8.30;

删除白名单

remove client 192.168.8.30;

保存配置

save config;


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
28天前
|
缓存 关系型数据库 MySQL
如何实现mysql高可用集群
如何实现mysql高可用集群
14 0
|
12月前
|
监控 关系型数据库 MySQL
MySQL高可用搭建方案之(MHA)(下)
MySQL高可用搭建方案之(MHA)(下)
|
12月前
|
监控 前端开发 关系型数据库
MySQL高可用搭建方案之(MHA)(上)
MySQL高可用搭建方案之(MHA)
|
SQL 缓存 负载均衡
PG数据库实现高可用方案(包括通用型方案Corosync+pacemaker协作)
PG数据库实现高可用方案(包括通用型方案Corosync+pacemaker协作)
920 0
|
存储 运维 Kubernetes
PostgreSQL-HA 高可用集群在 Rainbond 上的部署方案
本文将介绍在 Rainbond 上使用 Postgresql-repmgr + Pgpool 实现 Postgresql 高可用集群的部署和管理。
|
关系型数据库 MySQL Linux
Mycat分布式数据库架构解决方案--搭建MySQL读写分离环境--一主多从
Mycat分布式数据库架构解决方案--搭建MySQL读写分离环境--一主多从
238 0
Mycat分布式数据库架构解决方案--搭建MySQL读写分离环境--一主多从
|
关系型数据库 MySQL
MySQL高可用之MHA架构企业实战
MHA目前在MySQL高可用方面是一个相对成熟的解决方案,最近客户需求,特分享部署方案给大家
489 1
MySQL高可用之MHA架构企业实战
|
监控 关系型数据库 MySQL
|
域名解析 关系型数据库 MySQL