1. 程式人生 > >Atlas實現讀寫分離

Atlas實現讀寫分離

幫助 mysq 黑白名單 研發 廣泛 數據庫中間件 sha tid 蘑菇街

該Atlas方案的實現需要基於MHA架構
(而MHA架構需要 實現mysql主從復制且開啟GTID特性)

常見方案介紹:

Mysql-proxy(oracle)
Mysql-router(oracle)
Atlas (Qihoo 360)
Atlas-sharding (Qihoo 360)
Cobar(是阿裏巴巴(B2B)部門開發)
Mycat(基於阿裏開源的Cobar產品而研發)
TDDL Smart Client的方式(淘寶)
DRDS 阿裏雲的產品
Oceanus(58同城數據庫中間件)
OneProxy(原支付寶首席架構師樓方鑫開發 )
vitess(谷歌開發的數據庫中間件)
Heisenberg(百度)
TSharding(蘑菇街白輝)

Xx-dbproxy(金山的Kingshard、當當網的sharding-jdbc )
amoeba

Atlas 是由 Qihoo 360公司Web平臺部基礎架構團隊開發維護的一個基於MySQL協議的數據中間層項目。它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基礎上,修改了大量bug,添加了很多功能特性。目前該項目在360公司內部得到了廣泛應用,很多MySQL業務已經接入了Atlas平臺,每天承載的讀寫請求數達幾十億條。

源碼 Github:?https://github.com/Qihoo360/Atlas

Atlas主要功能

讀寫分離
從庫負載均衡
自動分表
IP過濾
SQL語句黑白名單
DBA可平滑上下線DB
自動摘除宕機的DB

Atlas是一個位於前端應用與後端MySQL數據庫之間的中間件,它使得應用程序員無需再關心讀寫分離、分表等與MySQL相關的細節,可以專註於編寫業務邏輯,同時使得DBA的運維工作對前端應用透明,上下線DB前端應用無感知。

下載地址:https://github.com/Qihoo360/Atlas/releases

註意:
1、Atlas只能安裝運行在64位的系統上
2、Centos 5.X安裝 Atlas-XX.el5.x86_64.rpm,Centos 6.X安裝Atlas-XX.el6.x86_64.rpm。
3、後端mysql版本應大於5.1,建議使用Mysql 5.6以上

1、安裝軟件
rpm -ivh Atlas-2.2.1.el6.x86_64.rpm

2、修改配置

cd /usr/local/mysql-proxy/

vim /usr/local/mysql-proxy/conf/test.cnf
[mysql-proxy]
admin-username = user
admin-password = pwd
proxy-backend-addresses = 10.0.0.55:3306
proxy-read-only-backend-addresses = 10.0.0.51:3306,10.0.0.52:3306
pwds = repl:3yb5jEku5h4=,mha:O2jBXONX098=
daemon = true
keepalive = true
event-threads = 8
log-level = message
log-path = /usr/local/mysql-proxy/log
sql-log=ON
proxy-address = 0.0.0.0:33060
admin-address = 0.0.0.0:2345
charset=utf8

/usr/local/mysql-proxy/bin/encrypt  123      ---->制作加密密碼

3、啟動atlas

/usr/local/mysql-proxy/bin/mysql-proxyd test start
ps -ef |grep proxy

功能使用

測試讀寫分離:

讀的測試

mysql -uroot -p123 -h10.0.0.53 -P33060 
show variables like ‘server_id‘;

寫操作測試:

設置兩個從節點只讀
set global read_only=1;

連接測試

mysql -umha -pmha -h10.0.0.53 -P33060
create database db1;
連接管理接口:
mysql -uuser -ppwd -h127.0.0.1 -P2345

打印幫助:
mysql> select * from help;

動態添加刪除節點:
REMOVE BACKEND 3;
ADD SLAVE 10.0.0.10:3308;
SAVE CONFIG;

測試讀寫分離:
mysql -uuser -ppwd -h127.0.0.1 –P33060
show variables like "server_id";

Atlas實現讀寫分離