1.atlas 簡介 Atlas是由 Qihoo 360公司Web平臺部基礎架構團隊開發維護的一個基於MySQL協議的數據中間層項目。它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基礎上,修改了大量bug,添加了很多功能特性。目前該項目在360公司內部得到了廣泛應用。 Atlas官 ...
1.atlas 簡介
Atlas是由 Qihoo 360公司Web平臺部基礎架構團隊開發維護的一個基於MySQL協議的數據中間層項目。它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基礎上,修改了大量bug,添加了很多功能特性。目前該項目在360公司內部得到了廣泛應用。
Atlas官方鏈接: https://github.com/Qihoo360/Atlas/blob/master/README_ZH.md
2.mysql主從配置
主從複製,此處不過多講,詳細請看https://www.cnblogs.com/mushou/p/9446352.html
但是需要在主從授權一個用戶
grant all on *.* to 'buck'@'%' identified by '123456';
flush privileges;
3.atlas配置
1)安裝
wget https://github.com/Qihoo360/Atlas/releases/download/2.2.1/Atlas-2.2.1.el6.x86_64.rpm
rpm -ivh Atlas-2.2.1.el6.x86_64.rpm
安裝好了,它會預設在”/usr/local/mysql-proxy”下給你生成4個文件夾,以及需要配置的文件,如下:
drwxr-xr-x. 2 root root 4096 Dec 28 10:47 bin drwxr-xr-x. 2 root root 4096 Dec 28 10:47 conf
drwxr-xr-x. 3 root root 4096 Dec 28 10:47 lib
drwxr-xr-x. 2 root root 4096 Dec 17 2014 log
bin目錄下放的都是可執行文件
“encrypt”是用來生成MySQL密碼加密的,在配置的時候會用到
“mysql-proxy”是MySQL自己的讀寫分離代理
“mysql-proxyd”,後面有個“d”,服務的啟動、重啟、停止。都是用他來執行的
conf目錄下放的是配置文件
“test.cnf”只有一個文件,用來配置代理的,可以使用vim來編輯
lib目錄下放的是一些包,以及Atlas的依賴
log目錄下放的是日誌,如報錯等錯誤信息的記錄
進入bin目錄,使用encrypt來對資料庫的密碼進行加密,我的MySQL數據的用戶名是buck,密碼是123456,我需要對密碼進行加密
./encrypt 123456
2)配置
配置Atlas,使用vim進行編輯
cd /usr/local/mysql-proxy/conf/
vim test.cnf
進入後,可以在Atlas進行配置,360寫的中文註釋都很詳細,根據註釋來配置信息,其中比較重要,需要說明的配置如下:
這是用來登錄到Atlas的管理員的賬號與密碼,與之對應的是“#Atlas監聽的管理介面IP和埠”,也就是說需要設置管理員登錄的埠,才能進入管理員界面,預設埠是2345,也可以指定IP登錄,指定IP後,其他的IP無法訪問管理員的命令界面。方便測試,我這裡沒有指定IP和埠登錄。
#管理介面的用戶名
admin-username = user
#管理介面的密碼
admin-password = pwd
這是用來配置主數據的地址與從資料庫的地址,這裡配置的主資料庫是1.2,從資料庫是1.12
#Atlas後端連接的MySQL主庫的IP和埠,可設置多項,用逗號分隔
proxy-backend-addresses = 172.16.1.2:3306
#Atlas後端連接的MySQL從庫的IP和埠,@後面的數字代表權重,用來作負載均衡,若省略則預設為1,可設置多項,用逗號分隔
proxy-read-only-backend-addresses = 172.16.1.12:3306@1
這個是用來配置MySQL的賬戶與密碼的,我的MySQL的用戶是buck,密碼是123456,剛剛使用Atlas提供的工具生成了對應的加密密碼
#用戶名與其對應的加密過的MySQL密碼,密碼使用PREFIX
/bin目錄下的加密程式encrypt加密,下行的user1和user2為示例,將其替換為你的MySQL的用戶名和加密密碼!
pwds = buck:RePBqJ+5gI4= #為encrypt 生成的密文
這是設置工作介面與管理介面的,如果ip設置的”0.0.0.0”就是說任意IP都可以訪問這個介面,當然也可以指定IP和埠,方便測試我這邊沒有指定,工作介面的用戶名密碼與MySQL的賬戶對應的,管理員的用戶密碼與上面配置的管理員的用戶密碼對應。
#Atlas監聽的工作介面IP和埠
proxy-address = 0.0.0.0:1234
#Atlas監聽的管理介面IP和埠
admin-address = 0.0.0.0:2345
啟動Atlas
./mysql-proxyd test start
OK: MySQL-Proxy of test is started
用如下命令,進入Atlas的管理模式“mysql -h127.0.0.1 -P2345 -uuser -ppwd ”,能進去說明Atlas正常運行著呢,因為它會把自己當成一個MySQL資料庫,所以在不需要資料庫環境的情況下,也可以進入到MySQL資料庫模式。
[root@localhost bin]# mysql -h127.0.0.1 -P2345 -uuser -ppwd
Welcome to the MySQL monitor. Commands end with ; or \g.
Copyright (c) 2000, 2013, Oracle and/or its affiliates.
All rights reserved. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
quit
3.測試
目前主從mysql的資料庫同步,兩個庫的數據相同, 為了便於測試寫數據在主mysql,讀書在 從mysql,我們先停從同步
stop slave;
在測試機上登錄atlas 伺服器,mysql -ubuck -p123456 -h 172.16.1.1 -P 1234
此處 用戶名為buck, 密碼123456,主機ip為atlas 伺服器ip,埠 1234,
登錄成功,做寫數據測試
use test;
insert into yst values(‘‘,‘’,‘’,‘’);#此處簡要
到主mysql上查看
select * from yst;
可以看到,說明寫數據是寫在主msql伺服器
在從MySQL伺服器上寫入數據,此處寫入數據純粹是為了測試我們讀數據時,是查看到從mysql伺服器查看數據;
insert into yst values(‘‘,‘’,‘’,‘’);#此處簡要
在測試機上登錄atlas 伺服器,mysql -ubuck -p123456 -h 172.16.1.1 -P 1234
查看 select * from yst;
可以查看到客戶端添加的數據。
至此,讀寫測試成功,也就是寫數據到主mysql,讀數據是在從mysql上讀取。