docker-mysql高可用負(fù)載均衡集群·筆記

  1. 安裝docker
  2. 安裝PXC鏡像
docker pull percona/percona-xtradb-cluster
  1. 本地安裝PXC鏡像
docker load < /home/soft/pxc.tar.gz
  1. 查看docker安裝的鏡像
docker images
  1. 修改鏡像名稱
docker tag percona/percona-xtradb-cluster pxc
  1. 刪除鏡像
docker rmi percona/percona-xtradb-cluster
  1. 給PXC集群實(shí)例創(chuàng)建docker內(nèi)部網(wǎng)絡(luò)
docker network net1
  • 查看
docker inspect net1
  • 刪除
docker rm net1
  • 創(chuàng)建網(wǎng)段
docker network create --subnet=172.18.0.0/24 net1
  • 查看網(wǎng)段
docker inspect net1
  • 刪除網(wǎng)段
docker network rm net1
  1. 容器中的PXC節(jié)點(diǎn)映射數(shù)據(jù)目錄的解決方案
    數(shù)據(jù)券v1
docker volume create --name v1
  • 查看數(shù)據(jù)券
docker inspect v1
  • 刪除數(shù)據(jù)券
docker volume rm v1
  1. 創(chuàng)建PXC容器
    -d 后臺(tái)運(yùn)行
    -p端口映射
    3306:3306 數(shù)據(jù)機(jī)的端口L:容器端口
    -v路徑的映射
    -e 啟動(dòng)參數(shù)
    --privileged 最高權(quán)限
    -e CLUSTER_JOIN 加入集群
  • 主容器
docker run -d -p 3306:3306  -v v1:/var/lib/mysql  -e MYSQL_ROOT_PASSWORD=sqlpass  -e CLUSTER_NAME=PXC  -e XTRABACKUP_PASSWORD=sqlpass  --privileged --name=node1 --net=net1 --ip 172.18.0.2 pxc 
  • 副容器
docker run -d -p 3307:3306  -v v2:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=sqlpass  -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=sqlpass -e CLUSTER_JOIN=node1 --privileged --name=node2 --net=net1 --ip 172.18.0.3 pxc

負(fù)載均衡配置

截屏2020-03-26下午5.03.20.png

截屏2020-03-26下午5.03.27.png
  1. 安裝Haproxy鏡像
docker pull haproxy
  • 創(chuàng)建Haproxy配置文件,宿主機(jī)
touch /home/soft/haproxy/haproxy.cfg

配置文件詳情參考
https://zhangge.net/5125.html

global
    #日志文件漆弄,使用rsyslog服務(wù)中l(wèi)ocal5日志設(shè)備(var/log/local5),等級(jí)info
    log 127.0.0.1   local5 info
    #守護(hù)進(jìn)程運(yùn)行
    daemon

defaults
   log     global
   #7層 http;4層tcp  如果要讓haproxy支持虛擬主機(jī)弧械,mode 必須設(shè)為http 
   mode    http
   #http 日志格式
   option  httplog
   #日志中不記錄負(fù)載均衡的心跳檢測(cè)記錄
   option  dontlognull
   #連接超時(shí)(毫秒)
   timeout connect      5000
   #客戶端超時(shí)(毫秒)
   timeout client      50000 
   #服務(wù)器超時(shí)(毫秒)
   timeout server     50000

#監(jiān)控頁(yè)面
listen admin_stats
    #監(jiān)控頁(yè)面的訪問(wèn)的IP和端口
    bind 0.0.0.0:8888
    #訪問(wèn)協(xié)議
    mode http
    #URI相對(duì)地址
    stats uri   /dbs
    #統(tǒng)計(jì)報(bào)告格式
    stats realm     Global\ statistics
    #登錄賬戶信息
    stats auth admin:admin

#數(shù)據(jù)庫(kù)負(fù)載均衡
listen proxy-mysql
    #訪問(wèn)的IP和端口
    bind 0.0.0.0:3306
    #網(wǎng)絡(luò)協(xié)議
    mode tcp
    #負(fù)載均衡算法(輪詢算法)
    #輪詢算法:roundrobin
    #權(quán)重算法: static-rr
    #最少連接算法: leastconn
    #請(qǐng)求源IP算法: source
    balance roundrobin
    #日志格式
    option  tcplog
    #在mysql中創(chuàng)建一個(gè)沒(méi)有權(quán)限的haproxy用戶,密碼為空。haproxy使用這個(gè)賬戶對(duì)mysql進(jìn)行心跳檢測(cè)
    option mysql-check user haproxy
    server MySQL_1 172.18.0.2:3306 check weight 1 maxconn 2000
    server MySQL_3 172.18.0.3:3306 check weight 1 maxconn 2000
    #使用keepalive檢測(cè)死鏈
    option tcpka
  • 創(chuàng)建Haproxy容器
docker run -it -d -p 4001:8888 -p 4002:3306 -v /home/soft/haproxy:/usr/local/etc/haproxy --name h1 --privileged --net=net1 --ip 172.18.0.7 haproxy
  • 進(jìn)入容器
docker exec -it h1 bash
  • 啟動(dòng)容器,加載容器內(nèi)的配置文件
haproxy -f /usr/local/etc/haproxy/haproxy.cfg
  • 在主數(shù)據(jù)庫(kù)創(chuàng)建haproxy數(shù)據(jù)庫(kù)賬號(hào)
create user 'haproxy'@'%' IDENTIFIED BY '';
  • 在游覽器登錄haproxy監(jiān)控頁(yè)面
    192.168.99.4001/dbs
  • 關(guān)閉數(shù)據(jù)節(jié)點(diǎn)
docker stop node1
  • 通過(guò)haproxy隨機(jī)連接到任意數(shù)據(jù)庫(kù)節(jié)點(diǎn) 4002端口

負(fù)載均衡的高可用配置

截屏2020-03-26下午5.02.14.png
  1. 安裝Keepalived
    Keepalived必須要安裝在Haproxy所在的容器之內(nèi)
  • 進(jìn)入Haproxy容器
docker exec -it h1 bash
  • 安裝Haproxy
apt-get update
apt-get install keepalived
  • 退出容器
exit

keepalived的配置文件是 /etc/keepalived/keepalived.conf
在容器內(nèi)安裝vim

apt-get install vim
vim /etc/keepalived/keepalived.conf

keepalived配置文件

vrrp_instance VI_1{
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication{
        auth_type PASS
        auth_pass sqlpass
    }
    virtual_ipaddress{
        172.18.0.201
    }
}

state 是keepalived的身份(MASTER主服務(wù),BACKUP備服務(wù)器)攻锰。主服務(wù)要搶占虛擬IP,備用服務(wù)器不會(huì)搶占IP
interface 網(wǎng)卡設(shè)備
virtual_router_id 虛擬路由標(biāo)識(shí)妓雾,MASTER和BACKUP的虛擬路由標(biāo)識(shí)必須一致娶吞。標(biāo)識(shí)可以是 0 ~ 255
priority 權(quán)重
advert_int 心跳檢測(cè)秒,MASTER與BACKUP節(jié)點(diǎn)間同步檢查的時(shí)間間械姻。主備之間必須一致妒蛇。
authentication 主從服務(wù)器驗(yàn)證方式。主備必須使用相同的密碼才能正常通信
virtual_ipaddress 虛擬IP地址楷拳,可以設(shè)置多個(gè)虛擬IP地址绣夺,每行一個(gè)

  • 啟動(dòng)keepalived
service keepalived start

宿主機(jī)可以ping通虛擬IP

ping 172.18.0.201
  1. 全量數(shù)據(jù)熱備份和全量數(shù)據(jù)冷還原
  • 創(chuàng)建數(shù)據(jù)券
docker volume create backup
  • 選擇數(shù)據(jù)節(jié)點(diǎn)映射數(shù)據(jù)券
    • 先停止節(jié)點(diǎn)
docker stop node1
  • 刪除node1重新創(chuàng)建
docker rm node1
  • 創(chuàng)建node1
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=sqlpass -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=sqlpass -v v1:/var/lib/mysql -v backup:/data --privileged -e CLUSTER_JOIN=node2 --name=node1 --net=net1 --ip 172.18.0.2 pxc 
  • PXC容器中安裝XtraBackup,并執(zhí)行備份
    進(jìn)入節(jié)點(diǎn)
docker exec -it node1 bash

執(zhí)行

apt-get update
apt-get install percona-xtrabackup-24

全量備份

innobackupex --user=root --password=sqlpass /data/backup/full

容器內(nèi)備份數(shù)據(jù)

/data/backup/full
退出容器
exit
查看數(shù)據(jù)券目錄
docker inspect backup
進(jìn)入備份目錄

  • 數(shù)據(jù)庫(kù)可以熱備份欢揖,但是不能熱還原陶耍。為了避免恢復(fù)過(guò)程中的數(shù)據(jù)同步,采用空白的mysql還原數(shù)據(jù)她混,然后再建立PXC集群
  • 冷還原數(shù)據(jù)烈钞,還原數(shù)據(jù)前要將未提交的事物回滾,還原數(shù)據(jù)之后重啟mysql
  • 指令
rm -rf /var/lib/mysql/*

事務(wù)回滾

innobackupex --user=root --password=sqlpass --apply-back /data/backup/full/2018-04-15_05-09-07/

全量數(shù)據(jù)冷還原

innobackupex --user=root --password=sqlpass --copy-back /data/backup/full/2018-04-15_05-09-07/
  • 具體冷還原流程
    停止所有PXC節(jié)點(diǎn)
docker stop node1 node2

刪除所有PXC節(jié)點(diǎn)

docker rm node1 node2

刪除映射的數(shù)據(jù)券

docker volume rm v1 v2

創(chuàng)建新的數(shù)據(jù)券v1

docker volume create v1

啟動(dòng)一個(gè)PXC節(jié)點(diǎn)

docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=sqlpass  -e CLUSTER_NAME=PXC  -e XTRABACKUP_PASSWORD=sqlpass -v v1:/var/lib/mysql -v backup:/data --privileged --name=node1 --net=net1 --ip 172.18.0.2 pxc 

進(jìn)入node1節(jié)點(diǎn)

docker exec -it node1 bash

執(zhí)行冷還原命令

rm -rf /var/lib/mysql/*

事務(wù)回滾

innobackupex --user=root --password=sqlpass --apply-back /data/backup/full/2018-04-15_05-09-07/

全量數(shù)據(jù)冷還原

innobackupex --user=root --password=sqlpass --copy-back /data/backup/full/2018-04-15_05-09-07/

退出容器重啟節(jié)點(diǎn)

exit
docker stop node1
docker start node1
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末坤按,一起剝皮案震驚了整個(gè)濱河市棵磷,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌晋涣,老刑警劉巖仪媒,帶你破解...
    沈念sama閱讀 206,602評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡算吩,警方通過(guò)查閱死者的電腦和手機(jī)留凭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)偎巢,“玉大人蔼夜,你說(shuō)我怎么就攤上這事⊙怪纾” “怎么了求冷?”我有些...
    開封第一講書人閱讀 152,878評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)窍霞。 經(jīng)常有香客問(wèn)我匠题,道長(zhǎng),這世上最難降的妖魔是什么但金? 我笑而不...
    開封第一講書人閱讀 55,306評(píng)論 1 279
  • 正文 為了忘掉前任韭山,我火速辦了婚禮,結(jié)果婚禮上冷溃,老公的妹妹穿的比我還像新娘钱磅。我一直安慰自己,他們只是感情好似枕,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,330評(píng)論 5 373
  • 文/花漫 我一把揭開白布盖淡。 她就那樣靜靜地躺著,像睡著了一般凿歼。 火紅的嫁衣襯著肌膚如雪褪迟。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,071評(píng)論 1 285
  • 那天毅往,我揣著相機(jī)與錄音,去河邊找鬼派近。 笑死攀唯,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的渴丸。 我是一名探鬼主播侯嘀,決...
    沈念sama閱讀 38,382評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼谱轨!你這毒婦竟也來(lái)了戒幔?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,006評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤土童,失蹤者是張志新(化名)和其女友劉穎诗茎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體献汗,經(jīng)...
    沈念sama閱讀 43,512評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡敢订,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,965評(píng)論 2 325
  • 正文 我和宋清朗相戀三年王污,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片楚午。...
    茶點(diǎn)故事閱讀 38,094評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡昭齐,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出矾柜,到底是詐尸還是另有隱情阱驾,我是刑警寧澤,帶...
    沈念sama閱讀 33,732評(píng)論 4 323
  • 正文 年R本政府宣布怪蔑,位于F島的核電站里覆,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏饮睬。R本人自食惡果不足惜租谈,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,283評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望捆愁。 院中可真熱鬧割去,春花似錦、人聲如沸昼丑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)菩帝。三九已至咖城,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間呼奢,已是汗流浹背宜雀。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留握础,地道東北人辐董。 一個(gè)月前我還...
    沈念sama閱讀 45,536評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像禀综,于是被迫代替她去往敵國(guó)和親简烘。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,828評(píng)論 2 345

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