Atlas讀寫分離服務

第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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章