docker搭建mysql集群

前言

本文章使用Percona XtraDB Cluster(MySQL改進(jìn)版赐写,性能提升很大)進(jìn)行集群搭建涯鲁,集群mysql的數(shù)量是5,宿主機(jī)為centos7。

常見集群方案

  • PXC同步復(fù)制,事務(wù)在所有集群節(jié)點(diǎn)要么同時(shí)提交咱枉,要么不提交
  • Replication采用異步復(fù)制舶掖,無法保證數(shù)據(jù)的一致性

安裝鏡像

docker pull percona/percona-xtradb-cluster

名字太長了球昨,對鏡像進(jìn)行重命名

docker tag percona/percona-xtradb-cluster percona

可以看到執(zhí)行該命令,docker為我們復(fù)制了一份


image.png

創(chuàng)建內(nèi)部網(wǎng)絡(luò)

出于安全考慮眨攘,將PXC集群放置于docker內(nèi)部網(wǎng)絡(luò)中主慰。只需將宿主的端口與之映射并開放出來即可。

docker network create --subnet=172.18.0.0/24 net1

說明:–subnet=172.18.0.0/24 自定義網(wǎng)段172.18.0.0鲫售,24是指24位子網(wǎng)掩碼 net1 網(wǎng)段名稱共螺。

創(chuàng)建docker卷

docker容器的運(yùn)行規(guī)則:通過目錄映射的方法,將業(yè)務(wù)數(shù)據(jù)寫入到宿主機(jī)中情竹。好處是如果容器故障藐不,只需將容器刪除,重新啟用一個(gè)容器即可,這樣就不會丟失原來的數(shù)據(jù)雏蛮。重新創(chuàng)建啟動一個(gè)新的容器還可以繼續(xù)使用涎嚼。
由于PXC較為特殊,無法直接使用映射目錄的方法做映射(使用后會閃退)挑秉,故使用docker卷铸抑。

創(chuàng)建5個(gè)docker卷

docker volume create --name v1
docker volume create --name v2
docker volume create --name v3
docker volume create --name v4
docker volume create --name v5

創(chuàng)建運(yùn)行PXC容器

#第一個(gè)節(jié)點(diǎn)
docker run -d  -p 3306:3306 -v v1:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=root --privileged --name=node1 --net=net1 --ip 172.18.0.2 percona
#第二個(gè)節(jié)點(diǎn)
docker run -d  -p 3307:3306 -v v2:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=root --privileged --name=node2 --net=net1 --ip 172.18.0.3 percona
#第三個(gè)節(jié)點(diǎn)
docker run -d  -p 3308:3306 -v v3:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=root --privileged --name=node3 --net=net1 --ip 172.18.0.4 percona
#第四個(gè)節(jié)點(diǎn)
docker run -d  -p 3309:3306 -v v4:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=root --privileged --name=node4 --net=net1 --ip 172.18.0.5 percona
#第五個(gè)節(jié)點(diǎn)
docker run -d  -p 3310:3306 -v v5:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=root --privileged --name=node5 --net=net1 --ip 172.18.0.6 percona

參數(shù)說明:

-d  默認(rèn)在后臺運(yùn)行
-p  3306(宿主):3306(容器)   端口映射,將容器3306端口映射到宿主3306坤口
-v  目錄映射衷模,將第四步創(chuàng)建的v1映射到容器/var/lib/mysql
-e MYSQL_ROOT_PASSROWD  創(chuàng)建的用戶實(shí)例的密碼鹊汛,默認(rèn)實(shí)例root
-e CLUSTER_NAME  集群名稱
-e XTRABACKUP_PASSWORD  數(shù)據(jù)庫之間同步使用的密碼
--privileged  權(quán)限.給予最高權(quán)限
--name 給容器容命名
--net 使用內(nèi)部網(wǎng)段
--ip 內(nèi)部網(wǎng)段分到的地址
pxc 指的是鏡像

驗(yàn)證是否創(chuàng)建成功PCX集群

開放端口3306-3310

開放端口范圍3306至3310
firewall-cmd --permanent --add-port=3306-3310/tcp
查看開放端口的列表
firewall-cmd --permanent --list-ports
image.png

在本地用mysql的客戶端連接工具對五個(gè)幾點(diǎn)進(jìn)行連接,看看是否每個(gè)節(jié)點(diǎn)都成功運(yùn)行阱冶。如果成功運(yùn)行刁憋,再選任意一個(gè)節(jié)點(diǎn)創(chuàng)建一個(gè)表,然后插入數(shù)據(jù)看其他節(jié)點(diǎn)是否能夠進(jìn)行同步

負(fù)載均衡

使用支持TCP/IP協(xié)議的harpoxy中間件進(jìn)行負(fù)載均衡木蹬。

#創(chuàng)建目錄
mkdir /home/soft/haproxy
# 拉取鏡像
docker pull haproxy
# 宿主機(jī)創(chuàng)建配置文件
touch /home/soft/haproxy/haproxy.cfg 
# 創(chuàng)建容器至耻,4001:8888為管理界面的端口
docker run -it -d -p 4001:8888 -p 4000:3306 -v /home/soft/haproxy:/usr/local/etc/haproxy --name h1 --privileged --net=net1 --ip 172.18.0.7 haproxy

把下面haproxy.conf配置文件的內(nèi)容添加到宿主機(jī)的haproxy.conf文件里
haproxy.conf 配置文件

global
    #工作目錄
    chroot /usr/local/etc/haproxy
    #日志文件,使用rsyslog服務(wù)中l(wèi)ocal5日志設(shè)備(/var/log/local5)镊叁,等級info
    log 127.0.0.1 local5 info
    #守護(hù)進(jìn)程運(yùn)行
    daemon

defaults
    log global
    mode    http
    #日志格式
    option  httplog
    #日志中不記錄負(fù)載均衡的心跳檢測記錄
    option  dontlognull
    #連接超時(shí)(毫秒)
    timeout connect 5000
    #客戶端超時(shí)(毫秒)
    timeout client  50000
    #服務(wù)器超時(shí)(毫秒)
    timeout server  50000

#監(jiān)控界面   
listen  admin_stats
    #監(jiān)控界面的訪問的IP和端口
    bind  0.0.0.0:8888
    #訪問協(xié)議
    mode        http
    #URI相對地址
    stats uri   /dbs
    #統(tǒng)計(jì)報(bào)告格式
    stats realm     Global\ statistics
    #登陸帳戶信息
    stats auth  admin:123456
#數(shù)據(jù)庫負(fù)載均衡
listen  proxy-mysql
    #訪問的IP和端口
    bind  0.0.0.0:3306  
    #網(wǎng)絡(luò)協(xié)議
    mode  tcp
    #負(fù)載均衡算法(輪詢算法)
    #輪詢算法:roundrobin
    #權(quán)重算法:static-rr
    #最少連接算法:leastconn
    #請求源IP算法:source 
    balance  roundrobin
    #日志格式
    option  tcplog
    #在MySQL中創(chuàng)建一個(gè)沒有權(quán)限的haproxy用戶尘颓,密碼為空。Haproxy使用這個(gè)賬戶對MySQL數(shù)據(jù)庫心跳檢測
    option  mysql-check user haproxy
    server  MySQL_1 172.18.0.2:3306 check weight 1 maxconn 2000  
    server  MySQL_2 172.18.0.3:3306 check weight 1 maxconn 2000  
    server  MySQL_3 172.18.0.4:3306 check weight 1 maxconn 2000 
    server  MySQL_4 172.18.0.5:3306 check weight 1 maxconn 2000
    server  MySQL_5 172.18.0.6:3306 check weight 1 maxconn 2000
    #使用keepalive檢測死鏈
    option  tcpka  
# 進(jìn)入容器
docker exec -it h1 bash
# 加載指定配置文件晦譬,啟動haproxy 
haproxy -f /usr/local/etc/haproxy/haproxy.cfg

執(zhí)行sql語句創(chuàng)建賬戶

# mysql創(chuàng)建賬號
CREATE USER 'haproxy'@'%' IDENTIFIED BY '';
image.png

訪問管理界面疤苹,輸入用戶名密碼admin 123456(上面haproxy.conf配置的信息)


image.png
image.png

綠色為正常節(jié)點(diǎn),紅色為故障節(jié)點(diǎn)敛腌,這說明你需要做些處理了

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末卧土,一起剝皮案震驚了整個(gè)濱河市盈匾,隨后出現(xiàn)的幾起案子娄昆,更是在濱河造成了極大的恐慌,老刑警劉巖囤官,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件生棍,死亡現(xiàn)場離奇詭異颤霎,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)涂滴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進(jìn)店門友酱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人氢妈,你說我怎么就攤上這事粹污《味啵” “怎么了首量?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我加缘,道長鸭叙,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任拣宏,我火速辦了婚禮沈贝,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘勋乾。我一直安慰自己宋下,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布辑莫。 她就那樣靜靜地躺著学歧,像睡著了一般。 火紅的嫁衣襯著肌膚如雪各吨。 梳的紋絲不亂的頭發(fā)上枝笨,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天,我揣著相機(jī)與錄音揭蜒,去河邊找鬼横浑。 笑死,一個(gè)胖子當(dāng)著我的面吹牛屉更,可吹牛的內(nèi)容都是我干的徙融。 我是一名探鬼主播,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼瑰谜,長吁一口氣:“原來是場噩夢啊……” “哼张咳!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起似舵,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤脚猾,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后砚哗,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體龙助,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年蛛芥,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了提鸟。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,675評論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡仅淑,死狀恐怖称勋,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情涯竟,我是刑警寧澤赡鲜,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布空厌,位于F島的核電站,受9級特大地震影響银酬,放射性物質(zhì)發(fā)生泄漏嘲更。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一揩瞪、第九天 我趴在偏房一處隱蔽的房頂上張望赋朦。 院中可真熱鬧,春花似錦李破、人聲如沸宠哄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽琳拨。三九已至,卻和暖如春屯曹,著一層夾襖步出監(jiān)牢的瞬間狱庇,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工恶耽, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留密任,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓偷俭,卻偏偏與公主長得像浪讳,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子涌萤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內(nèi)容