GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' identified by 'mysql';
FLUSH PRIVILEGES;
主從庫上全做
--------------------------------------------------------------------
yum install -y gcc*
rpm -ivh Atlas-2.2.1.el5.x86_64.rpm ? 【rpm包直接安裝】
rpm -ql Atlas 【查看安裝路徑】
grep -v '^#' /usr/local/mysql-proxy/conf/test.cnf ?|grep -v '^$' ?> /usr/local/mysql-proxy/conf/lipengfei ?【過濾垃圾提示符】
mv test.cnf test.cnf.old
cat /usr/local/mysql-proxy/conf/lipengfei > /usr/local/mysql-proxy/conf/test.cnf?
rm -rf /usr/local/mysql-proxy/conf/lipengfei
/usr/local/mysql-proxy/bin/encrypt mysql ? ? ? ? ? 【mysql是我的密碼,把密碼加密】
TWbz0dlu35U=
vi /usr/local/mysql-proxy/conf/test.cnf
[mysql-proxy]
plugins = admin,proxy
admin-username=admin
admin-password=admin
admin-lua-script = /usr/local/mysql-proxy/lib/mysql-proxy/lua/admin.lua
proxy-backend-addresses = 192.168.8.100:3306
proxy-read-only-backend-addresses = 192.168.8.101:3306,192.168.8.102:3306
pwds = root:TWbz0dlu35U=
daemon = true
keepalive = true
event-threads = 8
log-level = message
log-path = /usr/local/mysql-proxy/log
instance = test
proxy-address = 0.0.0.0:1234
admin-address = 0.0.0.0:5678
charset = utf8
查看監聽端口
netstat -tanlp | grep mysql
開啟?
/usr/local/mysql-proxy/bin/mysql-proxyd test start
/usr/local/mysql-proxy/bin/mysql-proxyd test stop
登錄管理
mysql -h 192.168.8.103 -P 5678 -u admin -padmin
正常通過代理操作
mysql -h 192.168.8.103 -P 1234 -u root -pmysql
SHOW VARIABLES LIKE 'server_id';
mysql> select * from help;
+-------------------+---------------------------------------+
| command ? ? ? ? ? ? ? ? ?| description ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |
+-------------------+---------------------------------------+
| SELECT * FROM help ? ? ? ? | shows this help ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |
| SELECT * FROM backends ? ? | lists the backends and their state ? ? ? ? ? ? ? ? ? ? ?|
| SET OFFLINE $backend_id ? | offline backend server, $backend_id is backend_ndx's id ?|
| SET ONLINE $backend_id ? ? | online backend server, ... ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|
| ADD MASTER $backend ? ? ? ?| example: "add master 127.0.0.1:3306", ... ? ? ? ? ? ? ? |
| ADD SLAVE $backend ? ? ? ? | example: "add slave 127.0.0.1:3306", ... ? ? ? ? ? ? ? ?|
| REMOVE BACKEND $backend_id | example: "remove backend 1", ... ? ? ? ? ? ? ? ? ? ? ? ?|
| ADD CLIENT $client ? ? ? ? | example: "add client 192.168.1.2", ... ? ? ? ? ? ? ? ? ?|
| REMOVE CLIENT $client ? ? ?| example: "remove client 192.168.1.2", ... ? ? ? ? ? ? ? |
| SAVE CONFIG ? ? ? ? ? ? ? ?| save the backends to config file ? ? ? ? ? ? ? ? ? ? ? ?|
+-------------------+---------------------------------------+
10 rows in set (0.00 sec)
mysql> select * from backends;
+-------------+-------------------+-------+------+
| backend_ndx ? ? ? | ? ? ? ? ? address ? ? ? ?| state ? ?| ?type ? |
+-------------+-------------------+-------+------+
| ? ? ? ? ? 1 ? ? ?| 192.168.0.42:3306 ? ? ? ? | down ? ? | rw ? ? ?|
| ? ? ? ? ? 2 ? ? ?| 192.168.0.44:3306 ? ? ? ? | down ? ? | ro ? ? ?|
| ? ? ? ? ? 3 ? ? ?| 192.168.0.43:3306 ? ? ? ? | down ? ? | ro ? ? ?|
+-------------+-------------------+-------+------+
3 rows in set (0.00 sec)
5678端口:是Atlas的管理接口,此接口提供了查看mysql狀態,設置上線、下線后端mysql服務器
訪問方法使用mysql命令
mysql -h 10.142.132.50 -P2345 -u admin -p'admin'
這里的用戶名密碼是上面配置文件中的admin-username = admin、admin-password = admin
下面是管理接口的使用幫助
SELECT * FROM help; ?# 查看幫助信息
SELECT * FROM backends; # 查看后端主機狀態
SET OFFLINE $backend_id ?# 下線一臺主機,$backend_id == SELECT * FROM backends;查出來的ID
SET ONLINE $backend_id ? # 上線一臺主機
ADD MASTER $backend ? ? ?# 添加一臺master節點,如: ADD MASTER 10.57.1.131;
ADD SLAVE $backend ? ? ? # 添加一臺slave節點,如 : ADD SLAVE 10.57.1.132;
REMOVE BACKEND $backend_id # 刪除一個節點,
自動讀寫分離挺好,但有時候我寫完馬上就想讀,萬一主從同步延遲怎么辦?
A: SQL語句前增加 /*master*/ 就可以將讀請求強制發往主庫
---------------------------------------------------------------------
將atlas設置成服務,并實現開機自動啟動
# 說明:作者僅在CentOS7.0上進行了測試,而且沒有進行可靠性和穩定性的測試!
cp /tmp/atlas /etc/rc.d/init.d/atlas
chmod +x /etc/rc.d/init.d/atlas
chkconfig --add atlas
chkconfig atlas on
#!/bin/sh
#description: atlas autorun
#your instance name
instance_name=test
case "$1" in?
"start")
/usr/local/mysql-proxy/bin/mysql-proxyd $instance_name start
;;?
"stop")?
/usr/local/mysql-proxy/bin/mysql-proxyd $instance_name stop
;;?
"restart")?
/usr/local/mysql-proxy/bin/mysql-proxyd $instance_name restart
;;?
"status")?
/usr/local/mysql-proxy/bin/mysql-proxyd $instance_name status
;;?
*)?
echo "Usage: service atlas start/stop/restart/status " ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
;;?
esac
使用命令如下:
service atlas start
service atlas stop
service atlas status
service atlas restart ?
----------------------------------------------------
監控atlas腳本
cat /usr/local/mysql-proxy/bin/monitor_atlas.sh
#!/bin/bash
if ?[ $(ps -ef |grep 'mysql-proxy' |grep -v 'grep' |wc -l) -eq "0" ];then
/usr/local/mysql-proxy/bin/mysql-proxyd test start
sleep 5
if [ $(ps -ef |grep 'mysql-proxy' |grep -v 'grep' |wc -l) -eq "0" ?];then
killall -9 keepalived
service network restart
fi
fi
chmod +x /usr/local/mysql-proxy/bin/monitor_atlas.sh
------------------------配置文件說明------------------------
[mysql-proxy]
#管理接口的用戶名,根據自己需要定義
admin-username = admin
#管理接口的密碼
admin-password = password
#Atlas后端連接的MySQL主庫的IP和端口,可設置多項,用逗號分隔
proxy-backend-addresses = 10.57.1.131:3306
#Atlas后端連接的MySQL從庫的IP和端口,@后面的數字代表權重,用來作負載均衡,若省略則默認為1,可設置多項,用逗號分隔
proxy-read-only-backend-addresses = 10.57.1.132:3306@1
#用戶名與其對應的加密過的MySQL密碼,密碼使用PREFIX/bin目錄下的加密程序encrypt加密,下行的user1和user2為示例,將其替換為你的MySQL的用戶名和加密密碼!
pwds = root:YQsbJY4G4oc=,test:YQsbJY4G4oc=
# 需要注意的是,這兩個用戶要在MySQL-Master上創建并開放對應的訪問權限,這里的用戶是需要對外開放使用的用戶
#設置Atlas的運行方式,設為true時為守護進程方式,設為false時為前臺方式,一般開發調試時設為false,線上運行時設為true
daemon = true
#設置Atlas的運行方式,設為true時Atlas會啟動兩個進程,一個為monitor,一個為worker,monitor在worker意外退出后會自動將其重啟,設為false時只有worker,沒有monitor,一般開發調試時設為false,線上運行時設為true
keepalive = true
#工作線程數,對Atlas的性能有很大影響,可根據情況適當設置
event-threads = 8
#日志級別,分為message、warning、critical、error、debug五個級別
log-level = message
#日志存放的路徑
log-path = /usr/local/mysql-proxy/log
#SQL日志的開關,可設置為OFF、ON、REALTIME,OFF代表不記錄SQL日志,ON代表記錄SQL日志,REALTIME代表記錄SQL日志且實時寫入磁盤,默認為OFF
#sql-log = OFF
#實例名稱,用于同一臺機器上多個Atlas實例間的區分
#instance = test
#Atlas監聽的工作接口IP和端口
proxy-address = 0.0.0.0:3306
#Atlas監聽的管理接口IP和端口
admin-address = 0.0.0.0:2345
#連接池的最小空閑連接數,可根據業務請求量大小適當調大或調小
min-idle-connections = 128
#分表設置,此例中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, 10.0.0
#Atlas前面掛接的LVS的物理網卡的IP(注意不是虛IP),若有LVS且設置了client-ips則此項必須設置,否則可以不設置
#lvs-ips = 192.168.1.1
# End
來自為知筆記(Wiz)