美文网首页
2019-08-11 读写分离Atlas工具实践

2019-08-11 读写分离Atlas工具实践

作者: 阿丧小威 | 来源:发表于2019-08-11 17:36 被阅读0次

    1. 什么是Atlas

    Atlas是由QIHU360软件有限公司的Web平台部门的基础架构团队开发和维护的、基于MySQL协议的数据库中间件项目。它修复了大量的Bug,并在MySQL-Proxy 0.8.2的基础上添加了许多新功能。目前该项目已广泛应用于QIHU公司,许多MySQL业务均已连接到Atlas平台。Atlas转发的读取和写入请求数量已达到数十亿。
    读写分离:为了确保数据库产品的稳定性,很多数据库都拥有双机热备功能。也就是说,第一台数据库服务器,是对外提供增、删、改业务的生产服务器;第二台数据库服务器,则主要是进行读的操作。

    2. Atlas的主要功能

    Atlas的主要功能具体如下:

    • 读/写分离
    • 从库负载均衡
    • IP过滤
    • 数据分片,自动分表
    • DBA可平滑上下线数据库
    • 自动删除宕机的数据库服务器
    • 不停机重新加载配置文件

    3. Atlas与官方mysql-proxy的对比

    • Atlas将主流程中所有的Lua代码用C语言进行重写,Lua仅用于管理接口
    • 重写网络模型、线程模型
    • 实现了真正意义上的连接池
    • 优化了锁机制,性能提高数十倍

    4. 安装Atlas

    根据官方提供的安装包,Atlas分为如下两种:

    • Atlas(普通):Atlas-2.2.1.el6.x86_64.rpm
    • Atlas(分片):Atlas-sharding_1.0.1-el6.x86_64.rpm
    下载Atlas安装包(普通)
    wget https://github.com/Qihoo360/Atlas/releases/download/2.2.1/Atlas-2.2.1.el6.x86_64.rpm
    安装Atlas
    rpm -ivh Atlas-2.2.1.el6.x86_64.rpm
    

    5. Atlas配置文件

    Atlas配置文件的代码如下:

    [root@vip ~]# cat /usr/local/mysql-proxy/conf/test.cnf 
    [mysql-proxy]
    
    #带#号的为非必需的配置项目
    
    #管理接口的用户名
    admin-username = user
    
    #管理接口的密码
    admin-password = pwd
    
    #Atlas后端连接的MySQL主库的IP和端口,可设置多项,用逗号分隔
    proxy-backend-addresses = 127.0.0.1:3306
    
    #Atlas后端连接的MySQL从库的IP和端口,@后面的数字代表权重,用来作负载均衡,若省略则默认为1,可设置多项,用逗号分隔
    #proxy-read-only-backend-addresses = 127.0.0.1:3305@1
    
    #用户名与其对应的加密过的MySQL密码,密码使用PREFIX/bin目录下的加密程序encrypt加密,下行的user1和user2为示例,将其替换为你的MySQL的用户名和加密密码!
    pwds = user1:+jKsgB3YAG8=, user2:GS+tr4TPgqc=
    
    #设置Atlas的运行方式,设为true时为守护进程方式,设为false时为前台方式,一般开发调试时设为false,线上运行时设为true,true后面不能有空格。
    daemon = true
    
    #设置Atlas的运行方式,设为true时Atlas会启动两个进程,一个为monitor,一个为worker,monitor在worker意外退出后会自动将其重启,设为false时只有worker,没有monitor,一般开发调试时设为false,线上运行时设为true,true后面不能有空格。
    keepalive = true
    
    #工作线程数,对Atlas的性能有很大影响,可根据情况适当设置
    event-threads = 8
    
    #日志级别,分为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
    #sql-log = OFF
    
    #慢日志输出设置。当设置了该参数时,则日志只输出执行时间超过sql-log-slow(单位:ms)的日志记录。不设置该参数则输出全部日志。
    #sql-log-slow = 10
    
    #实例名称,用于同一台机器上多个Atlas实例间的区分
    #instance = test
    
    #Atlas监听的工作接口IP和端口
    proxy-address = 0.0.0.0:1234
    
    #Atlas监听的管理接口IP和端口
    admin-address = 0.0.0.0:2345
    
    #分表设置,此例中person为库名,mt为表名,id为分表字段,3为子表数量,可设置多项,以逗号分隔,若不分表则不需要设置该项
    #tables = person.mt.id.3
    
    #默认字符集,设置该项后客户端不再需要执行SET NAMES语句
    #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
    

    提示:对用户密码加密,在/usr/local/mysql-proxy/bin下有个encrypt工具,执行该工具将需要加密的密码输入在后面即可。

    例如:
    root的密码是oldboy123
    /usr/local/mysql-proxy/bin/encrypt oldboy123
    执行后会出现如下加密后的密码,写入配置文件即可
    1N/CNLSgqXuTZ6zxvGQr9A==
    Altas配置文件示例:
    [mysql-proxy]
    admin-username = user
    admin-password = pwd
    proxy-backend-addresses = 10.0.0.55:3306    ---指定后端主master写入数据
    proxy-read-only-backend-addresses = 10.0.0.52:3306,10.0.0.53:3306    ---指定后端从slave读取数据
    pwds = root: 1N/CNLSgqXuTZ6zxvGQr9A==
    daemon = true
    event-threads = 8
    log-level = message
    log-path = /usr/local/mysql-proxy/log
    sql-log==ON
    proxy-address = 0.0.0.0:33060
    admin-address = 0.0.0.0:2345
    charset=utf8
    

    6. 启动Atlas

    启动Atlas代码如下:

    /usr/local/mysql-proxy/bin/mysql-proxyd user start    ---user为配置文件中配置的实例名字,可自行更改
    

    7. Atlas管理操作

    通过配置文件中的配置,可以使用管理用户、管理密码及管理端口,连接到Atlas:

    根据上文配置连接atlas
    mysql -uuser -ppwd -h127.0.0.1 -P2345
    查看帮助
    select * from help;
    测试读写分离:
    mysql -uuser -ppwd -h127.0.0.1 -P33060
    show variables like "server_id";
    

    相关文章

      网友评论

          本文标题:2019-08-11 读写分离Atlas工具实践

          本文链接:https://www.haomeiwen.com/subject/syjsjctx.html