標籤:mysql atlas 讀寫分離
一、Atlas介紹
Atlas是由 Qihoo 360, Web平台部基礎架構團隊開發維護的一個基於MySQL協議的資料中介層項目。它是在mysql-proxy 0.8.2版本的基礎上,對其進行了最佳化,增加了一些新的功能特性。360內部使用Atlas啟動並執行mysql業務,每天承載的讀寫請求數達幾十億條。
目前實現比較穩定功能的是讀寫分離.分庫分表還沒那麼的完善..
二、環境:
作業系統版本:CentOS-6.5 64bit
Atlas 版本: 2.2.1
mysql 版本: mysql-5.6.32
192.168.2.45 mysql01 # mysql
192.168.2.46 mysql02 # mysql
192.168.2.47 mysql03 # mysql
192.168.2.48 mysql04 # mysql
192.168.2.40 atlas # atlas
三、安裝部署步驟
1,安裝部署MySQL-Master
2,安裝部署MySQL-Slave
3,安裝部署Atlas
# MySQL-Master/Slave 這裡就不做安裝配置說明了.請參考<<Centos 6.5 安裝配置Mysql MHA>>
1、安裝部署Atlas並配置讀寫分離
# 為了簡單,這裡就使用rpm Or yum 方式安裝Atlas
1.1、下載rpm包
下載軟體地址為請點進去自行下載對應的版本 https://github.com/Qihoo360/Atlas/releases
下載完了之後.如果有yum倉庫的同學可以將Atlas的rpm添加到yum倉庫,即使用yum安裝,
rpm -ivh Atlas-2.2.1.el6.x86_64.rpm
1.2、配置Atlas
# 編輯設定檔
cat /usr/local/mysql-proxy/conf/test.cnf
# 內容如下, End結束
[mysql-proxy]admin-username = adminadmin-password = pwdproxy-backend-addresses = 192.168.2.30:3306proxy-read-only-backend-addresses = 192.168.2.47:3306pwds = root:cSC39iNdNwY+dCK5O+BClA==, backup:yU4TuGo3ReQ= # 要在mysql資料庫機器授權root使用者遠端連線daemon = truekeepalive = trueevent-threads = 4log-level = debuglog-path = /usr/local/mysql-proxy/logproxy-address = 0.0.0.0:33 06admin-address = 0.0.0.0:2345# End
---------------
# 配置Atlas環境變數
echo ‘export PATH=$PATH:/usr/local/mysql-proxy/bin/‘ > /etc/profile.d/atlas.shsource /etc/profile.d/atlas.sh
# 編輯開機指令碼
cat /etc/init.d/atlas
#!/bin/bash##atlas: Atlas Daemon## chkconfig: - 90 25# description: Atlas Daemon## Source function library.start(){ echo -n $"Starting atlas: " /usr/local/mysql-proxy/bin/mysql-proxyd test start echo }stop(){ echo -n $"Shutting down atlas: " /usr/local/mysql-proxy/bin/mysql-proxyd test stop echo}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) stop sleep 3 start ;; *) echo $"Usage: $0 {start|stop|restart}" exit 1esacexit 0
# 設定為開機自動啟動
chmod +x /etc/init.d/atlaschkconfig --add atlaschkconfig atlas on
# 查看監聽連接埠
netstat -tanlp | grep mysqltcp 0 0 0.0.0.0:2345 0.0.0.0:* LISTEN 9111/mysql-proxy tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 9111/mysql-proxy
2345連接埠是Atlas的管理介面,此介面提供了查看mysql狀態,設定上線、下線後端mysql伺服器
存取方法使用mysql命令
mysql -h127.0.0.1 -P2345 -uadmin -ppwd
這裡的使用者名稱密碼是上面設定檔中的admin-username = admin、admin-password = pwd
下面是管理介面的使用協助
SELECT * FROM help; # 查看協助資訊SELECT * FROM backends; # 查看後端主機狀態SET OFFLINE $backend_id # 下線一台主機,$backend_id == SELECT * FROM backends;查出來的IDSET ONLINE $backend_id # 上線一台主機ADD MASTER $backend # 添加一台master節點,如: ADD MASTER 192.168.2.30;ADD SLAVE $backend # 添加一台slave節點,如 : ADD SLAVE 192.168.2.47;REMOVE BACKEND $backend_id # 刪除一個節點,
3306連接埠是用戶端串連此連接埠用來發送sql指令,預設的連接埠為1234,這裡修改為了3306,配置項為proxy-address = 3306
[說明]
1、主庫上綁定vip,在atlas設定檔中主庫設定為vip地址,這樣無論主庫怎麼切換,最終的vip不會改變。atlas永遠把vip對應的伺服器當作主庫。
2、由於備用主庫原來是從庫,即在atlas設定檔中是作為從庫的,故當接管為主庫時,這時該庫既可以寫入也可以讀。故需要手工移除從庫的讀功能。(到管理介面,remove backend idx)
3、如果需要修複原主庫,那麼原主庫作為新主庫的從庫存在。可以手工加入atlas中(add slave ip:port)
[結論]:可以很好的支援MHA切換,但是需要注意以上第2點內容。
本文出自 “讓一切隨風” 部落格,謝絕轉載!
Atlas實現Mysql讀寫分離(結合MHA)