來自 360 團隊的基于MySQL數據庫中間層項目:Atlas

jopen 11年前發布 | 42K 次閱讀 Atlas

Atlas是由奇虎360公司Web平臺部基礎架構組開發維護的一個基于MySQL協議的數據中間層項目。它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基礎上,修改了大量bug,添加了很多功能特性。目前該項目在360公司內部得到了廣泛應用,3/4以上的MySQL業務已經接入了Atlas平臺,每天承載的讀寫請求數達20億條以上。

主要功能特性:
1.  自動讀寫分離,對應用透明
2.  自動分表
3.  IP過濾,包括指定具體IP和網段IP
4.  SQL語句黑白名單
5.  字符集和默認數據庫的自動修正
6.  可強制讀主庫,避免從庫的同步延遲
7.  主庫宕機的情況下讀操作不受影響
8.  在掛接LVS的情況下可平滑重啟,應用不感知
9.  自動檢測DB狀態,故障或連接不上的DB自動摘除,不再導入請求,在故障或網絡恢復后自動重新導入請求

  1. 可在線手動將某臺DB設置為上線或下線狀態
  2. 可在線手動增加或減少一臺DB
  3. 從庫間加權的負載均衡

    附名字來源:
        Atlas['?tl?s],希臘神話中雙肩撐天的巨人,普羅米修斯的兄弟,最高大強壯的神之一,因反抗宙斯失敗而被罰頂天。我們期望這個系統能夠腳踏后端DB,為前端應用撐起一片天。

    二、配置文件示例
    [mysql-proxy]    #不需要改
    plugins = admin, proxy    #Atlas加載的模塊名稱,不需要改

    admin-username = user    #管理接口的用戶名
    admin-password = pwd    #管理接口的密碼
    admin-lua-script = /usr/local/mysql-proxy/lib/mysql-proxy/lua/admin.lua    #實現管理接口的Lua腳本所在路徑

    proxy-backend-addresses = 127.0.0.1:3306    #Atlas后端連接的MySQL主庫的IP和端口,可設置多項,用逗號分隔
    proxy-read-only-backend-addresses = 220.181.127.222:3306    #Atlas后端連接的MySQL從庫的IP和端口,可設置多項,用逗號分隔

    daemon = false    #設置Atlas的運行方式,設為true時為守護進程方式,設為false時為前臺方式,一般開發調試時設為false,線上運行時設為true
    keepalive = false    #設置Atlas的運行方式,設為true時Atlas會啟動兩個進程,一個為monitor,一個為worker,monitor在worker意外退出后會自動將其重啟,設為false時只有worker,沒有monitor,一般開發調試時設為false,線上運行時設為true

    event-threads = 4    #工作線程數,推薦設置與系統的CPU核數相等
    log-level = message    #日志級別,分為message、warning、critical、error、debug五個級別
    log-path = /usr/local/mysql-proxy/log    #日志存放的路徑
    instance = test    #實例名稱,用于同一臺機器上多個Atlas實例間的區分

    proxy-address = 0.0.0.0:1234    #Atlas監聽的工作接口IP和端口
    admin-address = 0.0.0.0:2345    #Atlas監聽的管理接口IP和端口

    min-idle-connections = 128    #連接池的最小空閑連接數,可根據業務請求量大小適當調大或調小
    tables = person.mt.id.3    #分表設置,此例中person為庫名,mt為表名,id為分表字段,3為子表數量,可設置多項,以逗號分隔
    pwds = user1:+jKsgB3YAG8=, user2:GS+tr4TPgqc=    #用戶名與其對應的加密過的密碼,密碼使用加密程序encrypt加密,此設置項用于多個用戶名同時訪問同一個Atlas實例的情況,若只有一個用戶名則不需要設置該項
    charset = utf8    #默認字符集,若不設置該項,則默認字符集為latin1

    三、編譯安裝
    依賴:glib、libevent、Lua、OpenSSL

    ./bootstrap.sh    #可能需要修改其中的路徑
    make
    sudo make install

    四、啟動與停止
    進入PREFIX/conf目錄,編輯instance.conf,此處instance的實際名稱應與其中instance設置項相同,其他設置項含義見第二節。

    啟動:
    PREFIX/bin/mysql-proxyd instance start

    停止:
    PREFIX/bin/mysql-proxyd instance stop

    重啟:
    PREFIX/bin/mysql-proxyd instance restart

    查看運行狀態:
    PREFIX/bin/mysql-proxyd instance status

    項目主頁:http://www.baiduhome.net/lib/view/home/1372747065784

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!