Kubernetes 之 MySQL 持久存储和故障转移(十一)
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,一、规划我们接着之前的文档的架构规划进行下面的操作。IP角色192.168.1.200k8s-master192.168.1.201k8s-node01192.168.1.202k8s-node021
千家信息网最后更新 2026年11月03日Kubernetes 之 MySQL 持久存储和故障转移(十一)
一、规划
我们接着之前的文档的架构规划进行下面的操作。
| IP | 角色 |
|---|---|
| 192.168.1.200 | k8s-master |
| 192.168.1.201 | k8s-node01 |
| 192.168.1.202 | k8s-node02 |
| 192.168.1.203 | k8s-store |
我们演示如何为 MySQL 数据库提供持久化存储,主要分为下面几个步骤:
- 创建 PV 和 PVC。
- 部署 MySQL。
- 向 MySQL 添加数据。
- 模拟节点宕机故障,Kubernetes 将 MySQL 自动迁移到其他节点。
- 验证数据一致性。
二、部署
1、创建 PV 和 PVC
我们 PV 的配置文件mysql-pv.yaml如下:
apiVersion: v1kind: PersistentVolumemetadata: name: mysql-pvspec: capacity: storage: 1Gi accessModes: - ReadWriteOnce nfs: path: /data/volumes/mysql-pv server: 192.168.1.203创建 PV。
[root@master ~]# kubectl apply -f mysql-pv.yaml persistentvolume/mysql-pv created[root@master ~]# kubectl get pvNAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGEmysql-pv 1Gi RWO Retain Available 7sPVC 的配置文件mysql-pvc.yaml内容如下:
apiVersion: v1kind: PersistentVolumeClaimmetadata: name: mysql-pvcspec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi创建 PVC。
[root@master ~]# kubectl apply -f mysql-pvc.yaml persistentvolumeclaim/mysql-pvc created[root@master ~]# kubectl get pvcNAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGEmysql-pvc Bound mysql-pv 1Gi RWO 7s2、部署 MySQL
MySQL 的配置文件mysql.yaml如下:
apiVersion: v1kind: Servicemetadata: name: mysqlspec: ports: - port: 3306 selector: app: mysql---apiVersion: extensions/v1beta1kind: Deploymentmetadata: name: mysqlspec: selector: matchLabels: app: mysql template: metadata: labels: app: mysql spec: containers: - name: mysql image: mysql:5.6 env: - name: MYSQL_ROOT_PASSWORD value: password ports: - name: mysql containerPort: 3306 volumeMounts: - name: mysql-persistent-storage mountPath: /var/lib/mysql volumes: - name: mysql-persistent-storage persistentVolumeClaim: claimName: mysql-pvcPVC mysql-pvc Bound 的 PV mysql-pv 将被 mount 到 MySQL 的数据目录 /var/lib/mysql。
[root@master ~]# kubectl apply -f mysql.yaml service/mysql createddeployment.extensions/mysql created[root@master ~]# kubectl get pod -o wideNAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATESmysql-7686899cf9-d4m42 1/1 Running 0 62s 10.244.2.17 node02 3、更新 MySQL 数据
MySQL 被部署到 k8s-node02,下面通过客户端访问 Service mysql:
[root@master ~]# kubectl run -it --rm --image=mysql:5.6 --restart=Never mysql-client -- mysql -h mysql -ppasswordIf you don't see a command prompt, try pressing enter.mysql>我们在mysql库中创建一个表myid,然后在表里新增几条数据。
mysql> use mysqlReading table information for completion of table and column namesYou can turn off this feature to get a quicker startup with -ADatabase changedmysql> create table myid( id int(4) );Query OK, 0 rows affected (0.04 sec)mysql> insert myid values( 111 );Query OK, 1 row affected (0.00 sec)mysql> select * from myid;+------+| id |+------+| 111 |+------+1 row in set (0.00 sec)4、故障转移
我们现在把 node02 机器关机,模拟节点宕机故障。
一段时间之后,Kubernetes 将 MySQL 迁移到 k8s-node01。
[root@master ~]# kubectl get pod -o wideNAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATESmysql-7686899cf9-8z6tc 1/1 Running 0 21s 10.244.1.19 node01 mysql-7686899cf9-d4m42 1/1 Terminating 0 23m 10.244.2.17 node02 验证数据的一致性。
[root@master ~]# kubectl run -it --rm --image=mysql:5.6 --restart=Never mysql-client -- mysql -h mysql -ppasswordIf you don't see a command prompt, try pressing enter.mysql> use mysqlReading table information for completion of table and column namesYou can turn off this feature to get a quicker startup with -ADatabase changedmysql> select * from myid;+------+| id |+------+| 111 |+------+1 row in set (0.00 sec)MySQL 服务恢复,数据也完好无损,我们可以可以在存储节点上面查看一下生成的数据库文件。
[root@datanode03 mysql-pv]# ll总用量 110604-rw-rw---- 1 systemd-bus-proxy ssh_keys 56 12月 14 09:53 auto.cnf-rw-rw---- 1 systemd-bus-proxy ssh_keys 12582912 12月 14 10:15 ibdata1-rw-rw---- 1 systemd-bus-proxy ssh_keys 50331648 12月 14 10:15 ib_logfile0-rw-rw---- 1 systemd-bus-proxy ssh_keys 50331648 12月 14 09:53 ib_logfile1drwx------ 2 systemd-bus-proxy ssh_keys 4096 12月 14 10:05 mysqldrwx------ 2 systemd-bus-proxy ssh_keys 4096 12月 14 09:53 performance_schema
数据
文件
节点
故障
配置
存储
一致
一致性
数据库
规划
验证
完好
内容
完好无损
客户
客户端
文档
时间
机器
架构
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网络科技
中国互联网科技股
互联网下的科技发展
金诺互联网科技
互联网科技未来
互联网科技网站
互联网科技公司名称
恒生科技互联网指数分析
现代科技和互联网有关系吗
须眉科技是互联网公司吗
广州慧亚互联网科技怎么样
小米互联网科技园设置
欧洲十大科技互联网公司
智腾互联网科技有限公司
长沙茂晟互联网科技有限公司
半导体是互联网高科技吗
广州互联网高科技取餐柜
同城互联网络科技
三亚科技创新互联网基地
杭州融税互联网科技有限公司
科技互联网公司装修
凡科互联网科技
北京禾田雨橡互联网科技
互联网科技logo设计
深圳天众互联网科技公司
上海万想互联网科技
互联网前沿科技
湖北码尼互联网科技有限公司电话
天津腾达互联网科技有限公司
科技赋能视角下互联网保险发展