簡介
Atlas是由 Qihoo 360公司Web平台部基礎架構團隊開發維護的一個基於MySQL協議的數據中間層項目。它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基礎上,修改了大量bug,添加了很多功能特性。而且安裝方便。配置的注釋寫的蠻詳細的,都是中文。
主要功能
- 讀寫分離
- 從庫負載均衡
- IP過濾
- 自動分表
- DBA可平滑上下線DB
- 自動摘除宕機的DB
相關鏈接
Mysql中間件產品比較:http://songwie.com/articlelist/44
Atlas的安裝:https://github.com/Qihoo360/Atlas/wiki/Atlas的安裝
Atlas功能特點FAQ:https://github.com/Qihoo360/Atlas/wiki/Atlas功能特點FAQ
Atlas性能特點:https://github.com/Qihoo360/Atlas/wiki/Atlas的性能測試
Atlas架構:https://github.com/Qihoo360/Atlas/wiki/Atlas的架構
Atlas+Keepalived:http://sofar.blog.51cto.com/353572/1601552
Atlas各項功能驗證:http://blog.itpub.net/27000195/viewspace-1421262/
官網教程很詳細,且是中文,這里就不詳述相關安裝過程了
設置開機自啟動
echo "/usr/local/mysql-proxy/bin/mysql-proxyd test start" >> /etc/rc.local
添加atlas服務
# 編寫簡單的Atlas啟動腳本
vim /etc/init.d/atlas
#!/bin/sh
start()
{
/usr/local/mysql-proxy/bin/mysql-proxyd test start
}
stop()
{
/usr/local/mysql-proxy/bin/mysql-proxyd test stop
}
status()
{
/usr/local/mysql-proxy/bin/mysql-proxyd test status
}
restart()
{
/usr/local/mysql-proxy/bin/mysql-proxyd test restart
}
ATLAS="/usr/local/mysql-proxy/bin/mysql-proxyd"
[ -f $ATLAS ] || exit 1
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
status)
status
;;
# stop sleep 3 start ;;
*)
echo $"Usage: $0 {start|stop|status|restart}"
exit 1
esac
exit 0
# atlas服務驗證
service atlas status
service atlas start
service atlas restart
service atlas stop
查看MySQL監聽端口
etstat -tanlp | grep mysql
tcp 0 0 0.0.0.0:2345 0.0.0.0:* LISTEN 21449/mysql-proxy
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 24096/mysqld
tcp 0 0 0.0.0.0:1234 0.0.0.0:* LISTEN 21449/mysql-proxy
Atlas安裝及卸載
# 安裝
sudo rpm -i Atlas-2.2.1.el6.x86_64.rpm
# 卸載
sudo rpm -e Atlas-2.2.1.el6.x86_64
問題相關
**問題:atlas安裝后,讀寫分離測試,為什么讀一直走主庫 **
回答:有事務存在的情況下,會強制走主庫。解決方法,添加注解[@Transactional(propagation=Propagation.NOT_SUPPORTED)];
若不涉及事務,檢查主從庫的用戶名密碼配置是否一致,是否設置為允許遠程登錄,並執行[FLUSH PRIVILEGES]。
問題:讀寫分離自測成功,java程序連接Atlas后卻不能讀寫分離,所有的請求都發向主庫,這是為什么?
回答:檢查一下java框架,是不是默認將autocommit設置為0了,很多java框架將語句都封裝在一個事務中,而Atlas會將事務請求都發向主庫。
問題:執行相關命令,成功上下線從庫DB后,為什么從庫仍然可以同步主庫數據
回答:atlas是中間件,只是提供了訪問層的代理,代理和主從沒有關系,數據庫的主從還需自己配置。而上下線從庫DB,只是說讀的請求不再發往相應的從庫了,事先配置的主從關系並不會改變。還有目前的atlas暫不支持多主模式。
問題:Atlas碰到解決不了的問題怎么辦?
回答:將相關環境、步驟和運行截圖發郵件至zhuchao[AT]360.cn,或者加QQ群326544838。我一問題糾結了幾小時,然后發送郵件了,三分鍾后就回復我了,震驚了 (¯﹃¯)
更新中。。。