利用kubeSphere构建mysql的主从集群,同时测试主从集群结构部署成功。
- ```yaml
- kind: Secret
- apiVersion: v1
- metadata:
- name: mysql-cluster-secret
- namespace: athena-mall
- annotations:
- kubesphere.io/alias-name: 数据库集群秘钥
- kubesphere.io/creator: project-regular
- data:
- MYSQL_ROOT_PASSWORD: cm9vdA==
- type: Opaque
- ```


- kind: ConfigMap
- apiVersion: v1
- metadata:
- name: mysql-master
- namespace: athena-mall
- annotations:
- kubesphere.io/alias-name: 主数据库配置
- kubesphere.io/creator: project-regular
- data:
- my.cnf: |-
- [client]
- default-character-set=utf8
- [mysql]
- default-character-set=utf8
- [mysqld]
- init_connect='SET collation_connection = utf8_unicode_ci'
- init_connect='SET NAMES utf8'
- character-set-server=utf8
- collation-server=utf8_unicode_ci
- skip-character-set-client-handshake
- skip-name-resolve
- secure_file_priv=/var/lib/mysql
-
- server_id=1
- log-bin=mysql-bin
- read-only=0
- binlog-do-db=gulimall_ums # 填写你需要同步的数据库
-
- replicate-ignore-db=mysql # 不需要同步的数据库
- replicate-ignore-db=sys
- replicate-ignore-db=information_schema
- replicate-ignore-db=performance_schema

- kind: ConfigMap
- apiVersion: v1
- metadata:
- name: mysql-slave
- namespace: athena-mall
- annotations:
- kubesphere.io/alias-name: 从数据库配置
- kubesphere.io/creator: project-regular
- data:
- my.cnf: |-
- [client]
- default-character-set=utf8
- [mysql]
- default-character-set=utf8
- [mysqld]
- init_connect='SET collation_connection = utf8_unicode_ci'
- init_connect='SET NAMES utf8'
- character-set-server=utf8
- collation-server=utf8_unicode_ci
- skip-character-set-client-handshake
- skip-name-resolve
- secure_file_priv=/var/lib/mysql
-
- server_id=2
- log-bin=mysql-bin
- read-only=1
- binlog-do-db=gulimall_ums # 需要同步的数据库
-
- replicate-ignore-db=mysql # 不需要同步的数据库
- replicate-ignore-db=sys
- replicate-ignore-db=information_schema
- replicate-ignore-db=performance_schema

- kind: PersistentVolumeClaim
- apiVersion: v1
- metadata:
- name: mysql-master-pvc
- namespace: athena-mall
- annotations:
- kubesphere.io/alias-name: 主数据库pvc
- kubesphere.io/creator: project-regular
- kubesphere.io/description: 主数据库pvc
- pv.kubernetes.io/bind-completed: 'yes'
- pv.kubernetes.io/bound-by-controller: 'yes'
- volume.beta.kubernetes.io/storage-provisioner: openebs.io/local
- volume.kubernetes.io/selected-node: k8s-master
- finalizers:
- - kubernetes.io/pvc-protection
- spec:
- accessModes:
- - ReadWriteOnce
- resources:
- requests:
- storage: 10Gi
- volumeName: pvc-5bcb27d7-f06e-4dc5-8325-73878be6fedc
- storageClassName: local
- volumeMode: Filesystem
- kind: PersistentVolumeClaim
- apiVersion: v1
- metadata:
- name: mysql-slave-pvc
- namespace: athena-mall
- annotations:
- kubesphere.io/alias-name: 从数据库pvc
- kubesphere.io/creator: project-regular
- kubesphere.io/description: 从数据库pvc
- pv.kubernetes.io/bind-completed: 'yes'
- pv.kubernetes.io/bound-by-controller: 'yes'
- volume.beta.kubernetes.io/storage-provisioner: openebs.io/local
- volume.kubernetes.io/selected-node: k8s-master
- finalizers:
- - kubernetes.io/pvc-protection
- spec:
- accessModes:
- - ReadWriteOnce
- resources:
- requests:
- storage: 10Gi
- volumeName: pvc-1bfd6216-62dd-46f5-97bb-334c57948c31
- storageClassName: local
- volumeMode: Filesystem


- kind: Service
- apiVersion: v1
- metadata:
- name: mysql-master
- namespace: athena-mall
- labels:
- app: mysql-master
- version: v1
- annotations:
- kubesphere.io/creator: project-regular
- kubesphere.io/serviceType: statefulservice
- spec:
- ports:
- - name: tcp-3306
- protocol: TCP
- port: 3306
- targetPort: 3306
- - name: tcp-33060
- protocol: TCP
- port: 33060
- targetPort: 33060
- selector:
- app: mysql-master
- clusterIP: None
- clusterIPs:
- - None
- type: ClusterIP
- sessionAffinity: None
- ipFamilies:
- - IPv4
- ipFamilyPolicy: SingleStack

- kind: Service
- apiVersion: v1
- metadata:
- name: mysql-slave
- namespace: athena-mall
- labels:
- app: mysql-slave
- version: v1
- annotations:
- kubesphere.io/creator: project-regular
- kubesphere.io/serviceType: statefulservice
- spec:
- ports:
- - name: tcp-3306
- protocol: TCP
- port: 3306
- targetPort: 3306
- - name: tcp-33060
- protocol: TCP
- port: 33060
- targetPort: 33060
- selector:
- app: mysql-slave
- clusterIP: None
- clusterIPs:
- - None
- type: ClusterIP
- sessionAffinity: None
- ipFamilies:
- - IPv4
- ipFamilyPolicy: SingleStack
- 进入master 容器
- kubectl exec -it mysql-master /bin/bash
-
- 进入mysql 内部(mysql –uroot -proot)
-
- 授权root 可以远程访问( 主从无关,为了方便我们远程连接mysql):
-
- grant all privileges on . to 'root'@'%' identified by 'root' with grant option;
- flush privileges;
- 添加用来同步的用户
-
- GRANT REPLICATION SLAVE ON . to 'backup'@'%' identified by 'mysql的密码';
- 查看master 状态
-
- show master status\G;

- 进入slaver 容器
- kubectl exec -it mysql-slaver /bin/bash
-
- 进入mysql 内部(mysql –uroot -p)
-
- 授权root 可以远程访问( 主从无关,为了方便我们远程连接mysql)
-
- grant all privileges on . to 'root'@'%' identified by 'root' with grant option;
- flush privileges;
- 设置主库连接
-
- change master to master_host='k8s中master的域名地址',master_user='backup',master_password='master的密码',master_log_file='mysql-bin.000003',master_log_pos=0,master_port=3306;
-
- 启动从库同步
- start slave;
-
- 查看从库状态
- show slave status\G;

- kind: Service
- apiVersion: v1
- metadata:
- name: master-ip
- namespace: athena-mall
- labels:
- app: master-ip
- annotations:
- kubesphere.io/creator: project-regular
- spec:
- ports:
- - name: http-mysql1
- protocol: TCP
- port: 3306
- targetPort: 3306
- nodePort: 30212
- - name: http-mysql2
- protocol: TCP
- port: 33060
- targetPort: 33060
- nodePort: 30443
- selector:
- app: mysql-master
- version: v1
- clusterIP: 10.233.31.134
- clusterIPs:
- - 10.233.31.134
- type: NodePort
- sessionAffinity: None
- externalTrafficPolicy: Cluster
- ipFamilies:
- - IPv4
- ipFamilyPolicy: SingleStack
- kind: Service
- apiVersion: v1
- metadata:
- name: slave-ip
- namespace: athena-mall
- labels:
- app: slave-ip
- annotations:
- kubesphere.io/creator: project-regular
- spec:
- ports:
- - name: http-mysql
- protocol: TCP
- port: 3306
- targetPort: 3306
- nodePort: 32597
- selector:
- app: mysql-slave
- version: v1
- clusterIP: 10.233.1.47
- clusterIPs:
- - 10.233.1.47
- type: NodePort
- sessionAffinity: None
- externalTrafficPolicy: Cluster
- ipFamilies:
- - IPv4
- ipFamilyPolicy: SingleStack


KubernetesProject/kubeSphere构建mysql集群/kubeSphere构建mysql集群.md · 庄小焱/DockerPrinciple - Gitee.com