亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在k8s上部署mysql 8.0 MGR

發布時間:2021-08-26 18:26:32 來源:億速云 閱讀:532 作者:chen 欄目:MySQL數據庫

本篇內容介紹了“怎么在k8s上部署mysql 8.0 MGR”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

一。環境概述

     k8s環境:1臺master節點,3臺node節點。

怎么在k8s上部署mysql 8.0 MGR

      在三個節點上搭建MGR集群。mysql的數據文件是掛載在本地存儲,在鏡像制作完成后,需要把初始化后的數據文件copy到三個節點本地的掛載點/data/mysql/data/,另外需要修改auto.cnf里面的uuid,讓三個節點的uuid不同。

二。搭建步驟

  1. 制作mysql 8.0.15鏡像

    此步驟略過,參照mysql官方的二進制包安裝步驟, https://dev.mysql.com/doc/refman/8.0/en/binary-installation.html。   安裝完畢后制作成鏡像。

  2. 準備生成三個節點pod的相關yaml文件。

    ---創建namespace的文件namespace.yaml:

    apiVersion: v1
    kind: Namespace
    metadata:
      name: mysqldb

    ---節點1的configmap文件mysql-mgr-cnf-0.yaml:

    apiVersion: v1
    data:
      mysql-mgr-0.cnf: |
        [mysqld]
        port = 3306
        character_set_server = utf8
        socket = /tmp/mysql.sock
        basedir = /usr/local/mysql
        log-error = /data/mysql/data/mysql.err
        pid-file = /data/mysql/data/mysql.pid
        datadir = /data/mysql/data
        server_id = 092832
        log_bin = mysql-bin
        relay-log = relay-bin
        #back_log = 500
        #max_connections = 3000
        #wait_timeout = 5022397
        interactive_timeout = 5022397
        max_connect_errors = 1000
        relay-log-recovery=1
        #max_allowed_packet = 32M
        sort_buffer_size = 4M
        read_buffer_size = 4M
        join_buffer_size = 8M
        thread_cache_size = 64
        #tmp_table_size = 256M
        log_slave_updates=1
        long_query_time = 1
        slow_query_log = 1
        slow_query_log_file = /data/mysql/data/slow_sql.log
        skip-name-resolve
        sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
        innodb_buffer_pool_size=700M
        #innodb_data_file_path = ibdata1:1024M:autoextend
        innodb_flush_log_at_trx_commit=1
        innodb_log_buffer_size = 16M
        innodb_log_file_size = 256M
        innodb_log_files_in_group = 2
        innodb_max_dirty_pages_pct = 50
        sync_binlog=1
        master_info_repository=TABLE
        relay_log_info_repository=TABLE
        log_timestamps=SYSTEM
        gtid_mode = ON
        enforce_gtid_consistency = ON
        master_info_repository = TABLE
        relay_log_info_repository = TABLE
        log_slave_updates = ON
        binlog_checksum = NONE
        log_slave_updates = ON
        slave_parallel_type=LOGICAL_CLOCK
        slave_parallel_workers=8
        slave-preserve-commit-order=on
        #group_replication_compression_threshold=200000
        transaction_write_set_extraction = XXHASH64
        loose-group_replication_group_name="01e5fb97-be64-41f7-bafd-3afc7a6ab555"
        loose-group_replication_start_on_boot=off
        loose-group_replication_local_address="mysql-mgr-0.mgrtest.mysqldb.svc.cluster.local.:13306"
        loose-group_replication_group_seeds="mysql-mgr-0.mgrtest.mysqldb.svc.cluster.local.:13306,mysql-mgr-1.mgrtest.mysqldb.svc.cluster.local.:13306,mysql-mgr-2.mgrtest.mysqldb.svc.cluster.local.:13306"
        loose-group_replication_bootstrap_group = off
        loose-group_replication_ip_whitelist='10.244.0.0/16,172.17.0.0/16,10.229.0.0/16,10.228.0.0/16'
        report_host = mysql-mgr-0.mgrtest.mysqldb.svc.cluster.local
        [mysqldump]
        quick
        max_allowed_packet = 32M
    kind: ConfigMap
    metadata:
      name: mysql-mgr-0-cnf
      namespace: mysqldb


    ---節點2的configmap文件mysql-mgr-cnf-1.yaml:

    apiVersion: v1
    data:
      mysql-mgr-1.cnf: |
        [mysqld]
        port = 3306
        character_set_server = utf8
        socket = /tmp/mysql.sock
        basedir = /usr/local/mysql
        log-error = /data/mysql/data/mysql.err
        pid-file = /data/mysql/data/mysql.pid
        datadir = /data/mysql/data
        server_id = 092231
        log_bin = mysql-bin
        relay-log = relay-bin
        #back_log = 500
        #max_connections = 3000
        #wait_timeout = 5022397
        interactive_timeout = 5022397
        max_connect_errors = 1000
        relay-log-recovery=1
        #max_allowed_packet = 32M
        sort_buffer_size = 4M
        read_buffer_size = 4M
        join_buffer_size = 8M
        thread_cache_size = 64
        #tmp_table_size = 256M
        log_slave_updates=1
        long_query_time = 1
        slow_query_log = 1
        slow_query_log_file = /data/mysql/data/slow_sql.log
        skip-name-resolve
        sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
        innodb_buffer_pool_size=700M
        #innodb_data_file_path = ibdata1:1024M:autoextend
        innodb_flush_log_at_trx_commit=1
        innodb_log_buffer_size = 16M
        innodb_log_file_size = 256M
        innodb_log_files_in_group = 2
        innodb_max_dirty_pages_pct = 50
        sync_binlog=1
        master_info_repository=TABLE
        relay_log_info_repository=TABLE
        log_timestamps=SYSTEM
        gtid_mode = ON
        enforce_gtid_consistency = ON
        master_info_repository = TABLE
        relay_log_info_repository = TABLE
        log_slave_updates = ON
        binlog_checksum = NONE
        log_slave_updates = ON
        slave_parallel_type=LOGICAL_CLOCK
        slave_parallel_workers=8
        slave-preserve-commit-order=on
        #group_replication_compression_threshold=200000
        transaction_write_set_extraction = XXHASH64
        loose-group_replication_group_name="01e5fb97-be64-41f7-bafd-3afc7a6ab555"
        loose-group_replication_start_on_boot=off
        loose-group_replication_local_address="mysql-mgr-1.mgrtest.mysqldb.svc.cluster.local.:13306"
        loose-group_replication_group_seeds="mysql-mgr-0.mgrtest.mysqldb.svc.cluster.local.:13306,mysql-mgr-1.mgrtest.mysqldb.svc.cluster.local.:13306,mysql-mgr-2.mgrtest.mysqldb.svc.cluster.local.:13306"
        loose-group_replication_bootstrap_group = off
        loose-group_replication_ip_whitelist='10.244.0.0/16,172.17.0.0/16,10.229.0.0/16,10.228.0.0/16'
        report_host = mysql-mgr-1.mgrtest.mysqldb.svc.cluster.local
        [mysqldump]
        quick
        max_allowed_packet = 32M
    kind: ConfigMap
    metadata:
      name: mysql-mgr-1-cnf
      namespace: mysqldb


    ---節點3的configmap文件mysql-mgr-cnf-2.yaml:

    apiVersion: v1
    data:
      mysql-mgr-2.cnf: |
        [mysqld]
        port = 3306
        character_set_server = utf8
        socket = /tmp/mysql.sock
        basedir = /usr/local/mysql
        log-error = /data/mysql/data/mysql.err
        pid-file = /data/mysql/data/mysql.pid
        datadir = /data/mysql/data
        server_id = 092132
        log_bin = mysql-bin
        relay-log = relay-bin
        #back_log = 500
        #max_connections = 3000
        #wait_timeout = 5022397
        interactive_timeout = 5022397
        max_connect_errors = 1000
        relay-log-recovery=1
        #max_allowed_packet = 32M
        sort_buffer_size = 4M
        read_buffer_size = 4M
        join_buffer_size = 8M
        thread_cache_size = 64
        #tmp_table_size = 256M
        log_slave_updates=1
        long_query_time = 1
        slow_query_log = 1
        slow_query_log_file = /data/mysql/data/slow_sql.log
        skip-name-resolve
        sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
        innodb_buffer_pool_size=700M
        #innodb_data_file_path = ibdata1:1024M:autoextend
        innodb_flush_log_at_trx_commit=1
        innodb_log_buffer_size = 16M
        innodb_log_file_size = 256M
        innodb_log_files_in_group = 2
        innodb_max_dirty_pages_pct = 50
        sync_binlog=1
        master_info_repository=TABLE
        relay_log_info_repository=TABLE
        log_timestamps=SYSTEM
        gtid_mode = ON
        enforce_gtid_consistency = ON
        master_info_repository = TABLE
        relay_log_info_repository = TABLE
        log_slave_updates = ON
        binlog_checksum = NONE
        log_slave_updates = ON
        slave_parallel_type=LOGICAL_CLOCK
        slave_parallel_workers=8
        slave-preserve-commit-order=on
        #group_replication_compression_threshold=200000
        transaction_write_set_extraction = XXHASH64
        loose-group_replication_group_name="01e5fb97-be64-41f7-bafd-3afc7a6ab555"
        loose-group_replication_start_on_boot=off
        loose-group_replication_local_address="mysql-mgr-2.mgrtest.mysqldb.svc.cluster.local.:13306"
        loose-group_replication_group_seeds="mysql-mgr-0.mgrtest.mysqldb.svc.cluster.local.:13306,mysql-mgr-1.mgrtest.mysqldb.svc.cluster.local.:13306,mysql-mgr-2.mgrtest.mysqldb.svc.cluster.local.:13306"
        loose-group_replication_bootstrap_group = off
        loose-group_replication_ip_whitelist='10.244.0.0/16,172.17.0.0/16,10.229.0.0/16,10.228.0.0/16'
        report_host = mysql-mgr-2.mgrtest.mysqldb.svc.cluster.local
        [mysqldump]
        quick
        max_allowed_packet = 32M
    kind: ConfigMap
    metadata:
      name: mysql-mgr-2-cnf
      namespace: mysqldb

    ----節點1的pod的yaml文件:
    apiVersion: v1
    kind: Pod
    metadata:
      name: mysql-mgr-0
      namespace: mysqldb
      labels:
        name: mysql-mgr
    spec:
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
              - matchExpressions:
                - key: mysqlrole
                  operator: In
                  values: ["mysql-mgr-0"]
      hostname: mysql-mgr-0
      subdomain: mgrtest
      containers:
      - image: 172.16.110.102:5000/mysql8.0:latest
        name: mysql-mgr-0
        imagePullPolicy: IfNotPresent
        command: [ "/bin/bash", "-ce", "cd /usr/local/mysql && bin/mysqld_safe --defaults-file=/etc/my.cnf && tail -f /dev/null" ]
        #env:
        #- name: MYSQL_ROOT_PASSWORD
        #  value: noc-mysql
        ports:
          - containerPort: 3306
        volumeMounts:
        - name: tz-config
          mountPath: /etc/localtime
        - name: mysql-data
          mountPath: /data/mysql/data/
        - name: mysql-config
          mountPath: /etc/my.cnf
          subPath: my.cnf
        env:
        - name: INNODB_BUFFER_POOL_SIZE
          value: 500M
        #- name: REPORT_HOST
        #  value: mysql-mgr-0.mgrtest.mysqldb.svc.cluster.local
      volumes:
        - name: tz-config
          hostPath:
            path: /etc/localtime
        - name: mysql-data
          hostPath:
            path: /data/mysql/data/
        - name: mysql-config
          configMap:
            name: mysql-mgr-0-cnf
            items:
              - key: mysql-mgr-0.cnf
                path: my.cnf
    ----節點2的pod的yaml文件:

    apiVersion: v1
    kind: Pod
    metadata:
      name: mysql-mgr-1
      namespace: mysqldb
      labels:
        name: mysql-mgr
    spec:
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
              - matchExpressions:
                - key: mysqlrole
                  operator: In
                  values: ["mysql-mgr-1"]
      hostname: mysql-mgr-1
      subdomain: mgrtest
      containers:
      - image: 172.16.110.102:5000/mysql8.0:latest
        name: mysql-mgr-1
        imagePullPolicy: IfNotPresent
        command: [ "/bin/bash", "-ce", "cd /usr/local/mysql && bin/mysqld_safe --defaults-file=/etc/my.cnf && tail -f /dev/null" ]
        #env:
        #- name: MYSQL_ROOT_PASSWORD
        #  value: noc-mysql
        ports:
          - containerPort: 3306
        volumeMounts:
        - name: tz-config
          mountPath: /etc/localtime
        - name: mysql-data
          mountPath: /data/mysql/data
        - name: mysql-config
          mountPath: /etc/my.cnf
          subPath: my.cnf
        env:
        - name: INNODB_BUFFER_POOL_SIZE
          value: 500M
      volumes:
        - name: tz-config
          hostPath:
            path: /etc/localtime
        - name: mysql-data
          hostPath:
            path: /data/mysql/data/
        - name: mysql-config
          configMap:
            name: mysql-mgr-1-cnf
            items:
              - key: mysql-mgr-1.cnf
                path: my.cnf

    ---節點3的pod的yaml文件:

    apiVersion: v1
    kind: Pod
    metadata:
      name: mysql-mgr-2
      namespace: mysqldb
      labels:
        name: mysql-mgr
    spec:
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
              - matchExpressions:
                - key: mysqlrole
                  operator: In
                  values: ["mysql-mgr-2"]
      hostname: mysql-mgr-2
      subdomain: mgrtest
      containers:
      - image: 172.16.110.102:5000/mysql8.0:latest
        name: mysql-mgr-2
        imagePullPolicy: IfNotPresent
        command: [ "/bin/bash", "-ce", "cd /usr/local/mysql && bin/mysqld_safe --defaults-file=/etc/my.cnf && tail -f /dev/null" ]
        #env:
        #- name: MYSQL_ROOT_PASSWORD
        #  value: noc-mysql
        ports:
          - containerPort: 3306
        volumeMounts:
        - name: tz-config
          mountPath: /etc/localtime
        - name: mysql-data
          mountPath: /data/mysql/data
        - name: mysql-config
          mountPath: /etc/my.cnf
          subPath: my.cnf
        env:
        - name: INNODB_BUFFER_POOL_SIZE
          value: 500M
      volumes:
        - name: tz-config
          hostPath:
            path: /etc/localtime
        - name: mysql-data
          hostPath:
            path: /data/mysql/data/
        - name: mysql-config
          configMap:
            name: mysql-mgr-2-cnf
            items:
              - key: mysql-mgr-2.cnf
                path: my.cnf

    ---為三個pod創建的service的yaml文件

    apiVersion: v1
    kind: Service
    metadata:
      name: mgrtest
      namespace: mysqldb
    spec:
      selector:
        name: mysql-mgr
      clusterIP:   None
      ports:
      - name:   foo
        port:   3306
        targetPort: 3306

  3.  創建namespace,service,configmap,pod

    kubectl create -f namespace.yaml

    kubectl create -f mysql-mgr-svc.yaml

    kubectl create -f mysql-mgr-cnf-0.yaml

    kubectl create -f mysql-mgr-cnf-1.yaml

    kubectl create -f mysql-mgr-cnf-2.yaml

    kubectl create -f mysql-mgr-0-pod.yaml

    kubectl create -f mysql-mgr-1-pod.yaml

    kubectl create -f mysql-mgr-2-pod.yaml

    創建后如下圖所示:

    怎么在k8s上部署mysql 8.0 MGR


  4.  配置節點1:

    root@dkm:/app/mgr# kubectl exec -it mysql-mgr-0 -n mysqldb /bin/bash

    root@mysql-mgr-0:/# /usr/local/mysql/bin/mysql -uroot -p


    alter user 'root'@'localhost' identified by 'Mysql123!@#';
    set sql_log_bin=0;
    create user rpl_user@'%' identified by 'Rpl_pass@123';
    grant replication slave on *.* to rpl_user@'%';
    flush privileges;
    set sql_log_bin=1;
    change master to master_user='rpl_user',master_password='Rpl_pass@123' for channel 'group_replication_recovery';
    install PLUGIN group_replication SONAME 'group_replication.so';

    reset master;
    set global group_replication_single_primary_mode=FALSE;
    set global group_replication_enforce_update_everywhere_checks=TRUE;
    set global group_replication_bootstrap_group=ON;
    start group_replication;
    set global group_replication_bootstrap_group=OFF;
    select * from performance_schema.replication_group_members;
    怎么在k8s上部署mysql 8.0 MGR


  5. 配置節點2:

    set sql_log_bin=0;
    create user rpl_user@'%' identified by 'Rpl_pass@123';
    grant replication slave on *.* to rpl_user@'%';
    flush privileges;
    set sql_log_bin=1;
    change master to master_user='rpl_user',master_password='Rpl_pass@123' for channel 'group_replication_recovery';
    install PLUGIN group_replication SONAME 'group_replication.so';

    reset master;
    set global group_replication_single_primary_mode=FALSE;
    set global group_replication_enforce_update_everywhere_checks=TRUE;
    set global group_replication_recovery_get_public_key=on;
    start group_replication;
    select * from performance_schema.replication_group_members;

    怎么在k8s上部署mysql 8.0 MGR

  6.   配置節點3:

    set sql_log_bin=0;
    create user rpl_user@'%' identified by 'Rpl_pass@123';
    grant replication slave on *.* to rpl_user@'%';
    flush privileges;
    set sql_log_bin=1;
    change master to master_user='rpl_user',master_password='Rpl_pass@123' for channel 'group_replication_recovery';
    install PLUGIN group_replication SONAME 'group_replication.so';

    reset master;
    set global group_replication_single_primary_mode=FALSE;
    set global group_replication_enforce_update_everywhere_checks=TRUE;
    set global group_replication_recovery_get_public_key=on;
    start group_replication;
    select * from performance_schema.replication_group_members;

    怎么在k8s上部署mysql 8.0 MGR

     

  7. 總結:

    (1)節點之間是通過域名互相通訊,域名的構成: hostname.service.namespace.svc.cluster.local.

    (2)注意在每個節點的配置文件里配置report_host為該節點的域名,也就是hostname.service.namespace.svc.cluster.local。否則會報錯:

    2019-04-10T09:16:53.607069+08:00 55 [ERROR] [MY-010584] [Repl] Slave I/O for channel 'group_replication_recovery': error connecting to master 'rpl_user@mysql-mgr-0:3306' - retry-time: 60  retries: 1, Error_code: MY-002005
    ...

    2019-04-10T09:17:53.682099+08:00 24 [ERROR] [MY-011582] [Repl] Plugin group_replication reported: 'There was an error when connecting to the donor server. Please check that group_replication_recovery channel credentials and all MEMBER_HOST column values of performance_schema.replication_group_members table are correct and DNS resolvable.'

“怎么在k8s上部署mysql 8.0 MGR”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

梁河县| 本溪市| 肇东市| 西昌市| 宜良县| 璧山县| 大同市| 彭州市| 安图县| 武清区| 来安县| 西吉县| 泰安市| 呼和浩特市| 平果县| 礼泉县| 忻州市| 大丰市| 宜城市| 扎囊县| 乳源| 如东县| 陆川县| 灵川县| 宜兰市| 文山县| 纳雍县| 黄平县| 永新县| 永和县| 台东市| 宽甸| 阆中市| 承德县| 祥云县| 保靖县| 阿拉善左旗| 尼勒克县| 镇坪县| 桦甸市| 乳源|