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; 将修改,保存到配置文件。