欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

mysql读写分离(atlas)的架构搭建

程序员文章站 2022-05-02 10:40:48
...

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

二:架构图

mysql读写分离(atlas)的架构搭建

三:数据库主从复制搭建

参见博文Ubuntu下MySql5.7主从复制搭建

四: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