k8s容器内恢复nacos的mysql数据

背景

容器中部署有状态服务,数据部分,mysql数据是通过pv或者sc永久话存储。不过如果有一些原因导致该有状态应用不能正常启动,则起码mysql idb、frm数据没有丢失,可以通过用这种数据结构恢复数据。
k8s中的有状态pod如果删掉重建,可以会由于数据依赖的问题,导致重新创建容器后,不能正确挂载之前正确的pvc。

恢复步骤

ibd文件是innodb的表数据文件
frm文件是innodb的表结构文件

  1. 本文是以公有云ecs为例。此时将之前不能正确挂载的磁盘挂载到另外任何一台同可用区的ecs实例上,将数据cop到本地或者其他地方,待后面使用。
  2. 新建有状态pod mysql,用对应SQL创建数据结构;用如下命令删除创建的表时产生的ibd文件:
ALTER TABLE config_info DISCARD TABLESPACE;
ALTER TABLE his_config_info DISCARD TABLESPACE;
  1. 将数据拷贝到容器里面,mysql数据存放在容器的/var/lib/mysql里,如下所示:
kubectl cp ~/ack_nacos_mysql/nacos_config/config_info  kube-public/mysql-skscv:/var/lib/mysql/nacos_config/
kubectl cp ~/ack_nacos_mysql/nacos_config/his_config_info  kube-public/mysql-skscv:/var/lib/mysql/nacos_config/
  1. 重启mysql服务,可以通过重启pod,最好通过命令重启,进入容器后,执行service mysql restart
  2. 拷贝重启后,重新导入表空间,注意如果不重启mysql会报错ERROR 1812 (HY000): Tablespace is missing for table saplatformd
    至此,数据导入完成。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值