helm啟動mysql-ha

image.png

前言
本文使用helm啟動mysql-ha
*我的其他相關(guān)文章:
《docker-compose啟動mysql》
《k8s啟動單點mysql》
《helm啟動單節(jié)點mysql》
《k8s啟動phpmyadmin》

1. 下載cart包

  • 查找可用chart
# helm search repo mysql
NAME                       CHART VERSION   APP VERSION     DESCRIPTION
aliyuncs/mysql              6.8.0           8.0.19          Chart to create a Highly available MySQL cluster
aliyuncs/mysqldump           2.6.0           2.4.1           A Helm chart to help backup MySQL databases usi...
aliyuncs/mysqlha             1.0.0           5.7.13          MySQL cluster with a single master and zero or ...

說明: aliyuncs/mysql 這個是單機的能岩, aliyuncs/mysqlha 這個是HA的

  • 下載chart
# helm fetch aliyuncs/mysqlha --untar --untardir ./

說明:加了兩個參數(shù)源请,不下載tar包喊暖,直接是目錄殖告。

2. 修改配置文件

按需求修改 values.yaml 即可笔咽。

2.1 修改鏡像(離線部署需要)

如果不能連接公網(wǎng)敲长,將鏡像下載后上傳私有倉庫砰逻,在配置文件中修改如下兩處為私有倉庫鏡像乘陪。

mysqlImage: harbocto.xxx.com.cn/public/mysql:5.7.13
xtraBackupImage: harbocto.xxx.com.cn/public/gcr-xtrabackup:1.0

2.2 用戶名密碼

本次只修改了root密碼,其他見下文說明

mysqlha:
  replicaCount: 3

  ## Password for MySQL root user
  ##
  # mysqlRootPassword: ## Default: random 10 character string
  mysqlRootPassword: Bxx888888

  ## Username/password for MySQL replication user
  ##
  mysqlReplicationUser: repl
  # mysqlReplicationPassword:

  ## Create a database user
  ##
  # mysqlUser:
  # mysqlPassword: ## Default: random 10 character string

  ## Allow unauthenticated access, uncomment to enable
  ##
  # mysqlAllowEmptyPassword: true

  ## Create database with name and grant all permissions to user on startup, if needed
  # mysqlDatabase:

  ## Configuration files for the master and slaves

說明:上邊配置文件可見

  • root密碼: mysqlRootPassword:
  • 普通用戶: mysqlUser:
  • 普通用戶密碼: mysqlPassword
  • 新建數(shù)據(jù)庫:mysqlDatabase:

2.3 修改存儲大小

默認10g奄容,此處修改為300g

persistence:
  enabled: true
  ## If defined, storageClassName: <storageClass>
  ## If set to "-", storageClassName: "", which disables dynamic provisioning
  ## If undefined (the default) or set to null, no storageClassName spec is
  ##   set, choosing the default provisioner.  (gp2 on AWS, azure-disk on
  ##   Azure, standard on GKE, AWS & OpenStack)
  ##
  # storageClass: "-"
  accessModes:
  - ReadWriteOnce
  size: 300Gi

說明:因為我的k8s集群設(shè)定了默認storageclass冰更,所以此處不用指定

3. 創(chuàng)建msyql集群

3.1 創(chuàng)建

[root@DoM01 mysqlha]# kubectl create namespace mysql
[root@DoM01 mysqlha]# cd mysqlha
[root@DoM01 mysqlha]# helm install mysqlha -n mysql ./

3.2 輸出說明

創(chuàng)建完成輸出如下:

NAME: mysqlha
LAST DEPLOYED: Mon Aug 16 17:16:16 2021
NAMESPACE: mysql
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
The MySQL cluster is comprised of 3 MySQL pods: 1 master and 2 slaves. Each instance is accessible within the cluster through:

    <pod-name>.mysqlha

`mysqlha-0.mysqlha` is designated as the master and where all writes should be executed against. Read queries can be executed against the `mysqlha-readonly` service which distributes connections across all MySQL pods.

To connect to your database:

1. Obtain the root password:

    kubectl get secret --namespace mysql mysqlha -o jsonpath="{.data.mysql-root-password}" | base64 --decode; echo

2. Run a pod to use as a client:

    kubectl run mysql-client --image=harbocto.boe.com.cn/public/mysql:5.7.13 -it --rm --restart='Never' --namespace mysql -- /bin/sh

3. To connect to Master service (read/write):

    mysql -h mysqlha-0.mysqlha -u root -p

4. To connect to slave service (read-only):

   mysql -h mysqlha-readonly -u root -p

從輸出我么可以看到如下幾點:

  • 查看密碼使用這個命令
kubectl get secret --namespace mysql mysqlha -o jsonpath="{.data.mysql-root-password}" | base64 --decode; echo
  • 寫連接mysqlha-0.mysqlha
    從“3.2 查看”中,我們可以知道這是一個Handless的service
    因此 "pod_name"."service_name"可以直接訪問到后端的指定pod
    我們這里的mysql-ha-mysqlha-0 即是我們的主庫(寫庫)

  • 讀連接mysqlha-readonly

3.3 查看

  • 查看pod
[root@DoM01 ~]# kubectl get pod -n mysql
NAME                          READY   STATUS    RESTARTS   AGE
mysqlha-0                     2/2     Running   0          81m
mysqlha-1                     2/2     Running   0          80m
mysqlha-2                     2/2     Running   0          80m

從 3.2的輸出可以看到昂勒,mysqlha0是我們的master蜀细,其它兩個是slave。

  • 查看service
[root@DoM01 ~]# kubectl get service -n mysql
NAME               TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
mysqlha            ClusterIP   None           <none>        3306/TCP         81m
mysqlha-readonly   NodePort    10.1.61.20     <none>        3306:30006/TCP   81m
  • mysqlha-readonly: 連接讀庫
  • mysqlha:
    經(jīng)測試戈盈,如果直接連接奠衔,會隨機分給后邊的任何一個pod(一會兒master一會slave)
  • 連接寫庫:
    同namespace中的服務(wù)谆刨,連接 mysqlha-0.mysqlha:3306
    如果是其它namespace中的服務(wù)归斤,需要訪問mysqlha-0.mysqlha.mysql:3306
  • 查看PVC
[root@DoM01 mysqlha]# kubectl get pvc -n mysql
NAME             STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
data-mysqlha-0   Bound    pvc-1b5b3e8d-3106-4f87-a33e-18c36342f2ef   300Gi      RWO            nfs-client     89m
data-mysqlha-1   Bound    pvc-5ab9d655-0f20-4d17-80df-b25e0b58aabd   300Gi      RWO            nfs-client     88m
data-mysqlha-2   Bound    pvc-002914c3-d55c-42fd-bde7-a5aed1da3417   300Gi      RWO            nfs-client     88m

4. 修改端口

如果一開始你在value.yaml里修改了痊夭,這里就不用修改了。

4.1 修改只讀端口

用edit命令修改即可

# kubectl get service -n mysql
NAME                        TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
mysql-ha-mysqlha            ClusterIP   None            <none>        3306/TCP         74m
mysql-ha-mysqlha-readonly   NodePort    172.21.12.189   <none>        3306:31008/TCP   74m

4.2 映射寫庫端口

mysql-ha-mysqlha 是一個Headless類型的service脏里,我們可以通過它直接映射到后端的master她我,但是他不可以直接修改成NodePort,因此需要自己重新寫了一個service

apiVersion: v1
kind: Service
metadata:
  labels:
    app: mysql-ha-mysqlha-m
  name: mysql-ha-mysqlha-m
  namespace: mysql
spec:
  ports:
  - name: mysql-ha-mysqlha-m
    nodePort: 31009
    port: 3306
    protocol: TCP
    targetPort: 3306
  selector:
    app: mysql-ha-mysqlha
  type: NodePort

查看結(jié)果如下

# kubectl get service -n mysql
NAME                        TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
mysql-ha-mysqlha            ClusterIP   None            <none>        3306/TCP         74m
mysql-ha-mysqlha-m          NodePort    172.21.13.8     <none>        3306:31009/TCP   4m46s
mysql-ha-mysqlha-readonly   NodePort    172.21.12.189   <none>        3306:31008/TCP   74m

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末迫横,一起剝皮案震驚了整個濱河市番舆,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌矾踱,老刑警劉巖恨狈,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異呛讲,居然都是意外死亡拴事,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進店門圣蝎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來刃宵,“玉大人,你說我怎么就攤上這事徘公∩ぃ” “怎么了?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵关面,是天一觀的道長坦袍。 經(jīng)常有香客問我,道長等太,這世上最難降的妖魔是什么捂齐? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮缩抡,結(jié)果婚禮上奠宜,老公的妹妹穿的比我還像新娘。我一直安慰自己瞻想,他們只是感情好压真,可當(dāng)我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蘑险,像睡著了一般滴肿。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上佃迄,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天泼差,我揣著相機與錄音贵少,去河邊找鬼。 笑死堆缘,一個胖子當(dāng)著我的面吹牛滔灶,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播套啤,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼随常!你這毒婦竟也來了潜沦?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤绪氛,失蹤者是張志新(化名)和其女友劉穎唆鸡,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體枣察,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡争占,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了序目。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片臂痕。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖猿涨,靈堂內(nèi)的尸體忽然破棺而出握童,到底是詐尸還是另有隱情,我是刑警寧澤叛赚,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布澡绩,位于F島的核電站,受9級特大地震影響俺附,放射性物質(zhì)發(fā)生泄漏肥卡。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一事镣、第九天 我趴在偏房一處隱蔽的房頂上張望步鉴。 院中可真熱鬧,春花似錦璃哟、人聲如沸唠叛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽艺沼。三九已至,卻和暖如春蕴掏,著一層夾襖步出監(jiān)牢的瞬間障般,已是汗流浹背调鲸。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留挽荡,地道東北人藐石。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像定拟,于是被迫代替她去往敵國和親于微。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,933評論 2 355

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

  • 前言本文使用helm啟動單節(jié)點mysql青自。*我的其他相關(guān)文章:《docker-compose啟動mysql》[ht...
    玄德公筆記閱讀 737評論 0 2
  • 介紹 Helm 是 Deis 開發(fā)的一個用于 Kubernetes 應(yīng)用的包管理工具株依,主要用來管理 Charts。...
    小波同學(xué)閱讀 1,398評論 0 4
  • Rancher2.0ha安裝 環(huán)境 CentOS 7.5 Docker-ce 17.03 rke v0.1.11 ...
    橘子基因閱讀 5,187評論 0 6
  • 前言本文分三個部分:1)啟動一個測試/開發(fā)級別的數(shù)據(jù)庫延窜。2)啟動一個生產(chǎn)級別的數(shù)據(jù)庫3)開發(fā)環(huán)境的一個自動化方案恋腕。...
    玄德公筆記閱讀 4,230評論 0 5
  • 1.編寫一個簡單的helloworld 1.編寫helloworld的web app 創(chuàng)建spring項目,修改配...
    k7s閱讀 933評論 0 1