centos下安装Atlas

一、Atlas简介

Atlas是由 Qihoo 360,  Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基础上,修改了大量bug,添加了很多功能特性。目前该项目在360公司内部得到了广泛应用,很多MySQL业务已经接入了Atlas平台,每天承载的读写请求数达几十亿条。

 

主要功能

* 读写分离

* 从库负载均衡

* IP过滤

* SQL语句黑白名单(经过测试及确认该功能最新版本是没有的)

* 自动分表

二、安装环境

操作系统: centos 6.4  32位或者64位

Mysql master地址:192.168.3.68

Mysql slave地址:192.168.2.243

Master和slave都安装有mysql,mysql版本:5.1.69

三、编译安装

1、  rpm包安装(推荐)。

下载地址:https://github.com/Qihoo360/Atlas/releases

wget https://github.com/Qihoo360/Atlas/releases/download/1.0.1/Atlas-1.0.1-1.el6.x86_64.rpm

rpm -ivh Atlas-1.0.1-1.el6.x86_64.rpm

 

2、  源码编译安装。

环境依赖:glib(2.32.x)、libevent(1.4以上)、Lua(5.1.x)、OpenSSL(0.9.8以上)

 

Yum安装依赖:

yum install -y libevent-devel lua-devel openssl-devel flex mysql-devel

yum install -y xz gettext-devel

 

glib一般都会版本比较低,而yum安装的版本可能并不能达到要求,所以需要手动编译安装。推荐版本glib2.32.4。

 

glib源码安装:

xz -d glib-2.32.4.tar.xz

tar xvf glib-2.32.4.tar

cd glib-2.32.4

./configure

make  &&  make install

ldconfig

注意:ldconfig这步骤不能缺少,否则编译安装Atlas的时候可能会用老的glib,然后提示版本不对。如果文件/etc/ld.so.conf没有/usr/local/lib这一行,请手动添加。

 

编译Atlas:

Wget  https://github.com/Qihoo360/Atlas/archive/1.0.1.zip
unzip  1.0.1

cd  Atlas-1.0.1

vim bootstrap.sh

修改mysql_config路径,一般是/usr/bin/mysql_config

修改pkgconfig路径,一般是/usr/local/lib/pkgconfig

./bootstrap.sh
make && make install

 

四、配置、启动和停止

Atlas默认安装在/usr/local/mysql-proxy

1、  配置

cd /usr/local/mysql-proxy

touch conf/instance.cnf

vim conf/instance.cnf

输入配置如下:

[mysql-proxy]

plugins = admin,proxy

admin-username=zone

admin-password=123456

admin-lua-script = /usr/local/mysql-proxy/lib/mysql-proxy/lua/admin.lua

proxy-backend-addresses = 192.168.3.68:3306

proxy-read-only-backend-addresses = 192.168.2.243:3306@1

daemon = true

keepalive = true

event-threads = 4

log-level = message

log-path = /usr/local/mysql-proxy/log

instance = instance

proxy-address = 0.0.0.0:1234

admin-address = 0.0.0.0:4401

min-idle-connections = 4

charset = utf8

tables=test.part_tab.c1.3

关于配置的各个配置项的解释,可以查看文档:https://github.com/Qihoo360/Atlas/wiki/%E9%85%8D%E7%BD%AE%E5%8F%82%E6%95%B0%E8%AF%A6%E8%A7%A3

以及https://github.com/Qihoo360/Atlas

 

2、  创建数据库表及授权

因为配置tables=test.part_tab.c1.3使用到了分表,Atlas不会自动建分表,需要自己手动建立三个分表:test.part_tab_0,test.part_tab_1,test.part_tab_2。

在后端服务器192.168.2.243上对代理192.168.3.68授权:

grant all on *.* to root@'192.168.3.68' identified by '';

 

3、  启动、停止和重启

启动:/usr/local/mysql-proxy/bin/mysql-proxyd instance start

停止:/usr/local/mysql-proxy/bin/mysql-proxyd instance stop

重启:/usr/local/mysql-proxy/bin/mysql-proxyd instance restart

 

4、  管理后端

Mysql –uroot –p –P1234 –h127.0.0.1

输入密码回车后进入管理界面,提示信息里面有Server version: 5.0.99-agent-admin字样表示正确进入管理后台。

Select * from help;#可以查看所有能执行的管理命令。

select * from backends #列出所有DB及其状态,up代表可用,down代表不可用

add master IP:port #增加一台主库

add slave IP:port #增加一台从库

remove backend i #移除第i台DB(i代表序号,可以是主库也可以是从库,下同)

set offline i #将第i台DB临时下线

set online i #将第i台DB重新上线

select * from help #显示以上帮助信息

五、测试。

1、  测试读写分离可以通过设置主从不同步,然后通过代理写入后,读取数据的条数来判断是分发到哪个后端了。

2、  每次连接Atlas会分配到一个后端去,所以可以通过产生多个连接来测试,或者一个脚本执行多次来测试。

3、  在测试读写分离时,可以将min-idle-connections设得较小,这样可以在少数几次连接后就看到读写分离的效果。

4、  可以通过查看log/sql_instance.log来知道sql在那台后端执行的。

5、  测试脚本例子:

$link = mysql_connect('127.0.0.1:1234', 'root', '');
 
if (!$link) {
 
die('Could not connect: ' . mysql_error());
 
}
mysql_select_db("test");
 
//$sql="/*master*/select count(*) count from part_tab";
 
$sql="select count(*) count from part_tab";
 
$result=mysql_query($sql);
 
while ($row=mysql_fetch_assoc($result))
{
 
echo $row['count']."\n";
 
}
 
 
 
$sql = "/*master*/ select * from part_tab where c1=244;";
 
$result = mysql_query($sql);
 
while($row=mysql_fetch_assoc($result)){
 
var_dump($row);
 
echo "\n";
 
}
mysql_close($link);

六、其他相关资料。

安装相关:https://github.com/Qihoo360/Atlas

FAQ:https://github.com/Qihoo360/Atlas/wiki/FAQ

架构:https://github.com/Qihoo360/Atlas/wiki/%E6%9E%B6%E6%9E%84

配置:

https://github.com/Qihoo360/Atlas/wiki/%E9%85%8D%E7%BD%AE%E5%8F%82%E6%95%B0%E8%AF%A6%E8%A7%A3

源码及相关文件下载:https://github.com/Qihoo360/Atlas/releases

你可能感兴趣的:(centos下安装Atlas)