k8s集群下mysql容器更换pvc存储迁移数据,报错InnoDB: Your database may be corrupt

本文主要是介绍k8s集群下mysql容器更换pvc存储迁移数据,报错InnoDB: Your database may be corrupt,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、背景:

在业务生产环境维护过程中会出现k8s集群下mysql容器需要更换pvc存储的场景,更换pvc存储就必须得做数据迁移,不然会出现业务数据丢失的情况。实施的方案主要有两种:

方案一:
1、将需要迁移的mysql容器里的数据通过mysqldump的方式导出来;
2、然后更换pvc存储,然后通过source 数据文件.sql的方式导入到新的数据库中;
方案二:

1、先新建pvc存储,然后挂载到mysql容器中的另一个目录上;
2、然后在容器里将mysql的数据复制到新的pvc存储挂载的目录上,修改权限和属主;

3、替换旧的pvc存储,然后mysql容器;

二、实施mysql容器数据迁移:

这里主要选择是方案二的操作。

1、创建新的pvc存储:

 

2、在mysql容器上挂载新pvc存储:

 

这里是将新pvc存储挂载mysql容器的/mnt目录下,记得生效容器配置。 

3、登入到mysql容器里cp迁移数据:

 cd到mysql存放数据的目录,这里默认的是/var/lib/mysql的

root@mysql-ozthj-b7b7cb9cd-m8hr4:/# cd /var/lib/mysql
root@mysql-ozthj-b7b7cb9cd-m8hr4:/var/lib/mysql# ls
auto.cnf    ca.pem           client-key.pem  ib_logfile0  ibdata1  mysql               private_key.pem  server-cert.pem  sys
ca-key.pem  client-cert.pem  ib_buffer_pool  ib_logfile1  ibtmp1   performance_schema  public_key.pem   server-key.pem   xxl_job

然后通过cp命令将/var/lib/mysql目录下的所有数据复制到/mnt/目录下,并设置属主: 

root@mysql-ozthj-b7b7cb9cd-m8hr4:/var/lib/mysql# ls
auto.cnf    ca.pem           client-key.pem  ib_logfile0  ibdata1  mysql               private_key.pem  server-cert.pem  sys
ca-key.pem  client-cert.pem  ib_buffer_pool  ib_logfile1  ibtmp1   performance_schema  public_key.pem   server-key.pem   xxl_job
root@mysql-ozthj-b7b7cb9cd-m8hr4:/var/lib/mysql# cp -r * /mnt/
root@mysql-ozthj-b7b7cb9cd-m8hr4:/var/lib/mysql# cd /mnt
root@mysql-ozthj-b7b7cb9cd-m8hr4:/mnt# ls
auto.cnf    ca.pem           client-key.pem  ib_logfile0  ibdata1  lost+found  performance_schema  public_key.pem   server-key.pem  xxl_job
ca-key.pem  client-cert.pem  ib_buffer_pool  ib_logfile1  ibtmp1   mysql       private_key.pem     server-cert.pem  sys
root@mysql-ozthj-b7b7cb9cd-m8hr4:/mnt# chown -R mysql:mysql *
root@mysql-ozthj-b7b7cb9cd-m8hr4:/mnt# ls -l
total 188496
-rw-r----- 1 mysql mysql       56 Jan 31 03:07 auto.cnf
-rw------- 1 mysql mysql     1676 Jan 31 03:07 ca-key.pem
-rw-r--r-- 1 mysql mysql     1112 Jan 31 03:07 ca.pem
-rw-r--r-- 1 mysql mysql     1112 Jan 31 03:07 client-cert.pem
-rw------- 1 mysql mysql     1680 Jan 31 03:07 client-key.pem
-rw-r----- 1 mysql mysql      678 Jan 31 03:07 ib_buffer_pool
-rw-r----- 1 mysql mysql 50331648 Jan 31 03:07 ib_logfile0
-rw-r----- 1 mysql mysql 50331648 Jan 31 03:07 ib_logfile1
-rw-r----- 1 mysql mysql 79691776 Jan 31 03:07 ibdata1
-rw-r----- 1 mysql mysql 12582912 Jan 31 03:07 ibtmp1
drwx------ 2 mysql mysql    16384 Jan 31 03:02 lost+found
drwxr-x--- 2 mysql mysql     4096 Jan 31 03:07 mysql
drwxr-x--- 2 mysql mysql     4096 Jan 31 03:07 performance_schema
-rw------- 1 mysql mysql     1680 Jan 31 03:07 private_key.pem
-rw-r--r-- 1 mysql mysql      452 Jan 31 03:07 public_key.pem
-rw-r--r-- 1 mysql mysql     1112 Jan 31 03:07 server-cert.pem
-rw------- 1 mysql mysql     1676 Jan 31 03:07 server-key.pem
drwxr-x--- 2 mysql mysql    12288 Jan 31 03:07 sys
drwxr-x--- 2 mysql mysql     4096 Jan 31 03:07 xxl_job

4、然后替换pvc存储:

 5、mysql容器运行时可能有一个报错:

InnoDB: Your database may be corrupt or you may have copied the InnoDB tablespace but

解决方案:

需要删除两个文件即可:

root@mysql-ozthj-b7b7cb9cd-m8hr4:/var/lib/mysql# rm -rfv ib_logfile0
root@mysql-ozthj-b7b7cb9cd-m8hr4:/var/lib/mysql# rm -rfv ib_logfile1

然后重新启动一下mysql容器即可:

[mysql] [2024-01-31 11:14:42] 2024-01-31T03:14:42.386544Z 0 [Note] Plugin 'FEDERATED' is disabled.
[mysql] [2024-01-31 11:14:42] 2024-01-31T03:14:42.396895Z 0 [Note] Found ca.pem, server-cert.pem and server-key.pem in data directory. Trying to enable SSL support using them.
[mysql] [2024-01-31 11:14:42] 2024-01-31T03:14:42.396920Z 0 [Note] Skipping generation of SSL certificates as certificate files are present in data directory.
[mysql] [2024-01-31 11:14:42] 2024-01-31T03:14:42.398866Z 0 [Warning] CA certificate ca.pem is self signed.
[mysql] [2024-01-31 11:14:42] 2024-01-31T03:14:42.398926Z 0 [Note] Skipping generation of RSA key pair as key files are present in data directory.
[mysql] [2024-01-31 11:14:42] 2024-01-31T03:14:42.399541Z 0 [Note] InnoDB: Buffer pool(s) load completed at 240131  3:14:42
[mysql] [2024-01-31 11:14:42] 2024-01-31T03:14:42.400190Z 0 [Note] Server hostname (bind-address): '*'; port: 3306
[mysql] [2024-01-31 11:14:42] 2024-01-31T03:14:42.400242Z 0 [Note] IPv6 is available.
[mysql] [2024-01-31 11:14:42] 2024-01-31T03:14:42.400257Z 0 [Note]   - '::' resolves to '::';
[mysql] [2024-01-31 11:14:42] 2024-01-31T03:14:42.400277Z 0 [Note] Server socket created on IP: '::'.
[mysql] [2024-01-31 11:14:42] 2024-01-31T03:14:42.402599Z 0 [Warning] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory.
[mysql] [2024-01-31 11:14:43] 2024-01-31T03:14:43.014325Z 0 [Note] Event Scheduler: Loaded 0 events
[mysql] [2024-01-31 11:14:43] 2024-01-31T03:14:43.014613Z 0 [Note] mysqld: ready for connections.
[mysql] [2024-01-31 11:14:43] Version: '5.7.32'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  MySQL Community Server (GPL)

三、验证业务数据:

经过业务人员的验证及功能验证,数据是正确的,没有任何问题。

这篇关于k8s集群下mysql容器更换pvc存储迁移数据,报错InnoDB: Your database may be corrupt的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

C#监听txt文档获取新数据方式

《C#监听txt文档获取新数据方式》文章介绍通过监听txt文件获取最新数据,并实现开机自启动、禁用窗口关闭按钮、阻止Ctrl+C中断及防止程序退出等功能,代码整合于主函数中,供参考学习... 目录前言一、监听txt文档增加数据二、其他功能1. 设置开机自启动2. 禁止控制台窗口关闭按钮3. 阻止Ctrl +

java如何实现高并发场景下三级缓存的数据一致性

《java如何实现高并发场景下三级缓存的数据一致性》这篇文章主要为大家详细介绍了java如何实现高并发场景下三级缓存的数据一致性,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 下面代码是一个使用Java和Redisson实现的三级缓存服务,主要功能包括:1.缓存结构:本地缓存:使

详解MySQL中JSON数据类型用法及与传统JSON字符串对比

《详解MySQL中JSON数据类型用法及与传统JSON字符串对比》MySQL从5.7版本开始引入了JSON数据类型,专门用于存储JSON格式的数据,本文将为大家简单介绍一下MySQL中JSON数据类型... 目录前言基本用法jsON数据类型 vs 传统JSON字符串1. 存储方式2. 查询方式对比3. 索引

在MySQL中实现冷热数据分离的方法及使用场景底层原理解析

《在MySQL中实现冷热数据分离的方法及使用场景底层原理解析》MySQL冷热数据分离通过分表/分区策略、数据归档和索引优化,将频繁访问的热数据与冷数据分开存储,提升查询效率并降低存储成本,适用于高并发... 目录实现冷热数据分离1. 分表策略2. 使用分区表3. 数据归档与迁移在mysql中实现冷热数据分

C#解析JSON数据全攻略指南

《C#解析JSON数据全攻略指南》这篇文章主要为大家详细介绍了使用C#解析JSON数据全攻略指南,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、为什么jsON是C#开发必修课?二、四步搞定网络JSON数据1. 获取数据 - HttpClient最佳实践2. 动态解析 - 快速

SpringBoot集成MyBatis实现SQL拦截器的实战指南

《SpringBoot集成MyBatis实现SQL拦截器的实战指南》这篇文章主要为大家详细介绍了SpringBoot集成MyBatis实现SQL拦截器的相关知识,文中的示例代码讲解详细,有需要的小伙伴... 目录一、为什么需要SQL拦截器?二、MyBATis拦截器基础2.1 核心接口:Interceptor

MySQL 8 中的一个强大功能 JSON_TABLE示例详解

《MySQL8中的一个强大功能JSON_TABLE示例详解》JSON_TABLE是MySQL8中引入的一个强大功能,它允许用户将JSON数据转换为关系表格式,从而可以更方便地在SQL查询中处理J... 目录基本语法示例示例查询解释应用场景不适用场景1. ‌jsON 数据结构过于复杂或动态变化‌2. ‌性能要

MySQL字符串常用函数详解

《MySQL字符串常用函数详解》本文给大家介绍MySQL字符串常用函数,本文结合实例代码给大家介绍的非常详细,对大家学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录mysql字符串常用函数一、获取二、大小写转换三、拼接四、截取五、比较、反转、替换六、去空白、填充MySQL字符串常用函数一、

MySQL中比较运算符的具体使用

《MySQL中比较运算符的具体使用》本文介绍了SQL中常用的符号类型和非符号类型运算符,符号类型运算符包括等于(=)、安全等于(=)、不等于(/!=)、大小比较(,=,,=)等,感兴趣的可以了解一下... 目录符号类型运算符1. 等于运算符=2. 安全等于运算符<=>3. 不等于运算符<>或!=4. 小于运

虚拟机Centos7安装MySQL数据库实践

《虚拟机Centos7安装MySQL数据库实践》用户分享在虚拟机安装MySQL的全过程及常见问题解决方案,包括处理GPG密钥、修改密码策略、配置远程访问权限及防火墙设置,最终通过关闭防火墙和停止Net... 目录安装mysql数据库下载wget命令下载MySQL安装包安装MySQL安装MySQL服务安装完成