基于 K8s 的 MySQL 数据持久化存储

news2024/11/15 13:38:06

k8s-cert


目录

    • 一、步骤
    • 二、实践
      • 2.1 创建 PV 和 PVC
      • 2.2 部署 MySQL 服务
      • 2.3 创建测试数据
      • 2.4 模拟节点宕机
      • 2.5 数据一致性验证
    • FAQ


一、步骤

(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


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/140862.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

什么是Vue、Vue开发的方式、Vue的基本指令

一、什么是Vue 1. 前端技术的发展(html、CSS、JavaScript) ​ (1)jQuery:是对JavaScript进行了封装,使得操作DOM、事件处理、动画处理、ajax交互变得非常简洁、方便。是JavaScript的库。 ​ &#xff08…

贴吧低代码高性能规则引擎设计

作者 | 贴吧UEG技术组 导读 本文首先介绍了规则引擎的使用场景,引出贴吧规则引擎。从组件、变量、规则、处置四个模块介绍了规则引擎的组成部分,同时对最终规则文件的编译过程做了详细介绍。为了做到低代码,在规则配置上做到平台化&#xff0…

2022第十一届中国创新创业大赛全国总决赛在深圳举办

为深入贯彻党的二十大精神和创新驱动发展战略,强化企业科技创新主体地位,支持企业融合创新,推进科技型创新型企业遴选和培育,加大金融对硬科技企业的支持力度,营造有利于科技型中小微企业成长的环境,推动创…

Nuxt.js

Nust.js介绍 Nust.js介绍 移动互联网的兴起促进了web前后端分离开发模式的发展,服务端只专注业务,前端只专注用户体验,前端大量运用的前端渲染技术,比如流行的vue.js、react框架都实现了功能强大的前端渲染。但是,对…

深入探索Linux虚拟化KVM-Qemu分析之CPU虚拟化

说明: KVM版本:5.9.1QEMU版本:5.0.0工具:Source Insight 3.5, Visio 1. 概述 本文围绕ARMv8 CPU的虚拟化展开;本文会结合Qemu KVM的代码分析,捋清楚上层到底层的脉络;本文会提供一…

MYSQL对千万级数据的快速迁移

MYSQL对千万级数据(10个G左右)的迁移,耗时控制在半小时内 1.show variables like %secure%;查看 secure-file-priv 当前的值是什么 2.如果没有可以在my.ini(windows)my.cnf(linux)中添加secure…

得物染色环境落地实践

1. 背景 测试环境治理一直是各大公司非常重要的一个课题,测试环境稳定性很大程度影响迭代开发&测试效率。 综合来看,测试环境不稳定的原因主要有以下几点: 测试环境的变更非终态变更,经常会有代码发布/配置发布导致服务无法…

ArcGIS基础实验操作100例--实验47融合相邻面要素

本实验专栏参考自汤国安教授《地理信息系统基础实验操作100例》一书 实验平台:ArcGIS 10.6 实验数据:请访问实验1(传送门) 高级编辑篇--实验47 融合相邻面要素 目录 一、实验背景 二、实验数据 三、实验步骤 (1&am…

【Vue3】Vue内置指令

注意&#xff1a;在vue中使用v-开头的都是Vue指令。一、v-html插入标签可以识别标签。<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"&…

argparse简介

一、argparse简介 argparse 模块是 Python 内置的用于命令项选项与参数解析的模块&#xff0c;argparse 模块可以让人轻松编写用户友好的命令行接口&#xff0c;能够帮助程序员为模型定义参数。 argparse定义四个步骤 导入argparse包 ——import argparse创建一个命令行解析…

Fastjson反序列化审计及验证

简介&#xff1a;数字化平台已经与我们生活紧密结合&#xff0c;其用户规模庞大&#xff0c;一旦系统出现故障&#xff0c;势必会造成一定生活的不便。比如疫情时代&#xff0c;健康码已经成为人们出门必备的条件&#xff0c;一旦提供健康码服务平台出现故障&#xff0c;出行将…

imx6ull内核移植记录:failed to find ocotp node

前言 记录记录&#xff0c;是个和MAC地址相关的信息。 一 尝试尝试 [ 0.093958] vddsoc: supplied by regulator-dummy [ 0.126215] failed to find ocotp node [ 0.126744] No ATAGs? 经过分析&#xff0c;拆分为两个问题&#xff1a; [ 0.126215] failed t…

Web前端 CSS3 02 小练习

京东小项目 设置一个京东侧边栏 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content&quo…

读 NebulaGraph源码 | 查询语句 LOOKUP 的一生

本文由社区用户 Milittle 供稿 LOOKUP 是图数据库 NebulaGraph 的一个查询语句。它依赖索引&#xff0c;可以查询点或者边的信息。在本文&#xff0c;我将着重从源码的角度解析一下 LOOKUP 语句的一生是如何度过的。 本文源码阅读基于内核源码的 v3.3.0 版本&#xff0c;详见 …

实现SQLSERVER 调用 C# 代码

简单例子 首先写一段简单的 C# 代码&#xff0c;然后把它编译成 dll。 namespace Bussiness {public class UserFunctions{public static string UserLogin(string username, string password){var random new Random();var isSuccess random.Next() % 2 0;return isSucce…

【漏洞复现】钉钉rce反弹shell

文章目录 一、漏洞描述二、漏洞原理三、影响版本四、复现过程0.环境说明1.msf 生成shellcode2.msf开启监听3.将生成的shellcode替换原shellcode4.开启web服务&#xff0c;并上传poc文件&#xff0c;构造poc5.从钉钉发送poc给受害者6.受害者点击即会触发漏洞&#xff0c;在msf监…

前端菜鸟如何快速开发个人产品

我是车辙&#xff0c;我的掘金小册《SkyWalking&#xff1a;应用监控和链路跟踪》已经上线啦&#xff0c;这是我的第一本电子书&#xff0c;欢迎大家订阅。 大家好&#xff0c;我是车辙。在完成小册后的一段时间&#xff0c;我突然想开发一款个人H5产品。在起初有这样想法的时候…

长、中、短视频“再战”微短剧

配图来自Canva可画 近年来&#xff0c;流量焦虑一直伴随着国内的视频平台&#xff0c;比如&#xff0c;制作精良的长视频由于剧集冗长正在被“追求效率”的年轻人抛弃&#xff1b;高歌猛进的短视频也因为无法承受太多有价值的内容而面临增长瓶颈。在此背景下&#xff0c;制作门…

中国工业以太网交换机市场分析

一、我国以太网交换机市场&#xff1a; 工业以太网交换机&#xff08;IndustrialEthernetSwitches&#xff09;是能够满足工业现场需要&#xff0c;技术层面与商业以太网交换机适配&#xff0c;而实时通信、可靠性、稳定性、安全性、环境适应性等各个方面规定高于商业以太网交…

玩转X3派,健身游戏两不误

一、准备工作 Windows电脑端安装拳皇游戏 &#xff08;因为是按键模拟&#xff0c;理论上只要是按键控制的游戏都可以玩&#xff0c;本文用MAME模拟器作例子&#xff0c;下载MAME&#xff1a;MAMEdev.org | Home of The MAME Project&#xff09; Windows可直接从该目录下载&…