第1章 Atlas簡介
Atlas是360團隊弄出來的一套基於MySQL-Proxy基礎之上的代理,修改了MySQL-Proxy的一些BUG,並且優化了很多東西。而且安裝方便。配置的註釋寫的蠻詳細的,都是中文。
Atlas官方鏈接:https://github.com/Qihoo360/Atlas/blob/master/README_ZH.md
Atlas下載鏈接: https://github.com/Qihoo360/Atlas/releases
1.1 主要功能:
1、讀寫分離
2、從庫負載均衡
3、IP過濾
4、自動分表
5、DBA可平滑上下線DB
6、自動摘除宕機的DB
第2章 安裝atlas
下載Atlas會有兩個版本,其中有個分表的版本,但是這個需要其他的依賴,我這邊不需要分表這種需求,所以安裝普通的版本
Atlas (普通) : Atlas-2.2.1.el6.x86_64.rpm
Atlas (分表) : Atlas-sharding_1.0.1-el6.x86_64.rpm
2.1 下載altas軟件
cd /home/tools
wget https://github.com/Qihoo360/Atlas/releases/download/2.2/Atlas-2.2.el6.x86_64.rpm
(去github上找最新版)
2.2 安裝altas
[root@manager ~]# rpm -ivh Atlas-2.2.el6.x86_64.rpm
Preparing... ########################################### [100%]
1:Atlas ########################################### [100%]
2.3 安裝位置:
/usr/local/mysql-proxy
2.4 配置文件:
/usr/local/mysql-proxy/conf/test.cnf
2.5 服務操作
2.5.1 安裝在/usr/local/mysql-proxy中
2.5.1.1 開啓服務:
/usr/local/mysql-proxy/bin/mysql-proxyd test start;
2.5.1.2 停止:
/usr/local/mysql-proxy/bin/mysql-proxyd test Stop
2.5.1.3 重啓:
/usr/local/mysql-proxy/bin/mysql-proxyd test Restart
2.5.1.4 查看狀態:
/usr/local/mysql-proxy/bin/mysql-proxyd test Status
2.6 配置文件詳解
[mysql-proxy]
#帶#號的爲非必需的配置項目
#管理接口的用戶名
admin-username = user #atlas管理的用戶名
#管理接口的密碼
admin-password = pwd #atlas管理的密碼
#Atlas後端連接的MySQL主庫的IP和端口,可設置多項,用逗號分隔
proxy-backend-addresses = 10.0.0.96:3306
#Atlas後端連接的MySQL從庫的IP和端口,@後面的數字代表權重,用來作負載均衡,若省略則默認爲1,可設置多項,用逗號分隔
proxy-read-only-backend-addresses = 10.0.0.95:3306,10.0.0.97:3306
#用戶名與其對應的加密過的MySQL密碼,密碼使用PREFIX/bin目錄下的加密程序encrypt加密,下行的user1和user2爲示例,將其替換>爲你的MySQL的用戶名和加密密碼!
pwds = root:/iZxz+0GRoA=,rep:/iZxz+0GRoA=,monitor:/iZxz+0GRoA=,ljx:/iZxz+0GRoA=
#設置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 = error
#日誌存放的路徑
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
2.7 Atlas啓動腳本
#!/bin/bash
start() {
/usr/local/mysql-proxy/bin/mysql-proxyd test start
#echo "atlas server is start"
}
stop(){
/usr/local/mysql-proxy/bin/mysql-proxyd test stop
#echo "atlas server is stop"
}
restart(){
/usr/local/mysql-proxy/bin/mysql-proxyd test restart
#echo "atlas server is restart"
}
status(){
/usr/local/mysql-proxy/bin/mysql-proxyd test status
}
case $1 in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
status)
status
;;
*)
echo $"Usage: $0 {start|stop|restart}"
exit 1
esac
第3章 操作管理:
3.1 在mysql主庫授權一個可用於管理的用戶
grant all on *.* to ljx@'10.0.0.%' identified by '123456';
3.2 遠程登陸測試(任意一臺mysql或者使用軟件登陸)
[root@slave1 ~]# mysql -uljx -p123456 -h10.0.0.100 -P1234
3.2.1 測試負載均衡
第二臺從庫的信息
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| t97 |
| test |
| ttt |
+--------------------+
6 rows in set (0.01 sec)
第一臺從庫的信息
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| t95 |
| test |
| ttt |
+--------------------+
6 rows in set (0.00 sec)
說明:從庫上面只能讀不能寫,主庫可讀可寫
第4章 企業讀寫分離及分庫分表方案介紹
Mysql-proxy (oracle)
Mysql-router (oracle)
Atlas (Qihoo 360)
Atlas-sharding (Qihoo 360)
Cobar (阿里巴巴(B2B)部門開發)
Mycat 基於阿里開源cobar產品而研發)
TDDL Smart Client的方式 (淘寶)
Oceanus (58同城數據庫中間件)
OneProxy (原支付寶首席架構師樓方信開發)
Vitess (谷歌開發的數據庫中間件)
Heisenberg (百度)
TSharding (蘑菇街白輝)
Xx-dbproxy (金山的Kingshard、噹噹網的sharding-jdbc)
amoeba