前言
自備docker環境,可參考我之前的博客。
一、流程
二、環境
IP | 服務 |
106.13.147.84(A) | master(主mysql) |
106.13.50.149(B) | slave(從mysql)+ atlas (代理服務) |
三、搭建主從環境
1、搭建主節點
在A中安裝mysql,docker 一條命令即可。
docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 mysql:5.7
進入容器中,修改配置
#進入容器
docker exec -it mysql /bin/bash
#登陸mysql
mysql -uroot -proot
#開啓遠程訪問
grant all privileges on *.* to root@"%" identified by "root" with grant option;
#刷新
flush privileges;
在容器中是沒有vim的,所以要先安裝vim
#先更新
apt-get update
#在安裝
apt-get install vim
修改 mysql.conf配置文件
vim /etc/mysql/mysql.conf.d/mysqld.cnf
添加兩行
重啓容器,在windows上連接該數據庫
執行如下SQL
注意 記錄二進制文件名(mysql-bin.000001)和位置(767)等會要用到的
2、搭建從節點
在B如上配置,mysqld.conf配置文件中只需要配置server-id即可,注意要唯一!
重啓後在windows上連接該數據庫
Slave_IO_Running列和Slave_SQL_Running列的值爲yes即可
主從到此已搭建完畢,可自行測試。
四、配置Atlas
先在B中創建目錄
/usr/local/mysql-proxy/conf
創建配置文件
vim test.conf
內容
[mysql-proxy]
#帶#號的爲非必需的配置項目
#管理接口的用戶名
admin-username = root
#管理接口的密碼
admin-password = root
#Atlas後端連接的MySQL主庫的IP和端口,可設置多項,用逗號分隔
proxy-backend-addresses = 106.13.147.84:3306
#Atlas後端連接的MySQL從庫的IP和端口,@後面的數字代表權重,用來作負載均衡,若省略則默認爲1,可設置多項,用逗號分隔
proxy-read-only-backend-addresses = 106.13.50.149:3306@1
#用戶名與其對應的加密過的MySQL密碼,密碼使用PREFIX/bin目錄下的加密程序encrypt加密,下行的user1和user2爲示例,將其替換爲你的MySQL的用戶名和加密密碼
!
#pwds = user1:+jKsgB3YAG8=, user2:GS+tr4TPgqc=
pwds = root:DAJnl8cVzy8=
#設置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 = message
#日誌存放的路徑
log-path = /usr/local/mysql-proxy/log
#SQL日誌的開關,可設置爲OFF、ON、REALTIME,OFF代表不記錄SQL日誌,ON代表記錄SQL日誌,REALTIME代表記錄SQL日誌且實時寫入磁盤,默認爲OFF
sql-log = REALTIME
#慢日誌輸出設置。當設置了該參數時,則日誌只輸出執行時間超過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
注意加密的密碼:註釋上寫的很詳細,待會進入容器後生成再改
安裝Atlas並啓動容器並進入容器
docker run -it --name atlas -v /usr/local/mysql-proxy/conf:/usr/local/mysql-proxy/conf -p 1234:1234 -p 2345:2345 mybbcat/docker-360atlas /bin/bash
可以去mysql-proxy/bin目錄中使用 encrypt 進行加密
./encrypt root
得到返回值然後。。。沒錯,出去修改配置文件。。
最好把容器刪除再重新執行run ,
進入/usr/local/mysql-proxy/bin目錄,執行下面的命令啓動、重啓或停止Atlas。
./mysql-proxyd test start #啓動Atlas。
./mysql-proxyd test restart #重啓Atlas。
./mysql-proxyd test stop #停止Atlas。
之後退出,注意查看docker ps 容器中是否啓動成功了,如果沒有,則使用docker start 容器名字 啓動,測試外部是否能連接上1234端口,如不能則進入容器中自己手動啓動atlas.
五、測試
執行SQL
在B中進入Atlas容器中查看日誌