1.环境
OS: CentOS 6.5 x64
MySQL: 5.6 for Linux (x86_64)
Atlas IP : 192.168.10.180
MySQL Master IP : 192.168.10.181
MySQL Slave IP : 192.168.10.182
注意:先将MySQL的主从复制配置好。
MySQL源码安装可以参考:http://blog.csdn.net/john_chang11/article/details/51593220
MySQL RPM安装可以参考:http://blog.csdn.net/john_chang11/article/details/51622725
2.Atlas准备
使用是支持分片的最新版本:Atlas-sharding_1.0.1,使用rpm包安装,下载地址:https://github.com/Qihoo360/Atlas/releases/
想要看源码的可以看这里:https://github.com/Qihoo360/Atlas/tree/sharding
atlas官网上给出了以下提示:
(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.
3.Atlas安装
sudo rpm –i Atlas-XX.el6.x86_64.rpm安装。就这么简单。
安装目录在:/usr/local/mysql-proxy
目录内容如下:
[root@test1 ~]# cd /usr/local/mysql-proxy/
[root@test1 mysql-proxy]# ls
bin conf include lib libexec log share
4.配置文件修改
配置文件在./conf目录下,默认有个test.cnf文件,里面有所有的配置项,只要复制修改这个文件就行。
[root@test1 mysql-proxy]# cd conf/
[root@test1 conf]# vi test.cnf
[mysql-proxy]
(必备,默认值即可)管理接口的用户名。这是Atlas的管理用户与MySQL库的用户没有任何关系,可以随便配置。后面会有该用户的使用说明 admin-username = user
(必备,默认值即可)管理接口的密码 admin-password = 111
(必备,根据实际情况配置)主库的IP和端口
proxy-backend-addresses =192.168.10.181:3306
(非必备,根据实际情况配置)从库的IP和端口,@后面的数字代表权重,用来作负载均衡,若省略则默认为1,可设置多项,用逗号分隔。如果想让主库也能分担读请求的话,只需要将主库信息加入到下面的配置项中。
proxy-read-only-backend-addresses =192.168.10.182:3306@1
(必备,根据实际情况配置)用户名与其对应的加密过的MySQL密码,密码使用PREFIX/bin目录下的加密程序encrypt加密,用户名与密码之间用冒号分隔。主从数据库上需要先创建该用户并设置密码(用户名和密码在主从数据库上要一致)。比如用户名为user,密码为111,执行./encrypt mypwd结果为9YGoyKZPMdg=。如果有多个用户用逗号分隔即可。则设置如下行所示:
pwds = user: 9YGoyKZPMdg=,user2:HJBoxfRsjeI=
(必备,默认值即可)Atlas的运行方式,设为true时为守护进程方式,设为false时为前台方式,一般开发调试时设为false,线上运行时设为true daemon = true
(必备,默认值即可)设置Atlas的运行方式,设为true时Atlas会启动两个进程,一个为monitor,一个为worker,monitor在worker意外退出后会自动将其重启,设为false时只有worker,没有monitor,一般开发调试时设为false,线上运行时设为true keepalive = true
(必备,根据实际情况配置)工作线程数,推荐设置成系统的CPU核数的2至4倍。Atlas官网上推荐设置为CPU的核数。本人推荐设置为CPU核数的1到2倍。 event-threads = 4
(必备,默认值即可)日志级别,分为message、warning、critical、error、debug五个级别 log-level = message
(必备,默认值即可)日志存放的路径 log-path = /usr/local/mysql-proxy/log
(必备,根据实际情况配置)SQL日志的开关,可设置为OFF、ON、REALTIME,OFF代表不记录SQL日志,ON代表记录SQL日志,该模式下日志刷新是基于缓冲区的,当日志填满缓冲区后,才将日志信息刷到磁盘。REALTIME用于调试,代表记录SQL日志且实时写入磁盘,默认为OFF。这里的日志是Atlas的日志,与MySQL的日志无关。 sql-log = OFF
(可选项,可不设置)慢日志输出设置。当设置了该参数时,则日志只输出执行时间超过sql-log-slow(单位:ms)的日志记录。不设置该参数则输出全部日志。 sql-log-slow = 10
(可选项,可不设置)关闭不活跃的客户端连接设置。当设置了该参数时,Atlas会主动关闭经过'wait-timeout'时间后一直未活跃的连接。单位:秒 wait-timeout = 10
#实例名称,用于同一台机器上多个Atlas实例间的区分。同一台机器上的多个Atlas实例,使用不同的端口,对应不同数据库,使用各自的配置文件。 instance = test
(必备,默认值即可)Atlas监听的工作接口IP和端口 proxy-address = 192.168.10.180:1234
(必备,默认值即可)Atlas监听的管理接口IP和端口。登录这个地址就要使用这个配置文件最开始时配置的用户和密码。 admin-address = 192.168.10.180:2345
(可选项,可不设置)分表设置,此例中person为库名,mt为表名,id为分表字段,3为子表数量,可设置多项,以逗号分隔,若不分表则不需要设置该项,子表需要事先建好,子表名称为表名_数字,数字范围为[0,子表数-1],如本例里,子表名称为mt_0、mt_1、mt_2。关于分表会专门文章介绍,这里不配置分表。 #tables = person.mt.id.3
(可选项,可不设置)默认字符集,若不设置该项,则默认字符集为latin1。为了支持汉字,需要配置成utf8。 charset = utf8
(可选项,可不设置)允许连接Atlas的客户端的IP,可以是精确IP,也可以是IP段,以逗号分隔,若不设置该项则允许所有IP连接,否则只允许列表中的IP连接 #client-ips = 127.0.0.1, 192.168.1
(可选项,极少需要)Atlas前面挂接的LVS的物理网卡的IP(注意不是虚IP),若有LVS且设置了client-ips则此项必须设置,否则可以不设置 #lvs-ips = 192.168.1.1