国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

K8S搭建MySQL集群

這篇具有很好參考價(jià)值的文章主要介紹了K8S搭建MySQL集群。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

使用K8S搭建MySQL一主一從集群。

注意:以下全部?jī)?nèi)容,需要把namespace: test中的test換成你要所部署集群所在的名稱空間。

1、創(chuàng)建密鑰

apiVersion: v1
kind: Secret
metadata:
  name: mysql-secret
  namespace: etc2
  labels:
    app: mysql
type: Opaque
data:
  password: MTIzNDU2Cg== #  base64加密后密碼

2、創(chuàng)建ConfigMap

apiVersion: v1
kind: ConfigMap
metadata:
  name: mysql
  namespace: test
  labels:
    app: mysql
data:
  master.cnf: |
    # Master
    [mysqld]
    log-bin=mysqllog
    skip-name-resolve
  slave.cnf: |
    # Slave
    [mysqld]
    super-read-only
    skip-name-resolve
    log-bin=mysql-bin
    replicate-ignore-db=mysql

3、創(chuàng)建StatefulSet

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: mysql
  namespace: test
  labels:
    app: mysql
spec:
  selector:
    matchLabels:
      app: mysql
  serviceName: mysql
  replicas: 2 # 副本數(shù)量,集群中的數(shù)量
  template:
    metadata:
      labels:
        app: mysql
    spec:
      initContainers:
      - name: init-mysql
        image: mysql:5.7.33
        env:
        - name: MYSQL_ROOT_PASSWORD
          valueFrom:
            secretKeyRef:
              name: mysql-secret
              key: password
        command:
        - bash
        - "-c"
        - |
          set -ex
          # 從 Pod 的序號(hào),生成 server-id
          [[ $(hostname) =~ -([0-9]+)$ ]] || exit 1
          ordinal=${BASH_REMATCH[1]}
          echo [mysqld] > /mnt/conf.d/server-id.cnf
          # 由于 server-id 不能為 0,因此給 ID 加 100 來(lái)避開它
          echo server-id=$((100 + $ordinal)) >> /mnt/conf.d/server-id.cnf
          # 如果 Pod 的序號(hào)為 0,說(shuō)明它是 Master 節(jié)點(diǎn),從 ConfigMap 里把 Master 的配置文件拷貝到 /mnt/conf.d 目錄下
          # 否則,拷貝 ConfigMap 里的 Slave 的配置文件
          if [[ ${ordinal} -eq 0 ]]; then
            cp /mnt/config-map/master.cnf /mnt/conf.d
          else
            cp /mnt/config-map/slave.cnf /mnt/conf.d
          fi
        volumeMounts:
        - name: conf
          mountPath: /mnt/conf.d
        - name: config-map
          mountPath: /mnt/config-map
      - name: clone-mysql
        #image: gcr.io/google-samples/xtrabackup:1.0
        image: registry.cn-shenzhen.aliyuncs.com/jbjb/csi:xtrabackup-1.0
        env:
        - name: MYSQL_ROOT_PASSWORD
          valueFrom:
            secretKeyRef:
              name: mysql-secret
              key: password
        command:
        - bash
        - "-c"
        - |
          set -ex
          # 拷貝操作只需要在第一次啟動(dòng)時(shí)進(jìn)行,所以數(shù)據(jù)已經(jīng)存在則跳過(guò)
          [[ -d /var/lib/mysql/mysql ]] && exit 0
          # Master 節(jié)點(diǎn)(序號(hào)為 0)不需要這個(gè)操作
          [[ $(hostname) =~ -([0-9]+)$ ]] || exit 1
          ordinal=${BASH_REMATCH[1]}
          [[ $ordinal == 0 ]] && exit 0
          # 使用 ncat 指令,遠(yuǎn)程地從前一個(gè)節(jié)點(diǎn)拷貝數(shù)據(jù)到本地
          ncat --recv-only mysql-$(($ordinal-1)).mysql 3307 | xbstream -x -C /var/lib/mysql
          # 執(zhí)行 --prepare,這樣拷貝來(lái)的數(shù)據(jù)就可以用作恢復(fù)了
          xtrabackup --prepare --target-dir=/var/lib/mysql
        volumeMounts:
        - name: data
          mountPath: /var/lib/mysql
          subPath: mysql
        - name: conf
          mountPath: /etc/mysql/conf.d
      containers:
      - name: mysql
        image: mysql:5.7.33
        env:
        - name: MYSQL_ROOT_PASSWORD
          valueFrom:
            secretKeyRef:
              name: mysql-secret
              key: password
        ports:
        - name: mysql
          containerPort: 3306
        volumeMounts:
        - name: data
          mountPath: /var/lib/mysql
          subPath: mysql
        - name: conf
          mountPath: /etc/mysql/conf.d
        resources:
          requests:
            cpu: 500m
            memory: 1Gi
        livenessProbe:
          exec:
            command: ["mysqladmin", "ping", "-uroot", "-p${MYSQL_ROOT_PASSWORD}"]
          initialDelaySeconds: 30
          periodSeconds: 10
          timeoutSeconds: 5
        readinessProbe:
          exec:
            command: ["mysqladmin", "ping", "-uroot", "-p${MYSQL_ROOT_PASSWORD}"]
          initialDelaySeconds: 5
          periodSeconds: 2
          timeoutSeconds: 1
      - name: xtrabackup
        image: registry.cn-shenzhen.aliyuncs.com/jbjb/csi:xtrabackup-1.0
        ports:
        - name: xtrabackup
          containerPort: 3307
        env:
        - name: MYSQL_ROOT_PASSWORD
          valueFrom:
            secretKeyRef:
              name: mysql-secret
              key: password
        command:
        - bash
        - "-c"
        - |
          set -ex
          cd /var/lib/mysql
          # 從備份信息文件里讀取 MASTER_LOG_FILE 和 MASTER_LOG_POS 這 2 個(gè)字段的值,用來(lái)拼裝集群初始化 SQL
          if [[ -f xtrabackup_slave_info ]]; then
            # 如果 xtrabackup_slave_info 文件存在,說(shuō)明這個(gè)備份數(shù)據(jù)來(lái)自于另一個(gè) Slave 節(jié)點(diǎn)
            # 這種情況下,XtraBackup 工具在備份的時(shí)候,就已經(jīng)在這個(gè)文件里自動(dòng)生成了 "CHANGE MASTER TO" SQL 語(yǔ)句
            # 所以,只需要把這個(gè)文件重命名為 change_master_to.sql.in,后面直接使用即可
            mv xtrabackup_slave_info change_master_to.sql.in
            # 所以,也就用不著 xtrabackup_binlog_info 了
            rm -f xtrabackup_binlog_info
          elif [[ -f xtrabackup_binlog_info ]]; then
            # 如果只是存在 xtrabackup_binlog_info 文件,說(shuō)明備份來(lái)自于 Master 節(jié)點(diǎn),就需要解析這個(gè)備份信息文件,讀取所需的兩個(gè)字段的值
            [[ $(cat xtrabackup_binlog_info) =~ ^(.*?)[[:space:]]+(.*?)$ ]] || exit 1
            rm xtrabackup_binlog_info
            # 把兩個(gè)字段的值拼裝成 SQL,寫入 change_master_to.sql.in 文件
            echo "CHANGE MASTER TO MASTER_LOG_FILE='${BASH_REMATCH[1]}',\
                  MASTER_LOG_POS=${BASH_REMATCH[2]}" > change_master_to.sql.in
          fi
          # 如果存在 change_master_to.sql.in,就意味著需要做集群初始化工作
          if [[ -f change_master_to.sql.in ]]; then
            # 但一定要先等 MySQL 容器啟動(dòng)之后才能進(jìn)行下一步連接 MySQL 的操作
            echo "Waiting for mysqld to be ready(accepting connections)"
            until mysql -h 127.0.0.1 -uroot -p${MYSQL_ROOT_PASSWORD} -e "SELECT 1"; do sleep 1; done
            echo "Initializing replication from clone position"
            # 將文件 change_master_to.sql.in 改個(gè)名字
            # 防止這個(gè) Container 重啟的時(shí)候,因?yàn)橛终业搅?change_master_to.sql.in,從而重復(fù)執(zhí)行一遍初始化流程
            mv change_master_to.sql.in change_master_to.sql.orig
            # 使用 change_master_to.sql.orig 的內(nèi)容,也就是前面拼裝的 SQL,組成一個(gè)完整的初始化和啟動(dòng) Slave 的 SQL 語(yǔ)句
            mysql -h 127.0.0.1 -uroot -p${MYSQL_ROOT_PASSWORD} << EOF
          $(< change_master_to.sql.orig),
            MASTER_HOST='mysql-0.mysql.mysql',
            MASTER_USER='root',
            MASTER_PASSWORD='${MYSQL_ROOT_PASSWORD}',
            MASTER_CONNECT_RETRY=10;
          START SLAVE;
          EOF
          fi
          # 使用 ncat 監(jiān)聽 3307 端口。
          # 它的作用是,在收到傳輸請(qǐng)求的時(shí)候,直接執(zhí)行 xtrabackup --backup 命令,備份 MySQL 的數(shù)據(jù)并發(fā)送給請(qǐng)求者
          exec ncat --listen --keep-open --send-only --max-conns=1 3307 -c \
            "xtrabackup --backup --slave-info --stream=xbstream --host=127.0.0.1 --user=root --password=${MYSQL_ROOT_PASSWORD}"
        volumeMounts:
        - name: data
          mountPath: /var/lib/mysql
          subPath: mysql
        - name: conf
          mountPath: /etc/mysql/conf.d
      volumes:
      - name: conf
        emptyDir: {}
      - name: config-map
        configMap:
          name: mysql
  volumeClaimTemplates:
  - metadata:
      name: data
      #annotations:
        #volume.beta.kubernetes.io/storage-class: nfs-csi
    spec:
      accessModes:
      - "ReadWriteOnce"
      storageClassName: nfs-storage #需要和你自己創(chuàng)建的class.yaml保持名稱一致
      resources:
        requests:
          storage: 5Gi
---
apiVersion: v1
kind: Service
metadata:
  name: mysql
  namespace: test
  labels:
    app: mysql
spec:
  type: NodePort
  ports:
  - name: mysql
    port: 3306
  selector:
    app: mysql
---
apiVersion: v1
kind: Service
metadata:
  name: mysql-read
  namespace: test
  labels:
    app: mysql
spec:
#從MySQL如想暴漏端口
#type: NodePort
  ports:
  - name: mysql
    port: 3306
  selector:
    app: mysql

以上,MySQL的一主一從集群就創(chuàng)建完畢了。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-701859.html

到了這里,關(guān)于K8S搭建MySQL集群的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • [Kubernetes]8. K8s使用Helm部署mysql集群(主從數(shù)據(jù)庫(kù)集群)

    [Kubernetes]8. K8s使用Helm部署mysql集群(主從數(shù)據(jù)庫(kù)集群)

    上一節(jié)講解了K8s包管理工具Helm、使用Helm部署mongodb集群(主從數(shù)據(jù)庫(kù)集群),這里來(lái)看看 K8s使用Helm部署mysql集群(主從數(shù)據(jù)庫(kù)集群) 無(wú)本地存儲(chǔ): 當(dāng)重啟的時(shí)候,數(shù)據(jù)庫(kù)消失 (1).打開官網(wǎng)的應(yīng)用中心 打開應(yīng)用中心,搜索mysql (2).安裝? 1).添加repo倉(cāng)庫(kù) 2).安裝 具體命令如下:? 3).自動(dòng)生成

    2024年01月21日
    瀏覽(235)
  • 用 Helm 在 k8s 上快速搭建 MySQL 主從集群 ,并提供對(duì)外訪問(wèn)

    用 Helm 在 k8s 上快速搭建 MySQL 主從集群 ,并提供對(duì)外訪問(wèn)

    核心一覽 Helm 的使用 NFS 搭建 配置文件 一點(diǎn)心得 簡(jiǎn)單回憶下這個(gè)運(yùn)行環(huán)境 ??(很煩,感覺給自己挖了個(gè)大坑??/(ㄒoㄒ)/~~) 宿主機(jī) Traefik Minikube Ingress Service Pod helm 官網(wǎng)快速上手?? helm.sh/zh/docs/int… 安裝 下載地址 : github.com/helm/helm/r… 三大概念 Chart 代表著 Helm 包。 Repos

    2024年02月11日
    瀏覽(89)
  • 【K8s】:在 Kubernetes 集群中部署 MySQL8.0 高可用集群(1主2從)

    【K8s】:在 Kubernetes 集群中部署 MySQL8.0 高可用集群(1主2從)

    ??The Begin??點(diǎn)點(diǎn)關(guān)注,收藏不迷路?? Kubernetes 是一個(gè)強(qiáng)大的容器編排平臺(tái),可以幫助我們管理和部署容器化應(yīng)用。MySQL 是一個(gè)流行的關(guān)系型數(shù)據(jù)庫(kù),在生產(chǎn)環(huán)境中通常需要高可用性和數(shù)據(jù)持久性。 本文將介紹如何在 Kubernetes 中部署 MySQL 集群,以確保數(shù)據(jù)的高可用性和持久

    2024年04月17日
    瀏覽(100)
  • 搭建NFS服務(wù)器,部署k8s集群,并在k8s中使用NFS作為持久化儲(chǔ)存

    搭建NFS服務(wù)器,部署k8s集群,并在k8s中使用NFS作為持久化儲(chǔ)存

    ??明明跟你說(shuō)過(guò):個(gè)人主頁(yè) ??個(gè)人專欄:《Kubernetes航線圖:從船長(zhǎng)到K8s掌舵者》??? ??行路有良友,便是天堂?? 目錄 一、前言 1、k8s概述 2、NFS簡(jiǎn)介 二、NFS服務(wù)器搭建 1、準(zhǔn)備NFS 服務(wù)器 2、搭建NFS服務(wù) 三、安裝k8s集群 1、環(huán)境準(zhǔn)備 2、禁用防火墻和SELinux 3、設(shè)置時(shí)間同步

    2024年04月13日
    瀏覽(21)
  • k8s單機(jī)部署mysql

    k8s單機(jī)部署mysql

    前面我們學(xué)習(xí)了k8s入門系列文章,了解了k8s的一些基礎(chǔ)概念以及怎么使用。本篇文章將進(jìn)行一個(gè)小小的實(shí)戰(zhàn),使用k8s來(lái)部署單機(jī)版的mysql數(shù)據(jù)庫(kù),基本涵蓋到前面講到的Namespace、Pod、Deployment、Service、PV、PVC、Secret等資源對(duì)象。 我們先畫一張結(jié)構(gòu)圖來(lái)表示整個(gè)部署的邏輯流程,

    2024年02月09日
    瀏覽(20)
  • K8s部署單機(jī)mysql

    定制配置數(shù)據(jù)存放在configMap mysql數(shù)據(jù)放在/opt/mysql目錄下(/opt/mysql目錄需要事先創(chuàng)建) root賬號(hào)密碼使用環(huán)境變量env 服務(wù)暴露方式為nodePort,端口30336 這里為了簡(jiǎn)單,PV使用了hostPath,所以需要將pod固定在一個(gè)node上??煽紤]使用nfs。 mysql57_deploy.yml

    2024年02月11日
    瀏覽(22)
  • 使用 RKE 方式搭建 K8s 集群并部署 NebulaGraph

    使用 RKE 方式搭建 K8s 集群并部署 NebulaGraph

    本文由社區(qū)用戶 Albert 貢獻(xiàn),首發(fā)于 NebulaGraph 論壇,旨在提供多一種的部署方式使用 NebulaGraph。 在本文,我將會(huì)詳細(xì)地記錄下我用 K8s 部署分布式圖數(shù)據(jù)庫(kù) NebulaGraph 的過(guò)程。下面是本次實(shí)踐的內(nèi)容規(guī)劃: 一到十章節(jié)為 K8s 集群搭建過(guò)程; 十一到十五章節(jié)為參考 NebulaGraph 官方

    2024年02月14日
    瀏覽(29)
  • K8S部署MySQL主從環(huán)境

    1.創(chuàng)建mysql主從環(huán)境的命名空間 2.創(chuàng)建master的pvc 3.創(chuàng)建mysql-master的headliness 4.創(chuàng)建mysql-master-service對(duì)外訪問(wèn) 5.創(chuàng)建mysql-master部署文件 6.檢查服務(wù)啟動(dòng)情況 7.創(chuàng)建mysql-slave的pvc 8.建mysql-slave的headliness和service用來(lái)對(duì)外訪問(wèn)(slave節(jié)點(diǎn)可以不創(chuàng)建service) 9.創(chuàng)建mysql-slave部署文件(mysql-serv

    2024年02月20日
    瀏覽(95)
  • K8s(kubernetes)集群搭建及dashboard安裝、基礎(chǔ)應(yīng)用部署

    K8s(kubernetes)集群搭建及dashboard安裝、基礎(chǔ)應(yīng)用部署

    本質(zhì)是一組服務(wù)器集群,在集群每個(gè)節(jié)點(diǎn)上運(yùn)行特定的程序,來(lái)對(duì)節(jié)點(diǎn)中的容器進(jìn)行管理。實(shí)現(xiàn)資源管理的自動(dòng)化。 自我修復(fù) 彈性伸縮 服務(wù)發(fā)現(xiàn) 負(fù)載均衡 版本回退 存儲(chǔ)編排 控制節(jié)點(diǎn)(master)-控制平面 APIserver :資源操作的唯一入口 scheduler :集群資源調(diào)度,將Pod調(diào)度到node節(jié)

    2024年02月08日
    瀏覽(32)
  • 【實(shí)戰(zhàn)】使用Helm在K8S集群安裝MySQL主從

    【實(shí)戰(zhàn)】使用Helm在K8S集群安裝MySQL主從

    K8S對(duì)于云原生部署有著至關(guān)重要的作用,幾乎所有的應(yīng)用和中間件都可以部署在K8S,讓其幫助我們進(jìn)行管理。一般情況下我們推薦數(shù)據(jù)庫(kù)不使用容器化部署,但是在某些場(chǎng)合為了方便管理也可以采用該種方式。今天我們就用在K8S集群部署MySQL,僅當(dāng)作學(xué)習(xí)學(xué)習(xí),在生產(chǎn)環(huán)境謹(jǐn)

    2024年02月22日
    瀏覽(99)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包