我的编程空间,编程开发者的网络收藏夹
学习永远不晚

K8s中MySQL 数据持久化存储的实现

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

K8s中MySQL 数据持久化存储的实现

一、步骤

(1)创建 PV 和 PVC。

(2)部署 MySQL 服务。

(3)向 MySQL 添加数据。

(4)模拟节点宕机,Kubernetes 实现 MySQL 自动故障转移。

(5)自动故障转移后进行数据一致性验证。

:本次通过 NFS 做数据持久化存储。

二、实践

2.1 创建 PV 和 PVC

1、创建 PV

vim mysql-pv.yml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: mysql-pv
  labels:
    pv: pv-test
spec:
  AccessModes:
    - ReadwriteOnce
  capacity:
    storage: 1Gi
  persistentVolumeReclaimPolicy: Retain
  storageClassName: nfs
  nfs:
    path: /home/data/app
    server: 192.168.56.160

2、创建 PVC

vim mysql-pvc.yml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
  storageClassName: nfs
  selector:
    matchLabels:
      pv: pv-test

3、创建 PV 和 PVC 资源

kubectl apply -f mysql-pv.yml
kubectl apply -f mysql-pvc.yml

查看 PV、PVC 资源

kubectl get pv,pvc

image-20230105100708675

2.2 部署 MySQL 服务

1、创建 YAML 文件

vim mysql.yml

apiVersion: v1
kind: Service
metadata:
  name: mysql
spec:
  selector:
    app: mysql
  ports:
    - protocol: TCP
      port: 3306
      targetPort: 3306
      nodePort: 31306
  type: NodePort
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql
  labels:
    app: mysql-test
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
      - name: mysql-test
        image: mysql:5.7
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: Zhurs@123
        ports:
        - containerPort: 3306
        volumeMounts:
        - mountPath: "/var/lib/mysql"
          name: mysql-data
      volumes:
      - name: mysql-data
        persistentVolumeClaim:
          claimName: mysql-pvc

PVC 资源 mysql-pvc Bound 的 PV 资源 mysql-pv 将被 mount 到 MySQL 的数据目录 /var/lib/mysql

2、部署 MySQL 服务

kubectl apply -f mysql.yml

查看 Pod、Service 资源,看是否正常运行。

image-20230105105124485

2.3 创建测试数据

1、进入MySQL 数据库

kubectl exec -it mysql-574654d66c-hhvxc -- mysql -uroot -pZhurs@123

image-20230105105638454

2、创建测试数据

mysql> create database testdb;
mysql> use testdb;
mysql> create table t1(id int);
mysql> insert into t1 values(12);
mysql> select * from t1;

image-20230105110029135

2.4 模拟节点宕机

1、先看看 MySQL 服务运行在哪个节点上

kubectl get pod -o wide

image-20230105110508216

2、停掉 k8s-work1 节点

init 0

image-20230105110707873

image-20230105110912194

3、一段时间后 MySQL 迁移到 k8s-work2 节点上

原来的 Pod 停止服务,新的 Pod 正在创建,而且是在 k8s-work2 节点上进行创建。

image-20230105111322680

最终 MySQL 服务成功迁移至 k8s-work2 节点上,我原本的 Nginx 服务也成功迁移到了 k8s-work2 节点了。

image-20230105113349459

2.5 数据一致性验证

1、进入MySQL 数据库

kubectl exec -it mysql-574654d66c-jst7g -- mysql -uroot -pZhurs@123

image-20230105113543824

2、验证数据一致性

image-20230105113730556

可见,迁移后的 MySQL 数据依然是完整的。

FAQ

1、报错类型

注意一点,因为我们使用的是 NFS 文件共享存储,因此目标节点必须要有 NFS 的客户端服务,下图就是我没安装 NFS 客户端服务的原因。

image-20230105112755921

2、解决方案

在目标节点(k8s-work1)部署 NFS 服务

yum -y install rpcbind
yum -y install nfs-utils
systemctl start nfs-server
systemctl enable nfs-server
systemctl start rpcbind
systemctl enable rpcbind

最后在看看输出日志,Pod 正常运行了。

image-20230105112956370

到此这篇关于K8s中MySQL 数据持久化存储的实现的文章就介绍到这了,更多相关K8s MySQL数据持久化存储内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

K8s中MySQL 数据持久化存储的实现

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

K8s中MySQL 数据持久化存储的实现

目录一、步骤二、实践2.1 创建 PV 和 PVC2.2 部署 mysql 服务2.3 创建测试数据2.4 模拟节点宕机2.5 数据一致性验证FAQ一、步骤(1)创建 PV 和 PVC。(2)部署 MySQL 服务。(3)向 MySQ
2023-01-09

K8s中MySQL 数据持久化存储的实现

本文主要介绍了K8s中MySQL 数据持久化存储的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-01-08

在Unity中如何实现数据的持久化存储

在Unity中实现数据的持久化存储可以通过以下几种方式:PlayerPrefs:Unity自带的一种简单的持久化存储方案,可以存储简单的键值对数据,比如玩家的分数、解锁的关卡等。使用PlayerPrefs存储数据时,数据会被保存在本地的注册
在Unity中如何实现数据的持久化存储
2024-05-09

如何在Storm中实现数据的持久化存储

在Storm中实现数据的持久化存储通常可以通过以下几种方法:使用数据库:可以将Storm处理的数据存储到关系型数据库(如MySQL、PostgreSQL等)或者NoSQL数据库(如MongoDB、Cassandra等)中。可以在Storm的
如何在Storm中实现数据的持久化存储
2024-04-09

Spring Data JPA怎么实现持久化存储数据到数据库

这篇“Spring Data JPA怎么实现持久化存储数据到数据库”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Spring
2023-06-30

mysql怎么实现数据持久化

MySQL可以通过以下几种方式来实现数据持久化:使用磁盘存储:MySQL将数据存储在硬盘上,包括数据文件、日志文件等。这样即使服务器重启,数据也可以从硬盘上读取并恢复。使用数据库备份和恢复工具:MySQL提供了多种备份和恢复工具,如mysq
2023-10-21

Netdata的监控数据是否支持持久化存储

是的,Netdata的监控数据支持持久化存储。 Netdata可以配置为将监控数据存储在本地磁盘上,以便稍后进行分析和检查。此外,Netdata还支持将监控数据发送到远程数据库,如InfluxDB或Graphite,以便进行更长期的存储和分
Netdata的监控数据是否支持持久化存储
2024-04-24

MySQL的存储引擎与HBase的存储层在数据持久化上的对比

MySQL和HBase在数据持久化方面各有特点,以下是对两者在数据持久化方面的对比:MySQL的存储引擎与HBase的存储层在数据持久化上的对比MySQL的数据持久化方式:存储引擎:MySQL支持多种存储引擎,如InnoDB、MyISAM
MySQL的存储引擎与HBase的存储层在数据持久化上的对比
2024-10-22

mysql表数据持久化怎么实现

在MySQL中,数据持久化是通过将数据存储在磁盘上的表中来实现的。以下是一些实现数据持久化的方法:创建表:首先需要创建一个表来存储数据。可以使用MySQL的CREATE TABLE语句来创建一个新的表,指定表的名称和列的定义。插入数据:使用
2023-10-26

Spark中怎么实现数据缓存和持久化

在Spark中,可以通过使用RDD的persist()方法来实现数据缓存。persist()方法有多种级别,包括MEMORY_ONLY、MEMORY_ONLY_SER、MEMORY_AND_DISK、MEMORY_AND_DISK_SER、
Spark中怎么实现数据缓存和持久化
2024-03-14

Android持久化存储(3)SQLite数据库的使用

1.什么是SQlite SQLite是由C语言编写的一款轻型数据库,因占用资源小,处理速度快,功能齐全,特别适用于移动设备,最重要的是开源,任何人都可以使用它,许多开源项目(PHP,Python)和当今两大手机操作系统Android和iOS
2022-06-06

docker持久化存储数据的方法是什么

Docker提供了多种方法来实现持久化存储数据:1. 数据卷(Volumes):数据卷是一个特殊的目录,可以绕过容器文件系统来直接访问宿主机的文件系统。使用数据卷可以将容器内的数据持久化保存在宿主机上,并且可以在多个容器之间共享数据卷。可以
2023-10-27

Ruby序列化和持久化存储怎么实现

这篇文章主要介绍“Ruby序列化和持久化存储怎么实现”,在日常操作中,相信很多人在Ruby序列化和持久化存储怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Ruby序列化和持久化存储怎么实现”的疑惑有所
2023-06-30

kubernetes中部署mysql集群并持久化存储

在Kubernetes中部署MySQL集群并持久化存储,可以使用StatefulSet和PersistentVolumeClaim(PVC)来实现。1. 创建一个存储类(StorageClass),用于定义持久化存储的类型和属性。例如,可以
2023-09-14

Spring Data JPA数据持久化存储到数据库的方法

今天小编给大家分享一下Spring Data JPA数据持久化存储到数据库的方法的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧
2023-06-30

Couchbase中怎么实现数据持久化

在Couchbase中,数据持久化可以通过以下几种方式实现:使用持久化存储引擎:Couchbase支持使用不同的持久化存储引擎来保证数据的持久化,包括Couchbase自带的Magma存储引擎、ForestDB存储引擎以及可选的第三方存储引
Couchbase中怎么实现数据持久化
2024-03-08

Docker存储卷:数据持久化与共享策略

在Docker中,存储卷是一种用来持久化数据的机制,可以让容器中的数据在容器删除后仍然保留。存储卷可以用来实现数据共享、备份与恢复等功能。下面是一些关于Docker存储卷的数据持久化与共享策略:数据持久化:使用存储卷可以实现容器中数据的持久
Docker存储卷:数据持久化与共享策略
2024-04-25

编程热搜

目录