首页 > 其他分享 >idb单副本时-TiKV节点损坏后有损数据恢复的方法

idb单副本时-TiKV节点损坏后有损数据恢复的方法

时间:2023-09-15 09:37:11浏览次数:38  
标签:数据恢复 副本 TiKV regions tikv ctl idb 节点

Tidb单副本时-TiKV节点损坏后有损数据恢复的方法


背景

UAT环境下,为了减少存储. 搭建了一套单副本的TiDB集群
但是随着数据量的增多, UAT上面的数据可以丢失,但是表结构等信息是无法接受丢失和损坏的. 

因为很多不太均衡的问题, 导致. 部分TiKV节点不稳定. 甚至会出现TiKV宕机的问题. 
单副本时出现异常肯定会有部分数据丢失.  但是至少希望能够将环境挽救回来. 

所以重要的事情说三遍
至少三副本, 至少三副本, 至少三副本
必须有备份
必须有备份
必须有备份

环境说明

1. 环境信息
四台服务器
6个TiDB
16个TiKV
4个TiFlash
需要注意:
一共 8块SSD用于存储TiKV
这里存在一个问题. TiDB其实是默认每个tikv 独占一个SSD的. 
所以数据存储的capacity 是翻倍的. 

2. 问题复盘
同事发现某一个TiKV总是出现disconnect的状态
然后执行了sacle-in的操作. 
因为是单副本, 所以运行一段时间后发现机器都在报
9005 regions is unavailable的操作.
所以终止了scale-in
节点直接到了 down的状态. 
然后再scale-in 节点存在数据的 表 都会报9005的错误
环境基本不可用.

修复思路

学习思路:
https://tidb.net/blog/ad45bad9

区别是, 我们是单副本, 某个tikv节点出现异常会丢失该节点上所有的regions. 
思路主要是两个:
1. 删除所有regions的映射关系. 但是删除可能会导致更不可控的问题.
2. 将损坏tikv节点上面的regions 在其他节点创建一个空的regions. 诱导tidb查询过去.
   不会出现 9005的错误, 返回空, 虽然丢失数据, 但是会查询返回. 

思路1 不太可取. 删除操作可能带来更多的不可控
所以主要思路就在方案2 上面了. 

环境准备

注意, 我这边的版本是 6.5.3 
很多方式跟之前的操作步骤是不太相同的
为了快捷处理, 第一步是在tidb环境上面进行相关工具的创建与环境变量维护使用. 
第一步: 安装
tiup ctl:v6.5.3
默认情况下会在 
 /root/.tiup/components/ctl/v6.5.3/ctl
目录下面创建一些ctl的工具. 

修改环境变量
cat > /etc/profile.d/tidb.sh <<EOF
PATH=\$PATH:/root/.tiup/components/ctl/v6.5.3/
EOF
source /etc/profile.d/tidb.sh 

工具验证
pd-ctl config show 

停止调度:
pd-ctl config set region-schedule-limit 0
pd-ctl config set replica-schedule-limit 0
pd-ctl config set leader-schedule-limit 0
pd-ctl config set merge-schedule-limit 0

scale-out 一个tikv节点
yaml文件为:
tikv_servers:
  - host: 192.168.xxx.xxx
    port: 50160
    status_port: 50180
    data_dir: /nvme03/tidb/data/tikv-50160

tiup cluster scale-out erptidb xxx.yaml 

查看tidb的信息
tiup cluster display erptidb 

停止新增加的节点
tiup cluster stop erptidb -N 192.168.xxx.xxx:50160

处理过程

1. 查询宕机的tikv节点上面的 所有的regions. 
   查询所有的tikv对应的storeid
   select * from information_schema.TIKV_STORE_STATUS
   获取异常的store 的id.

2. 根据storeid 获取所有的regions id 
   	select * from TIKV_REGION_PEERS where store_id = '258384'
   注意,需要保存所有的 regions_id 我这次宕机有 25000 个regions. 

3. 在tidb的主机上面创建空的regions . 
   tikv-ctl --data-dir /nvme03/tidb/data/tikv-50160 recreate-region -p 192.168.xxx.xxx:2379 -r 321115128
   注意 -r 后面是 异常损坏的 regions-id 

4. 注意时间可能会非常漫长, 创建完成后 可以删除掉之前有问题的store-id
   然后开起来关闭的那个stop节点:
   tiup cluster start erptidb -N 192.168.xxx.xxx:50160
   pd-ctl store delete 258384

5. 验证集群是否可用, 之前保存的表是否可以正常 select 或者是执行delete 操作. 

6. 恢复调度
pd-ctl config set region-schedule-limit  2048
pd-ctl config set replica-schedule-limit 1024
pd-ctl config set leader-schedule-limit  64
pd-ctl config set merge-schedule-limit   64


存在问题

怀疑是 6.5.3的bug 我有一个节点的容量特别高, 我也开启了 调度, 但是他死活调度不出来. 

也可能是开源版本的一些限制, 搞不太明白. 

使用minio 进行备份操作

now=`date +%Y%m%d%H`
export AWS_ACCESS_KEY_ID=miniouserpassword
export AWS_SECRET_ACCESS_KEY=miniouserpassword

mkdir /nvme02/minio/tidb255119${now}

time /root/.tiup/components/br/v7.2.0/br backup full  -f '*.*'  -f '!information_schema.*'   -f '!emetrics_schema.*'    --pd "192.168.xxx.xxx:2379" --storage "s3://tidb255119${now}" --s3.endpoint "http://192.168.xxx.xxy:9901"  --send-credentials-to-tikv=true  --log-file backupfull.log

标签:数据恢复,副本,TiKV,regions,tikv,ctl,idb,节点
From: https://www.cnblogs.com/jinanxiaolaohu/p/17704087.html

相关文章

  • 服务器数据恢复-ESX SERVER常见故障的数据恢复方案
    ESXSERVER常见故障表现:1、因光纤存储设备连接至非ESX环境,共享未互斥,对存储进行的改写操作(如:重装系统,WINDOWS初始化,格式化等)导致存储结构损坏。2、卷升级、变更时分区表或VMFS卷结构异常。3、VMFS存储中VMDK被删除。4、VMFS被格式化。    ESXSERVER故障解决方案: 1......
  • 服务器数据恢复-EVA存储更换离线硬盘时又有硬盘离线导致存储崩溃不可用的数据恢复案例
     服务器数据恢复环境:HPEVA某型号存储,存储中一共有23块磁盘,上层映射给一台windowsserver服务器上。服务器故障&检测&分析:该EVA存储上三块磁盘指示灯显示黄色,此时存储设备还能正常工作。运维更换显示黄色的指示灯对应的硬盘,在更换硬盘的过程中,又有一块硬盘对应指示灯显示黄色离......
  • 数据库数据恢复-Oracle数据库误执行truncate table的数据恢复案例
    Oracle数据库故障&分析:北京某单位Oracle11gR2数据库误执行truncate table CM_CHECK_ITEM_HIS,表数据丢失,查询该表时报错。数据库备份无法使用,表数据无法查询。Oracle数据库Truncate数据的机理:执行Truncate命令后,ORACLE数据库会在数据字典和Segment Header中更新表的Data O......
  • easyrecovery 2023年最好用的数据恢复软件
    EasyRecovery是一款操作简单、功能强大数据恢复软件,通过easyrecovery可以从硬盘、光盘、U盘、数码相机、手机等各种设备中恢复被删除或丢失的文件、图片、音频、视频等数据文件。easyrecovery数据恢复软件,是国内顶尖工作室的技术杰作。它是一个硬盘数据恢复工具,能够帮你恢复丢失的......
  • TiDB基础
    一.TiDb简介TiDB的使用场景1、数据量大2、多复本保存3、性能问题(分库分表存在业务问题) TiDB是一个分布式NewSQL数据库。它支持水平弹性扩展、ACID事务、标准SQL、MySQL语法和MySQL协议,具有数据强一致的高可用特性,是一个不仅适合OLTP场景还适合OLAP场景的混合......
  • 服务器数据恢复-EMC存储RAID5磁盘离线热备盘未激活的数据恢复案例
    服务器数据恢复环境:北京某单位有一台EMC某型号存储,有一组由10块STAT硬盘组建的RAID5阵列,另外2块磁盘作为热备盘使用。RAID5阵列上层只划分了一个LUN,分配给SUN小机使用,上层文件系统为ZFS。服务器故障:存储RAID5阵列中有2块硬盘损坏离线,只有一块热备盘激活,RAID5阵列瘫痪,上层LUN无法......
  • 服务器数据恢复-断电导致Xen server虚拟化虚拟磁盘文件丢失,虚拟机不可用的数据恢复案
    服务器数据恢复环境:一台某品牌服务器通过一张同品牌某型号RAID卡将4块STAT硬盘组建为一组RAID10阵列。上层部署XenServer虚拟化平台,虚拟机上安装的是WindowsServer操作系统,包括系统盘+数据盘两个虚拟机磁盘,作为Web服务器使用,存放网站代码、SQLServer数据库以及其他网站数据。......
  • 服务器数据恢复- 执行fsck导致Ext4分区无法挂载的数据恢复案例
    Ext4文件系统相关概念:块组:Ext4文件系统的空间被划分为若干个块组,每个块组内的结构大致相同。块组描述符表:每个块组都对应一个块组描述符,这些块组描述符统一放在文件系统的前部,称为块组描述符表。每个块组描述符大小为32字节,其主要描述块位图、i-节点位图及i-节点表的地址等信息。......
  • 服务器数据恢复-vmware ESXI虚拟机误还原快照导致数据丢失的数据恢复案例
    服务器数据恢复环境:从物理机迁移一台虚拟机到ESXI,迁移后做了一个快照。该虚拟机上部署了一个SQLServer数据库,存放了5年左右的数据。ESXI上有数十台虚拟机,EXSI连接了一台EVA存储,所有的虚拟机都在EVA存储上。服务器故障:由于工作人员的误操作,不小心将几年前迁移数据后做的快照还原......
  • MySQL主从数据恢复
    主要步骤:导出主库数据,恢复到从库,重新开启主从同步。 1.先停止从库从库上执行stopslave; 2 在从库mysqlbin目录下导出主库数据./mysqldump-h192.168.174.201--port=3359-uroot-p'pwd'--default-character-set=UTF8MB4--single-transaction--events--triggers......