anaconda可以做网站吗jquery网站开发实例
- 作者: 五速梦信息网
- 时间: 2026年04月16日 21:07
当前位置: 首页 > news >正文
anaconda可以做网站吗,jquery网站开发实例,网站代理违法吗,昆明响应式网站制作【K8s】#xff1a;在 Kubernetes 集群中部署 MySQL8.0 高可用集群#xff08;1主2从#xff09; 一、准备工作二、搭建nfs服务器2.1 安装 NFS 服务器软件包#xff08;所有节点执行#xff09;2.2 设置共享目录2.3 启动 NFS 服务器2.4 设置防火墙规则#xff08;可选在 Kubernetes 集群中部署 MySQL8.0 高可用集群1主2从 一、准备工作二、搭建nfs服务器2.1 安装 NFS 服务器软件包所有节点执行2.2 设置共享目录2.3 启动 NFS 服务器2.4 设置防火墙规则可选2.5 验证 NFS 服务器 三、搭建部署mysql主节点3.1 创建命名空间3.2 创建一个名为 mysql-password 的 Secret3.3 创建持久卷PV和持久卷声明PVC3.4 创建主节点的mysql配置文件3.5 生成 master 节点的mysql ConfigMap 的 YAML 资源描述文件3.6 应用 YAML 文件到 Kubernetes 集群3.7 获取在指定命名空间deploy-mysql中所有资源的详细信息3.8 查看NFS 挂载的目录路径3.9 连接数据库测试 四、搭建部署第1个Slave4.1 创建持久卷PV和持久卷声明PVC4.2 创建slave01从节点配置文件4.3 生成 slave01 节点的mysql ConfigMap 的 YAML 资源描述文件4.4 应用 YAML 文件到 Kubernetes 集群4.5 获取在指定命名空间deploy-mysql中所有资源的详细信息 五、搭建部署第2个Slave5.1 创建持久卷PV和持久卷声明PVC5.2 创建slave02从节点配置文件5.3 生成 slave02 节点的mysql ConfigMap 的 YAML 资源描述文件5.4 应用 YAML 文件到 Kubernetes 集群5.5 获取在指定命名空间deploy-mysql中所有资源的详细信息 六、将三台服务器组成一个集群6.1 连接到deploy-mysql-master-0 的 Pod6.2 配置从节点Slave连接到主节点Master6.3 Slave01 加入master6.4 Slave02 加入master七、测试主从集群复制7.1 在主节点的 MySQL Pod中创建数据库并插入测试数据7.2 Slave01 、Slave02验证复制情况 The Begin点点关注收藏不迷路 Kubernetes 是一个强大的容器编排平台可以帮助我们管理和部署容器化应用。MySQL 是一个流行的关系型数据库在生产环境中通常需要高可用性和数据持久性。 本文将介绍如何在 Kubernetes 中部署 MySQL 集群以确保数据的高可用性和持久性。 一、准备工作 1、你已经安装并配置好了 Kubernetes 集群环境。 2、这里采用master作为 NFS 服务器如果在生产环境最好单独使用一台服务器部署 NFS 。 3、创建三个文件夹存放操作和部署文件 mkdir mysql-master mkdir mysql-slave01 mkdir mysql-slave02二、搭建nfs服务器 搭建 NFS 服务器是在网络上共享文件的一种常见方式它可以让多台计算机访问共享的文件系统。 以下是在 Linux 环境中搭建 NFS 服务器的基本步骤 2.1 安装 NFS 服务器软件包所有节点执行 使用 yum 安装 NFS 服务器软件包。在 CentOS 中NFS 服务器软件包通常称为 nfs-utils。 yum install nfs-utils2.2 设置共享目录 在 NFS 服务器例如 k8s-master上创建用于 MySQL 主从节点的数据目录。这些目录将用于存储 MySQL 实例的数据。然后你将这些目录导出给 Kubernetes 集群中的 Pod 使用。 1、在 NFS 服务器上创建数据目录 mkdir -p /data/nfs/{mysql-master,mysql-slaver-01,mysql-slaver-02}这将创建三个目录分别用于 MySQL 主节点和两个从节点。 2、配置导出 将这些数据目录导出给 Kubernetes 集群中的 Pod 使用。编辑 /etc/exports 文件并添加以下行 cat /etc/exports EOF /data/nfs/mysql-master *(rw,sync,no_root_squash) /data/nfs/mysql-slaver-01 *(rw,sync,no_root_squash) /data/nfs/mysql-slaver-02 *(rw,sync,no_root_squash) EOF这将允许所有客户端访问这些目录并授予读写权限同时启用同步模式和允许 root 用户访问。 2.3 启动 NFS 服务器 在编辑完 /etc/exports 文件后主节点重新启动 NFS 服务以使更改生效。 sudo systemctl start nfs-server sudo systemctl enable nfs-server sudo systemctl status nfs-server2.4 设置防火墙规则可选 如果你的服务器启用了防火墙确保允许 NFS 流量通过防火墙。例如使用 firewalld 来添加防火墙规则 sudo firewall-cmd –permanent –add-servicenfs sudo firewall-cmd –reload2.5 验证 NFS 服务器 最后使用 showmount 命令验证 NFS 服务器是否正确工作。运行以下命令 showmount -e 192.168.234.20如果一切设置正确你应该会看到列出了共享的目录 /data/nfs/。 至此你已经成功安装并配置了 NFS 服务器使其他计算机能够通过网络访问共享的文件。 三、搭建部署mysql主节点 3.1 创建命名空间 使用 kubectl create namespace deploy-mysql 命令来创建 deploy-mysql 命名空间。这将为部署 MySQL 集群提供一个隔离的环境。 kubectl create namespace deploy-mysql 3.2 创建一个名为 mysql-password 的 Secret 创建一个名为 mysql-password 的 Secret其中包含了 MySQL root 用户的密码并且指定了命名空间为 deploy-test 的 Kubernetes YAML 配置 kubectl create secret generic mysql-password –namespacedeploy-mysql –from-literalmysql_root_passwordroot –dry-runclient -oyaml将上述 YAML 配置保存为 mysql-secret.yaml 文件然后使用 kubectl apply -f mysql-secret.yaml 命令来创建 Secret。 apiVersion: v1 data:mysql_root_password: cm9vdA kind: Secret metadata:creationTimestamp: nullname: mysql-passwordnamespace: deploy-mysql列出命名空间 deploy-mysql 中的所有 Secrets。 [rootk8s-master ~]# kubectl get secret -n deploy-mysql3.3 创建持久卷PV和持久卷声明PVC 现在我将创建一个 PV 和 PVC 的清单文件以便使用 NFS 存储。 vim mysql-pv-pvc.yamlapiVersion: v1 kind: PersistentVolume metadata:name: deploy-mysql-master-nfs-pv # PV 的名称namespace: deploy-mysql # PV 所属的命名空间 spec:capacity:storage: 5Gi # PV 的存储容量为 5GB根据实际调整accessModes:- ReadWriteMany # 允许多个 Pod 同时对 PV 进行读写访问nfs:server: 192.168.234.20 # NFS 服务器的 IP 地址path: /data/nfs/mysql-master # NFS 服务器上暴露的目录路径storageClassName: nfs # PV 使用的存储类名称为 nfs—apiVersion: v1 kind: PersistentVolumeClaim metadata:name: deploy-mysql-master-nfs-pvc # PVC 的名称namespace: deploy-mysql # PVC 所属的命名空间 spec:accessModes:- ReadWriteMany # PVC 的访问模式为 ReadWriteManystorageClassName: nfs # PVC 使用的存储类名称为 nfsresources:requests:storage: 5Gi # 请求 5GB 的存储空间volumeName: deploy-mysql-master-nfs-pv # 将 PVC 绑定到 PV 的名称为 deploy-mysql-master-nfs-pv 现在使用以下命令来创建 PV 和 PVC kubectl apply -f mysql-master-pv-pvc.yamlkubectl get pv,pvc -n deploy-mysql3.4 创建主节点的mysql配置文件 vi my.cnf[mysqld] skip-host-cache # 不使用主机缓存 skip-name-resolve # 不解析主机名 datadir /var/lib/mysql # 数据文件存放目录 socket /var/run/mysqld/mysqld.sock # MySQL服务器套接字文件路径 secure-file-priv /var/lib/mysql-files # 指定安全文件的位置 pid-file /var/run/mysqld/mysqld.pid # PID文件路径 user mysql # MySQL服务运行的用户 secure-file-priv NULL # 禁用安全文件访问限制 server-id 1 # 服务器唯一标识符 log-bin master-bin # 启用二进制日志并指定日志文件名 log_bin_index master-bin.index # 二进制日志索引文件路径 binlog_do_db db_k8s # 仅记录指定数据库的操作到二进制日志 binlog_ignore_db information_schema # 忽略记录指定数据库的操作到二进制日志 binlog_ignore_db mysql # 忽略记录指定数据库的操作到二进制日志 binlog_ignore_db performance_schema # 忽略记录指定数据库的操作到二进制日志 binlog_ignore_db sys # 忽略记录指定数据库的操作到二进制日志 binlog-format ROW # 设置二进制日志格式为行格式[client] socket /var/run/mysqld/mysqld.sock # 客户端连接MySQL服务器时使用的套接字文件路径!includedir /etc/mysql/conf.d/ # 包含额外的配置文件目录3.5 生成 master 节点的mysql ConfigMap 的 YAML 资源描述文件 使用 kubectl create configmap 命令来生成 ConfigMap 的 YAML 资源描述文件这个 ConfigMap 指定mysql 配置文件 my.cnf。 kubectl create configmap mysql-master-configmap -n deploy-mysql –from-filemy.cnfmy.cnf –dry-runclient -o yaml这里的命令包括几个部分 mysql-master-configmap 是 ConfigMap 的名称。 -n deploy-mysql 指定了 ConfigMap 应该创建在 deploy-mysql 这个命名空间。 - -from-filemy.cnfmy.cnf 指定了要包括的文件。左边的 my.cnf 指定在 ConfigMap 中的键右边的 my.cnf 是本地文件名。 - -dry-runclient 表示这个命令将不会真正执行而是只预览将要创建的对象。 -o yaml 指定输出格式为 YAML。 复制保存生成后的内容为文件 mysql-master-configmap.yaml添加svc、StatefulSet的配置 vi mysql-master-configmap.yaml ,添加下面内容apiVersion: v1 data:my.cnf: |[mysqld]skip-host-cache # 不使用主机缓存skip-name-resolve # 不解析主机名datadir /var/lib/mysql # 数据文件存放目录socket /var/run/mysqld/mysqld.sock # MySQL服务器套接字文件路径secure-file-priv /var/lib/mysql-files # 指定安全文件的位置pid-file /var/run/mysqld/mysqld.pid # PID文件路径user mysql # MySQL服务运行的用户secure-file-priv NULL # 禁用安全文件访问限制server-id 1 # 服务器唯一标识符log-bin master-bin # 启用二进制日志并指定日志文件名binlog_do_db db_k8s # 仅记录指定数据库的操作到二进制日志log_bin_index master-bin.index # 二进制日志索引文件路径binlog_ignore_db information_schema # 忽略记录指定数据库的操作到二进制日志binlog_ignore_db mysql # 忽略记录指定数据库的操作到二进制日志binlog_ignore_db performance_schema # 忽略记录指定数据库的操作到二进制日志binlog_ignore_db sys # 忽略记录指定数据库的操作到二进制日志binlog-format ROW # 设置二进制日志格式为行格式[client]socket /var/run/mysqld/mysqld.sock # 客户端连接MySQL服务器时使用的套接字文件路径kind: ConfigMap metadata:creationTimestamp: nullname: mysql-master-configmapnamespace: deploy-mysql— apiVersion: v1 kind: Service metadata:name: deploy-mysql-master-svc # 定义服务的名称namespace: deploy-mysql # 定义服务所属的命名空间labels:app: mysql-master spec:ports:- port: 3306 # 服务暴露的端口号name: mysqltargetPort: 3306nodePort: 30306 # NodePort 类型服务的端口selector:app: mysql-master # 选择器选择哪些 Pod 作为后端type: NodePort # 服务类型为 NodePortsessionAffinity: ClientIP # 会话亲和性设置为 ClientIP—apiVersion: apps/v1 kind: StatefulSet metadata:name: deploy-mysql-master # StatefulSet 的名称namespace: deploy-mysql # StatefulSet 所属的命名空间 spec:selector:matchLabels:app: mysql-master # 选择器用于选择管理的 PodserviceName: deploy-mysql-master-svc # 关联的 Service 的名称replicas: 1 # 副本数template:metadata:labels:app: mysql-master # Pod 模板的标签spec:terminationGracePeriodSeconds: 10 # 终止优雅期的秒数containers:- args:- –character-set-serverutf8mb4 # MySQL 参数设置- –collation-serverutf8mb4_unicode_ci- –lower_case_table_names1- –default-time_zone8:00name: mysql # 容器的名称image: mysql:8.0.34 # 容器镜像ports:- containerPort: 3306 # 容器监听的端口号name: mysqlvolumeMounts:- name: mysql-data # 挂载的持久化卷mountPath: /var/lib/mysql- name: mysql-conf # 挂载的 ConfigMapmountPath: /etc/my.cnfreadOnly: truesubPath: my.cnfenv: # 容器的环境变量- name: MYSQL_ROOT_PASSWORDvalueFrom:secretKeyRef:key: mysql_root_passwordname: mysql-password # 引用的 Secret 的名称volumes:- name: mysql-data # 持久化卷的名称persistentVolumeClaim:claimName: deploy-mysql-master-nfs-pvc # 持久化卷声明的名称- name: mysql-conf # ConfigMap 的名称configMap:name: mysql-master-configmap # ConfigMap 的名称items:- key: my.cnf # ConfigMap 中的键值对mode: 0644 # 文件权限path: my.cnf # 挂载路径StatefulSet 是 Kubernetes 中用来部署有状态应用程序的资源对象。与 Deployment 不同StatefulSet 管理的 Pod 具有固定的标识符和稳定的网络标识符。 这使得 StatefulSet 适用于需要持久化存储、有序部署和唯一网络标识符的应用程序比如数据库。 3.6 应用 YAML 文件到 Kubernetes 集群 kubectl apply -f mysql-master-configmap.yaml3.7 获取在指定命名空间deploy-mysql中所有资源的详细信息 kubectl get all -o wide -n deploy-mysqlMySQL已经成功运行。 查看 Pod 的日志使用 kubectl logs 命令查看 Pod 的日志以了解容器为何崩溃。例如 kubectl logs deploy-mysql-master-0 -n deploy-mysql3.8 查看NFS 挂载的目录路径 检查其中的文件并确认是否存在 log-bin 文件。 ls -l /data/nfs/mysql-master//data/nfs/mysql-master/ 目录下已生成 MySQL 主节点的二进制日志文件如 master-bin.000001。 3.9 连接数据库测试 连接到 deploy-mysql-master-0 的 Pod 中的 MySQL 数据库并使用 root 用户身份登录。 [rootk8s-master ~]# kubectl exec -itn deploy-mysql pod/deploy-mysql-master-0 – mysql -uroot -p四、搭建部署第1个Slave 4.1 创建持久卷PV和持久卷声明PVC vi mysql-slave01-pv-pvc.yamlapiVersion: v1 kind: PersistentVolume metadata:name: deploy-mysql-slave-01-nfs-pv # 持久卷的名称namespace: deploy-mysql # 所属命名空间 spec:capacity:storage: 5Gi # 容量为5GiaccessModes:- ReadWriteMany # 可读可写多节点访问nfs:server: 192.168.234.20 # NFS 服务器地址path: /data/nfs/mysql-slaver-01 # NFS 路径storageClassName: nfs # 存储类名称为 nfs—apiVersion: v1 kind: PersistentVolumeClaim metadata:name: deploy-mysql-slave-01-nfs-pvc # 持久卷声明的名称namespace: deploy-mysql # 所属命名空间 spec:accessModes:- ReadWriteMany # 可读可写多节点访问storageClassName: nfs # 存储类名称为 nfsresources:requests:storage: 5Gi # 请求5Gi的存储容量volumeName: deploy-mysql-slave-01-nfs-pv # 关联的持久卷名称现在使用以下命令来创建slave 01 的 PV 和 PVC kubectl apply -f mysql-slave01-pv-pvc.yaml获取命名空间“deploy-mysql”中的所有持久卷PV和持久卷声明PVC kubectl get pv,pvc -n deploy-mysql4.2 创建slave01从节点配置文件 vi my.cnf[mysqld] skip-host-cache # 不使用主机缓存 skip-name-resolve # 不进行主机名解析 datadir /var/lib/mysql # MySQL 数据目录 socket /var/run/mysqld/mysqld.sock # MySQL Socket 文件路径 secure-file-priv /var/lib/mysql-files # 安全文件目录 pid-file /var/run/mysqld/mysqld.pid # MySQL 进程 ID 文件路径 user mysql # MySQL 运行用户 secure-file-priv NULL # 安全文件权限设置 server-id 2 # 从节点服务器 ID log-bin slave-bin # 二进制日志文件名 relay-log slave-relay-bin # 中继日志文件名 relay-log-index slave-relay-bin.index # 中继日志索引文件名[client] socket /var/run/mysqld/mysqld.sock # MySQL 客户端 Socket 文件路径4.3 生成 slave01 节点的mysql ConfigMap 的 YAML 资源描述文件 kubectl create configmap mysql-slave-01-configmap -n deploy-mysql –from-filemy.cnf –dry-runclient -o yaml复制保存生成后的内容为文件 mysql-slave01-configmap.yaml添加svc、StatefulSet的配置 vi mysql-slave01-configmap.yaml ,添加下面内容apiVersion: v1 data:my.cnf: |[mysqld]skip-host-cache # 不使用主机缓存skip-name-resolve # 不进行主机名解析datadir /var/lib/mysql # MySQL 数据目录socket /var/run/mysqld/mysqld.sock # MySQL Socket 文件路径secure-file-priv /var/lib/mysql-files # 安全文件目录pid-file /var/run/mysqld/mysqld.pid # MySQL 进程 ID 文件路径user mysql # MySQL 运行用户secure-file-priv NULL # 安全文件权限设置server-id 2 # 从节点服务器 IDlog-bin slave-bin # 二进制日志文件名relay-log slave-relay-bin # 中继日志文件名relay-log-index slave-relay-bin.index # 中继日志索引文件名[client]socket /var/run/mysqld/mysqld.sock # MySQL 客户端 Socket 文件路径kind: ConfigMap metadata:creationTimestamp: nullname: mysql-slave-01-configmapnamespace: deploy-mysql— apiVersion: v1 kind: Service metadata:name: deploy-mysql-slave-svc # MySQL从节点服务名称namespace: deploy-mysql # 部署的命名空间labels:app: mysql-slave spec:ports:- port: 3306name: mysqltargetPort: 3306nodePort: 30308 # 暴露的节点端口selector:app: mysql-slavetype: NodePortsessionAffinity: ClientIP— apiVersion: apps/v1 kind: StatefulSet metadata:name: deploy-mysql-slave-01 # MySQL从节点StatefulSet名称namespace: deploy-mysql # 部署的命名空间 spec:selector:matchLabels:app: mysql-slaveserviceName: deploy-mysql-slave-svc # 关联的Service名称replicas: 1template:metadata:labels:app: mysql-slavespec:terminationGracePeriodSeconds: 10containers:- args:- –character-set-serverutf8mb4- –collation-serverutf8mb4_unicode_ci- –lower_case_table_names1- –default-time_zone8:00name: mysql# image: docker.io/library/mysql:8.0.34image: mysql:8.0.34 # MySQL镜像地址ports:- containerPort: 3306name: mysqlvolumeMounts:- name: mysql-datamountPath: /var/lib/mysql- name: mysql-confmountPath: /etc/my.cnfreadOnly: truesubPath: my.cnfenv:- name: MYSQL_ROOT_PASSWORDvalueFrom:secretKeyRef:key: mysql_root_passwordname: mysql-passwordvolumes:- name: mysql-datapersistentVolumeClaim:claimName: deploy-mysql-slave-01-nfs-pvc # 持久卷声明名称- name: mysql-confconfigMap:name: mysql-slave-01-configmap # ConfigMap名称items:- key: my.cnfmode: 0644path: my.cnf4.4 应用 YAML 文件到 Kubernetes 集群 kubectl apply -f mysql-slave01-configmap.yaml4.5 获取在指定命名空间deploy-mysql中所有资源的详细信息 kubectl get all -o wide -n deploy-mysql日志查看 kubectl logs deploy-mysql-slave-01-0 -n deploy-mysqlMySQL已经成功运行。 五、搭建部署第2个Slave 5.1 创建持久卷PV和持久卷声明PVC vi mysql-slave02-pv-pvc.yamlapiVersion: v1 kind: PersistentVolume metadata:name: deploy-mysql-slave-02-nfs-pv # 持久卷的名称namespace: deploy-mysql # 所属命名空间 spec:capacity:storage: 5Gi # 容量为5GiaccessModes:- ReadWriteMany # 可读可写多节点访问nfs:server: 192.168.234.20 # NFS 服务器地址path: /data/nfs/mysql-slaver-02 # NFS 路径storageClassName: nfs # 存储类名称为 nfs—apiVersion: v1 kind: PersistentVolumeClaim metadata:name: deploy-mysql-slave-02-nfs-pvc # 持久卷声明的名称namespace: deploy-mysql # 所属命名空间 spec:accessModes:- ReadWriteMany # 可读可写多节点访问storageClassName: nfs # 存储类名称为 nfsresources:requests:storage: 5Gi # 请求5Gi的存储容量volumeName: deploy-mysql-slave-02-nfs-pv # 关联的持久卷名称现在使用以下命令来创建slave 02 的 PV 和 PVC kubectl apply -f mysql-slave02-pv-pvc.yaml获取命名空间“deploy-mysql”中的所有持久卷PV和持久卷声明PVC kubectl get pv,pvc -n deploy-mysql5.2 创建slave02从节点配置文件 vi my.cnf[mysqld] skip-host-cache # 不使用主机缓存 skip-name-resolve # 不进行主机名解析 datadir /var/lib/mysql # MySQL 数据目录 socket /var/run/mysqld/mysqld.sock # MySQL Socket 文件路径 secure-file-priv /var/lib/mysql-files # 安全文件目录 pid-file /var/run/mysqld/mysqld.pid # MySQL 进程 ID 文件路径 user mysql # MySQL 运行用户 secure-file-priv NULL # 安全文件权限设置 server-id 3 # 从节点服务器 ID log-bin slave-bin # 二进制日志文件名 relay-log slave-relay-bin # 中继日志文件名 relay-log-index slave-relay-bin.index # 中继日志索引文件名[client] socket /var/run/mysqld/mysqld.sock # MySQL 客户端 Socket 文件路径5.3 生成 slave02 节点的mysql ConfigMap 的 YAML 资源描述文件 kubectl create configmap mysql-slave-02-configmap -n deploy-mysql –from-filemy.cnf –dry-runclient -o yaml复制保存生成后的内容为文件 mysql-slave02-configmap.yaml添加svc、StatefulSet的配置 vi mysql-slave02-configmap.yaml ,添加下面内容apiVersion: v1 data:my.cnf: |[mysqld]skip-host-cache # 不使用主机缓存skip-name-resolve # 不进行主机名解析datadir /var/lib/mysql # MySQL 数据目录socket /var/run/mysqld/mysqld.sock # MySQL Socket 文件路径secure-file-priv /var/lib/mysql-files # 安全文件目录pid-file /var/run/mysqld/mysqld.pid # MySQL 进程 ID 文件路径user mysql # MySQL 运行用户secure-file-priv NULL # 安全文件权限设置server-id 3 # 从节点服务器 IDlog-bin slave-bin # 二进制日志文件名relay-log slave-relay-bin # 中继日志文件名relay-log-index slave-relay-bin.index # 中继日志索引文件名[client]socket /var/run/mysqld/mysqld.sock # MySQL 客户端 Socket 文件路径 kind: ConfigMap metadata:creationTimestamp: nullname: mysql-slave-02-configmapnamespace: deploy-mysql— apiVersion: apps/v1 kind: StatefulSet metadata:name: deploy-mysql-slave-02namespace: deploy-mysql spec:selector:matchLabels:app: mysql-slave-02serviceName: deploy-mysql-slave-svc ## 共用之前定义的 Servicereplicas: 1template:metadata:labels:app: mysql-slave-02spec:spec:nodeSelector:kubernetes.io/hostname: k8s-node02 ## 指定调度到 k8s-node02terminationGracePeriodSeconds: 10containers:- args:- –character-set-serverutf8mb4- –collation-serverutf8mb4_unicode_ci- –lower_case_table_names1- –default-time_zone8:00name: mysql# image: docker.io/library/mysql:8.0.34image: mysql:8.0.34ports:- containerPort: 3306name: mysqlvolumeMounts:- name: mysql-datamountPath: /var/lib/mysql- name: mysql-confmountPath: /etc/my.cnfreadOnly: truesubPath: my.cnfenv:- name: MYSQL_ROOT_PASSWORDvalueFrom:secretKeyRef:key: mysql_root_passwordname: mysql-passwordvolumes:- name: mysql-datapersistentVolumeClaim:claimName: deploy-mysql-slave-02-nfs-pvc- name: mysql-confconfigMap:name: mysql-slave-02-configmapitems:- key: my.cnfmode: 0644path: my.cnf5.4 应用 YAML 文件到 Kubernetes 集群 kubectl apply -f mysql-slave02-configmap.yaml5.5 获取在指定命名空间deploy-mysql中所有资源的详细信息 kubectl get all -o wide -n deploy-mysql注意可在yaml文件中添加配置指定pod调度到服务器 spec:nodeSelector:kubernetes.io/hostname: k8s-node02六、将三台服务器组成一个集群 6.1 连接到deploy-mysql-master-0 的 Pod
启动一个交互式会话连接到名为 deploy-mysql-master-0 的 Pod
kubectl exec -it -n deploy-mysql deploy-mysql-master-0 – mysql -uroot -p## 查看主节点的状态 show master status;6.2 配置从节点Slave连接到主节点Master 在 MySQL 中执行 CHANGE MASTER TO 命令用于配置从节点Slave连接到主节点Master的参数。在你的情况下你想在两个从节点中执行这个命令以便它们连接到主节点。 假设你已经连接到两个从节点的 MySQL Pod 中你可以分别执行以下命令来配置它们连接到主节点 CHANGE MASTER TO MASTER_HOSTdeploy-mysql-master-0.deploy-mysql-master-svc.deploy-mysql.svc.cluster.local, MASTER_PORT3306, MASTER_USERroot, MASTER_PASSWORDroot, MASTER_LOG_FILEmaster-bin.000003, MASTER_LOG_POS157, MASTER_CONNECT_RETRY30, GET_MASTER_PUBLIC_KEY1;需要注意下面的几个参数 master_host: 这个参数是master的地址kubernetes提供的解析规则是 pod名称.service名称.命名空间.svc.cluster.local 所以我们master的mysql地址是 deploy-mysql-master-0.deploy-mysql-master-svc.deploy-mysql.svc.cluster.local master_port: 主节点的mysql端口我们没改默认是3306 master_user: 登录到主节点的mysql用户 master_password: 登录到主节点要用到的密码 master_log_file: 我们之前查看mysql主节点状态时候的 File 字段 master_log_pos: 我们之前查看mysql主节点状态时候的 Position 字段 master_connect_retry: 主节点重连时间 get_master_public_key: 连接主mysql的公钥获取方式 根据上面参数按照自己的环境进行修改。 6.3 Slave01 加入master 1、进 入deploy-mysql-slave-01-0 的 Pod。 kubectl exec -itn deploy-mysql pod/deploy-mysql-slave-01-0 – mysql -uroot -p2、配置从节点Slave连接到主节点Master的参数 执行以下命令来配置它们连接到主节点 CHANGE MASTER TO MASTER_HOSTdeploy-mysql-master-0.deploy-mysql-master-svc.deploy-mysql.svc.cluster.local, MASTER_PORT3306, MASTER_USERroot, MASTER_PASSWORDroot, MASTER_LOG_FILEmaster-bin.000003, MASTER_LOG_POS157, MASTER_CONNECT_RETRY30, GET_MASTER_PUBLIC_KEY1;3、启动从节点的复制进程 START SLAVE; 4、查看从节点的复制状态 SHOW SLAVE STATUS\G;第一个从节点已经成功加入并开始复制主节点的数据。 6.4 Slave02 加入master 1、进 入deploy-mysql-slave-02-0 的 Pod。 kubectl exec -itn deploy-mysql pod/deploy-mysql-slave-02-0 – mysql -uroot -p2、配置从节点Slave连接到主节点Master的参数 执行以下命令来配置它们连接到主节点 CHANGE MASTER TO MASTER_HOSTdeploy-mysql-master-0.deploy-mysql-master-svc.deploy-mysql.svc.cluster.local, MASTER_PORT3306, MASTER_USERroot, MASTER_PASSWORDroot, MASTER_LOG_FILEmaster-bin.000003, MASTER_LOG_POS157, MASTER_CONNECT_RETRY30, GET_MASTER_PUBLIC_KEY1;3、启动从节点的复制进程 START SLAVE; 4、查看从节点的复制状态 SHOW SLAVE STATUS\G;第二个从节点已经成功加入并开始复制主节点的数据。 七、测试主从集群复制 7.1 在主节点的 MySQL Pod中创建数据库并插入测试数据 – 创建数据库 CREATE DATABASE IF NOT EXISTS db_k8s;– 切换到 testdb 数据库 USE db_k8s;– 创建数据表 t_user CREATE TABLE IF NOT EXISTS t_user (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(50) );– 向 t_user 表中插入数据 INSERT INTO t_user (name) VALUES (John), (Doe), (Jane); 7.2 Slave01 、Slave02验证复制情况 mysql USE db_k8s; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -ADatabase changed
mysql select * from t_user;
| id | name |
| 1 | John | | 2 | Doe |
| 3 | Jane |
3 rows in set (0.00 sec)mysql The End点点关注收藏不迷路
相关文章
-
amh面板安装wordpress宁波seo服务快速推广
amh面板安装wordpress宁波seo服务快速推广
- 技术栈
- 2026年04月16日
-
alexa的网站排名主要分为哪两种国外做自动化网站
alexa的网站排名主要分为哪两种国外做自动化网站
- 技术栈
- 2026年04月16日
-
ajax+jsp网站开发从入门到精通网页设计培训学校哪家好
ajax+jsp网站开发从入门到精通网页设计培训学校哪家好
- 技术栈
- 2026年04月16日
-
androidstudio入门教程国家二十条优化措施
androidstudio入门教程国家二十条优化措施
- 技术栈
- 2026年04月16日
-
android开发和网站开发开发区网站建设
android开发和网站开发开发区网站建设
- 技术栈
- 2026年04月16日
-
angular2.0网站制作led行业网站建设方案
angular2.0网站制作led行业网站建设方案
- 技术栈
- 2026年04月16日
