MHA配合Atlas实现读写分离
Atlas介绍
Atlas是由Qihoo 360,Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目.它是在mysql-proxy 0.8.2版本的基础上,对其进行了优化,增加了一些新的功能特性.360内部使用Atlas运行的mysql业务,每天承载的读写请求数达几十亿条.
注意
- Atlas只能安装运行在64位的系统上
- Centos 5.X安装 Atlas-XX.el5.x86_64.rpm,Centos 6.X安装Atlas-XX.el6.x86_64.rpm.
- 后端mysql版本应大于5.1,建议使用Mysql 5.6以上
安装配置
- Atlas-2.2.1.el6.x86_64.rpm
- 安装Atlas
#yum安装
yum install -y Atlas*
#rpm安装
rpm -ivh Atlas-2.2.1.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 = 10.0.0.55:3306
proxy-read-only-backend-addresses = 10.0.0.51:3306,10.0.0.53:3306
pwds = repl:/iZxz+0GRoA=,mha:O2jBXONX098=
daemon = true
keepalive = true
event-threads = 8
log-level = message
log-path = /usr/local/mysql-proxy/log
#如果开启日志,需要注意定期清理日志
#生产环境中有过因为该日志占满磁盘而无法启动mysql的案例
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
Atlas功能测试
登录数据库
mysql -umha -pmha -h 10.0.0.53 -P 33060
测试读操作
#直接查看server_id,多次查询可以看到2个不同的server_id轮询
select @@server_id;
#开启事务后查看server_id,多次查询可以一直看到当前主库的server_id
begin;select @@server_id;commit;
生产用户要求
开发人员申请一个应用用户
app
密码123456,要通过10网段登录
- 数据库添加用户
grant select,update,insert,delete on *.* to app@'10.0.0.%' identified by '123456';
- 获得加密后的密码,修改Atlas配置文件并重启
#获得加密后的密码
/usr/local/mysql-proxy/bin/encrypt 123456
#修改配置文件
vim /usr/local/mysql-proxy/conf/test.cnf
pwds = repl/iZxz+0GRoA=,mha:O2jBXONX098=,app:/iZxz+0GRoA=
#重启Atlas
/usr/local/mysql-proxy/bin/mysql-proxyd test restart
Atlas基本管理
#根据配置文件中设置的admin帐号密码登录
mysql -uuser -ppwd -h127.0.0.1 -P2345
#查看帮助
select * from help;
#查看当前所有数据库
SELECT * FROM backends;
#暂停2号数据库
set offline 2;
#开启2号数据库
set online 2;
#移除3号数据库
REMOVE BACKEND 3;
#添加一个10.0.0.53:3306的从库
ADD SLAVE 10.0.0.53:3306;
#明文添加一个oldguo用户密码123456
ADD PWD oldguo:123456;
#将当前的设置情况写入配置文件
save config;
最后一次更新于2021-04-01 16:51
0 条评论