Atlas安裝與部署
來自: http://my.oschina.net/blogcharles/blog/624802
1.簡介
Atlas是由 Qihoo 360公司Web平臺部基礎架構團隊開發維護的一個基于MySQL協議的數據中間層項目。它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基礎上,修改了大量bug,添加了很多功能特性。目前該項目在360公司內部得到了廣泛應用,很多MySQL業務已經接入了Atlas平臺,每天承載的讀寫請求數達幾十億條。同時,有超過50家公司在生產環境中部署了Atlas。
主要功能:
1. 讀寫分離
2. 從庫負載均衡
3. IP過濾
4. 自動分表
5. DBA可平滑上下線DB
6. 自動摘除宕機的DB
2.CENTOS下安裝ATLAS
從https://github.com/Qihoo360/Atlas/releases 頁面下載最新版RPM包,然后執行:
sudo rpm –i Atlas-XX.el6.x86_64.rpm
安裝。
注意事項:
(1).Atlas只能安裝運行在64位的系統上。
(2).Centos 5.X安裝 Atlas-XX.el5.x86_64.rpm,Centos 6.X安裝Atlas-XX.el6.x86_64.rpm。
(3).如果執行
sudo rpm –i Atlas-XX.el6.x86_64.rpm
提示類似:“file /usr/local/mysql-proxy/bin/encrypt from install of
Atlas-2.0.1-1.x86_64 conflicts with file from package Atlas-1.0.3-1.x86_64”錯誤,則表示該系統之前已經安裝過Atlas-1.0.3-1.x86_64,需要執行
sudo rpm –e Atlas-1.0.3-1.x86_64
將之前安裝的Atlas刪除掉,再執行
sudo rpm –i Atlas-XX.el6.x86_64.rpm
安裝新版本的Atlas。
(4).后端mysql版本應大于5.1,建議使用Mysql 5.6
配置文件修改
Atlas運行需要依賴一個配置文件(test.cnf)。在運行Atlas之前,需要對該文件進行配置。Atlas的安裝目錄是/usr/local/mysql-proxy,進入安裝目錄下的conf目錄,可以看到已經有一個名為test.cnf的默認配置文件,我們只需要修改里面的某些配置項,不需要從頭寫一個配置文件。
1.配置范例及說明如下:
[mysql-proxy]
(必備,默認值即可)管理接口的用戶名,PS:并不是數據庫用戶名
admin-username = cekom
(必備,默認值即可)管理接口的密碼
admin-password = 123456
(必備,根據實際情況配置)主庫的IP和端口
proxy-backend-addresses = 172.16.20.212:3306
(非必備,根據實際情況配置)從庫的IP和端口,@后面的數字代表權重,用來作負載均衡,若省略則默認為1,可設置多項,用逗號分隔。如果想讓主庫也能分擔讀請求的話,只需要將主庫信息加入到下面的配置項中。
proxy-read-only-backend-addresses=172.16.20.240:3306
(必備,根據實際情況配置)用戶名與其對應的加密過的MySQL密碼,密碼使用PREFIX/bin目錄下的加密程序encrypt加密,用戶名與密碼之間用冒號分隔。主從數據庫上需要先創建該用戶并設置密碼(用戶名和密碼在主從數據庫上要一致)。
比如用戶名為myuser,密碼為mypwd,執行./encrypt mypwd結果為HJBoxfRsjeI 操作所在目錄:/usr/local/mysql-proxy/
如果有多個用戶用逗號分隔即可。則設置如下行所示:
pwds = myuser: HJBoxfRsjeI=,myuser2:HJBoxfRsjeI=
Atlas原理為進行代理端的校驗通過后將密碼發送至后端mysql數據庫
(必備,默認值即可)Atlas的運行方式,設為true時為守護進程方式,設為false時為前臺方式,一般開發調試時設為false,線上運行時設為true
daemon = true
(必備,默認值即可)設置Atlas的運行方式,設為true時Atlas會啟動兩個進程,一個為monitor,一個為worker,monitor在worker意外退出后會自動將其重啟,設為false時只有worker,沒有monitor,一般開發調試時設為false,線上運行時設為true
keepalive = true
(必備,根據實際情況配置)工作線程數,若單機只運行Atlas推薦設置成系統的CPU核數的2至4倍
event-threads = 4
(必備,默認值即可)日志級別,分為message、warning、critical、error、debug五個級別,推薦設置成debug,能查看完整的調試信息
log-level = message
(必備,默認值即可)日志存放的路徑
log-path = /usr/local/mysql-proxy/log
(必備,根據實際情況配置)SQL日志的開關,可設置為OFF、ON、REALTIME,OFF代表不記錄SQL日志,ON代表記錄SQL日志,該模式下日志刷新是基于緩沖區的,當日志填滿緩沖區后,才將日志信息刷到磁盤。REALTIME用于調試,代表記錄SQL日志且實時寫入磁盤,默認為OFF,生產環境中最好設置為ON便于查找執行SQL
sql-log = ON
(可選項,可不設置)慢日志輸出設置。當設置了該參數時,則日志只輸出執行時間超過sql-log-slow(單位:ms)的日志記錄。不設置該參數則輸出全部日志。
sql-log-slow = 10
(可選項,可不設置)關閉不活躍的客戶端連接設置。當設置了該參數時,Atlas會主動關閉經過'wait-timeout'時間后一直未活躍的連接。單位:秒
wait-timeout = 10
(可選項,可不設置)實例名稱,用于同一臺機器上多個Atlas實例間的區分
instance = test
(必備,默認值即可)Atlas監聽的工作接口IP和端口
proxy-address = 0.0.0.0:6033
(必備,默認值即可)Atlas監聽的管理接口IP和端口
admin-address = 0.0.0.0:2345
(可選項,可不設置)分表設置,此例中person為庫名,mt為表名,id為分表字段,3為子表數量,可設置多項,以逗號分隔,若不分表則不需要設置該項,子表需要事先建好,子表名稱為表名_數字,數字范圍為[0,子表數-1],如本例里,子表名稱為mt_0、mt_1、mt_2
tables = person.mt.id.3
(可選項,可不設置)默認字符集,若不設置該項,則默認字符集為latin1,最好設置為與數據庫字符集相同的編碼如:UTF-8出現亂碼
charset = utf8
(可選項,可不設置)允許連接Atlas的客戶端的IP,可以是精確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
性能配置說明
以下配置參數對性能和正常運行起到重要作用,需要正確設置。
event-threads項設置,過小無法充分發揮多核CPU的性能,過大造成不必要的線程切換開銷,推薦設置為CPU的核數。
以下幾項可以設置,也可以使用默認值,區別不大。
(1)Atlas的工作端口
proxy-address項配置,例如proxy-address = 0.0.0.0:6033代表客戶端應該使用6033這個端口連接Atlas來發送SQL請求。
(2)Atlas的管理端口
admin-address項配置,例如admin-address = 0.0.0.0:2345代表DBA應該使用2345這個端口連接Atlas來執行運維管理操作。
(3)管理接口的用戶名和密碼
admin-username項和admin-password項設置,這兩項是用來進入Atlas的管理界面的,與后端連接的MySQL沒有關系,所以可以任意設置,不需要MySQL在配置上做任何改動。
Atlas安裝后檢測
啟動命令:
./bin/mysql-proxyd test start
注test為實例名稱,當conf文件夾下只有一個配置文件時與配置文件名稱相同,若conf文件夾下有兩個.cnf文件時需要指定實例名稱
利用
ps –ef | grep mysql-proxy
獲取進程狀態