mysql读写分离(atlas)的架构搭建
mysql读写分离(atlas)的架构搭建
一:环境
主服务器
IP:192.168.1.205
系统:Ubuntu 16.04
MySQL:5.7.20
从服务器
IP:192.168.1.197
系统:Ubuntu 16.04
MySQL:5.7.20
atlas服务器
IP:192.168.1.206
系统:Ubuntu 16.04
MySQL:5.7.20
二:架构图
三:数据库主从复制搭建
四:atlas安装部署
4.1安装atlas
ubuntu系统,下载deb包,并安装
https://github.com/Qihoo360/Atlas/releases/download/2.2/Atlas-2.2-debian7.0-x86_64.deb
安装命令:
dpkg -i ./Atlas-2.2-debian7.0-x86_64.deb
其他系统的安装请参见:
https://github.com/Qihoo360/Atlas/wiki/Atlas%E7%9A%84%E5%AE%89%E8%A3%85
4.2配置atlas
进入/usr/local/mysql-proxy/conf目录,编辑test.conf配置文件
配置文件中的各项配置均有详细的文字说明
4.3运行atlas
进入/usr/local/mysql-proxy/bin目录,执行命令:
sudo ./mysql-proxyd test start # 启动Atlas。
sudo ./mysql-proxyd test restart # 重启Atlas。
sudo ./mysql-proxyd test stop # 停止Atlas。
如果提示atlas启动失败,请查看/usr/local/mysql-proxy/log目录日志文件中的详细错误内容。
如果错误日志提示libmysqlclient.so.18缺失,请下载 libmysqlclient18_5.6.25-0ubuntu1_amd64.deb安装,下载地址:
https://launchpad.net/ubuntu/xenial/amd64/libmysqlclient18/5.6.25-0ubuntu1
五:atlas读写分离测试
请在配置文件中加入配置项sql-log
#SQL日志的开关,可设置为OFF、ON、REALTIME,OFF代表不记录SQL日志,ON代表记录SQL日志,
#REALTIME代表记录SQL日志且实时写入磁盘,默认为OFF
sql-log = REALTIME
重启atlas,连接数据库,执行查询、增删改操作:
mysql -h 127.0.0.1 -uusername -ppassword -P1234
mysql>use mydatabase;
mysql>select * from mytable;
...
mysql> update mytable set status=1;
...
进入/usr/local/mysql-proxy/log目录,查看sql_test.log日志文件的内容:
select * from mytable命令在从服务器上执行;update mytable set status=1命令在主服务器上执行。
六:atlas简介
6.1 简介
Atlas是由 Qihoo 360公司Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基础上,修改了大量bug,添加了很多功能特性。目前该项目在360公司内部得到了广泛应用,很多MySQL业务已经接入了Atlas平台,每天承载的读写请求数达几十亿条。同时,有超过50家公司在生产环境中部署了Atlas,超过800人已加入了我们的开发者交流群,并且这些数字还在不断增加。
主要功能:
1.读写分离
2.从库负载均衡
3.IP过滤
4.自动分表
5.DBA可平滑上下线DB
6.自动摘除宕机的DB
6.2 atlas相对于官方MySQL-Proxy的优势
1.将主流程中所有Lua代码用C重写,Lua仅用于管理接口
2.重写网络模型、线程模型
3.实现了真正意义上的连接池
4.优化了锁机制,性能提高数十倍
6.3 atlas自动分表
atlas存在两个版本,2.2版本支持本库内的水平分表;另一版本支持分布式数据库的水平分表。具体说明,请参见git文档。
附:atlas:https://github.com/Qihoo360/Atlas/blob/master/README_ZH.md
下一篇: 基于主从复制的mysql的读写分离