mysql 数据库DBA课程10_01 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以上
MHA环境:
dba02----master----192.168.189.133 server_id=8
dba03----slave-----192.168.189.134 server_id=9
dba04----slave-----192.168.189.135 server_id=10 MHA manager
2、安装配置(本实验是单独一台服务器上安装 192.168.189.136 主机名dba05)

yum install -y Atlas*
或者 rpm -ivh Atlas-2.2.1.el6.x86_64.rpm
安装好了,它会默认在/usr/local/mysql-proxy下给你生成4个文件夹,以及需要配置的文件,如下:


bin目录下放的都是可执行文件
encrypt  是用来生成MySQL密码加密的,在配置的时候会用到
mysql-proxy 是MySQL自己的读写分离代理
mysql-proxyd 是360弄出来的,后面有个"d",服务的启动、重启、停止。

conf目录下放的是配置文件
test.cnf 只有一个文件,用来配置代理的,可以改成其他名
lib目录下放的是一些包,以及Atlas的依赖
log目录下放的是日志,如报错等错误信息的记录

mv test.cnf test.cnf.bak
vi test.cnf
[mysql-proxy]
admin-username = user #管理atlas的用户名,可自定
admin-password = pwd #密码,可自定
proxy-backend-addresses = 192.168.189.155:3306 ## 写的库,主库的VIP
proxy-read-only-backend-addresses = 192.168.189.134:3306, 192.168.189.135:3306 ##读的库,也就是从库

pwds = repl:3yb5jEku5h4=,mha:O2jBXONX098= #这里的用户,必须要在altas中声明,并且要在后端的mysql中创建
daemon = true ## 后台运行
keepalive = true ## 是否检测节点的心跳
event-threads = 8 ##并发多少个线程
log-level = message ## 日志的记录级别
log-path = /usr/local/mysql-proxy/log ##日志路径

sql-log=ON ## 记录经过 atlas的所有语句,记录下来,可以做审计
proxy-address = 0.0.0.0:33060 ## 业务,直接连接这个端口,由这个端口代理到后端的3306
admin-address = 0.0.0.0:2345 ## 管理用户,登录的端口
charset=utf8mb4
++++++++++++++++*******************
repl:3yb5jEku5h4=,mha:O2jBXONX098=
这里的 冒号 后面的,到 逗号 结束的 字符就是,密码,这个密码是加密过了的,并且这里的用户名和密码,必须要在Mysql主从环境中,有这个用户。

atlas提供了加密工具:
cd /usr/local/mysql-proxy/bin


++++++++++++++++*******************
启动atlas
/usr/local/mysql-proxy/bin/mysql-proxyd test start
/usr/local/mysql-proxy/bin/mysql-proxyd test restart ##重启

3.、Atlas功能测试(在atlas 服务器[192.168.189.136]上运行)
测试读操作:用mha 用户,连接atlas
mysql -umha -p -h 192.168.189.136 -P 33060


select @@server_id;

测试写操作: begin;select @@server_id;commit;
    

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

4.1 在主库中,创建用户 (192.168.189.133 dba02)
grant select ,update,insert on *.* to app@'192.168.%' identified by '123456';
4.2. 在atlas中添加生产用户
/usr/local/mysql-proxy/bin/encrypt 123456 ---->制作加密密码
vim /usr/local/mysql-proxy/conf/test.cnf


修改 altas 配置文件,把这个app用户和它的密码,添加进去。


重启atlas
/usr/local/mysql-proxy/bin/mysql-proxyd test restart

app用户连接测试
mysql -uapp -p123456 -h 192.168.189.136 -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.189.135:3306;
 ## 添加一个从节点
select * from pwds; ##查询所有的用户和密码


添加生产用户:
先在Mysql 主库上添加这个用户,以及授权。
grant select ,update,insert on *.* to xyz@'192.168.%' identified by '123456';
add pwd xyz:123456; ## atlas 中声明这个用户。(明文添加)
+++++++++++++++++ 以上操作,还未写入配置文件
save config; 将修改,保存到配置文件。