- 作者简介:我是团团儿,是一名专注于云计算领域的专业创作者,感谢大家的关注
- 座右铭: 云端筑梦,数据为翼,探索无限可能,引领云计算新纪元
- 个人主页:团儿.-CSDN博客
目录
前言:
在数字化时代,数据库的性能和稳定性对于企业而言至关重要。随着业务规模的扩大和数据量的增长,单一的数据库读写模式已经难以满足高性能和高可用的需求。读写分离作为一种常见的数据库优化策略,通过将读操作和写操作分离到不同的数据库实例上,从而减轻主库的压力,提升整体系统的处理能力和响应速度。
MHA(Master High Availability Manager)和Atlas作为两款备受推崇的数据库高可用性和读写分离解决方案,各自具备独特的优势。MHA以其强大的主从切换和故障恢复能力,为数据库的高可用性提供了坚实的保障;而Atlas则通过智能化的读写分离和负载均衡策略,进一步优化了数据库的读写性能。
将MHA与Atlas相结合,可以充分发挥两者的优势,打造出一个高效、稳定且易于管理的读写分离解决方案。本文旨在深入探讨MHA配合Atlas实现读写分离的原理、步骤以及实际应用效果,帮助读者更好地理解和应用这一技术方案,提升数据库的性能和稳定性。
接下来,我将从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.9:3306
proxy-read-only-backend-addresses = 192.168.8.10:3306,192.168.8.11: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功能测试
如果不做mha,需要在主服务器创建mha用户:
grant all on *.* to mha@'192.168.8.%' identified by 'mha';
测试读操作:
mysql -umha -pmha -h 192.168.8.11 -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.11 -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.11:3306;
添加白名单
add client 192.168.8.11;
删除白名单
remove client 192.168.8.11;
保存配置
save config;
期待您的关注~