本文主要介绍在专有云V3环境中,ECS实例误删除的恢复方法。
说明:适用于专有云V3.0.0~V3.11.0企业版,包含V3.0.0和V3.11.0环境。
说明:操作过程中后羿磁盘回收时间从24小时变成360小时,需要关注ECS盘古的水位巡检。
说明:本方案为误删除ECS实例后的应急恢复方案,可能会丢失数据或者无法完全恢复。
在专有云V3环境中,ECS实例误删除后,需要恢复系统盘和数据盘,IP地址可以改变。
说明:此种场景可通过本方案进行排查修复,此方案需要在阿里云技术支持双人复核下进行变更操作。
go2which [$Instance_ID]
说明:[$Instance_ID]为ECS实例ID。系统显示类似如下,观察status为destroyed,表示已释放。
说明:gmt_modify的值为实例释放的时间,此截图中可以确认实例释放时间为2019年11月10日 13点03分43秒。
select * from cluster_info \G系统显示类似如下。
对比ECS实例释放时间与当前时间差是否在延迟删除时间内。根据检查ECS实例释放时间和检查后端ECS实例云磁盘到底层盘古延迟删除时间的结果进行对比,截图中的示例结果如下:
因此并没有到延迟删除时间范围外,可以恢复系统盘和数据盘的数据。
登录houyiregiondb数据库,执行以下SQL语句,查看误删除的ECS实例的磁盘信息。
select * from device where name='[$Instance_ID]' or partition_name='[$Instance_ID]' \G
如果查询到多条记录,则需要查看ECS实例状态,使用go2which命令查询的gmt_modify对应的时间,查看对应的系统盘或数据盘信息。确认device表的gmt_detach字段与对应gmt_modify字段的值一致,说明查询到的记录为误删除时被释放的需要恢复的系统盘和数据盘记录。
create table cluster_info_bak as select * from cluster_info \G系统显示类似如下。
update cluster_info set deleted_disk_preserve='360' where cluster_id='[$Cluster_ID]' \G
注意:系统显示类似如下。
- 此处是为了保证给恢复误删实例云盘数据保留充足的时间。调整此延迟删除参数前需关注ECS实例对应集群盘古水位,检查是否处于告警阈值75% ,如果已经到达75%,则需实时监控盘古水位情况,并且在数据恢复后立即回滚此时间,从360小时变更为24小时。
- [$Cluster_ID]为集群ID。
select id,status,partition_name,pangu_cluster_id,device_id系统显示类似如下。
from device
where name='[$Instance_ID]' or partition_name='[$Instance_ID]';
mysqldump -h[$Host] -u[$User] -P[$Port] -p[$Password] houyiregiondb device > /tmp/device.sql
说明:这里需要确认文件内容完全备份成功。系统显示类似如下。
update device
set status='old'
where partition_name='[$Instance_ID]' and id='[$ID]' and pangu_cluster_id='[$Pangu_Cluster_ID]' and device_id='[$Device_ID]';
说明:此步中除了status变为old外,[$Instance_ID]、[$ID]、[$Pangu_Cluster_ID]、[$Device_ID]均参见本章节的步骤1查询的结果。系统显示类似如下。
select id,status,partition_name,pangu_cluster_id,device_id系统显示类似如下。
from device
where name='[$Instance_ID]' or partition_name='[$Instance_ID]';
select id,partition_name,cluster_id,device_id,pangu_path,status系统显示类似如下,
from device
where cluster_id='[$Cluster_ID]' and device_id='[$Device_ID]';
status
为0
,则符合预期。go2houyirnd -Ne " select big_region_no from big_region_info;"系统显示类似如下。
go2hyapi create_snapshot region_id=[$Region_ID] disk_id=[$Disk_ID]
说明:系统显示类似如下。
- [$Region_ID]为上一步获取的区域ID。
- [$Disk_ID]为环境检查中查询需要恢复ECS实例的系统盘与数据盘信息步骤获取的disk_id的值。
progress
的值为0
,快照创建完成后progress
变为100
。
go2snapshot [$Disk_ID]系统显示类似如下,表示快照创建完成。
go2houyiregiondbrnd -e "select access_id,access_key,domain,ocm_addr from oss_info;"
说明:如果有多个云盘快照需要下载,请一个下载好之后,再下载另外一个。
sudo /opt/tdc/tdc_admin rs --snapshot_id=[$Logical_ID] --oss_snapshot_domain=[$Domain] --oss_access_id=[$Access_ID] --oss_access_key=[$Access_Key] --oss_ocm_address=[$Ocm_Addr] --dump_data=true --output=/tmp/[$File].raw
说明:系统显示类似如下。
- [$Domain]、[$Access_ID]、[$Access_Key]、[$Ocm_Addr]为上一步获取的值。
- [$Logical_ID]为给临时恢复的云盘创建快照中步骤3输出的logical_id的值。
- [$File]为导出的快照文件名。
此步骤可参考以下KB文档,即可上传系统盘。
说明:Linux系统可能会出现新建ECS后实例无法登录系统的情况,此时可通过VNC登录,按Ctrl+D,输入root密码进入,修改
/etc/fstab
文件,注释之前挂载的数据盘的行,保存后重启ECS实例即可,正常进入操作系统。
说明:挂载的数据盘与误删除ECS实例恢复的数据盘容量大小相同,并且正常挂载到测试ECS实例中。
go2hyapi attach_disk region_id=[$Region_ID] instance_id=[$Instance_ID] disk_id=[$Disk_ID]系统显示类似如下,说明数据盘挂载完成。
ECS实例恢复完毕,确认检查无问题。
update cluster_info set deleted_disk_preserve='24' where cluster_id='[$Cluster_ID]' \G系统显示类似如下。
update device
set status='deleted'
where partition_name='[$Instance_ID]' and id='[$ID]' and pangu_cluster_id='[$Pangu_Cluster_ID]' and device_id='[$Device_ID]';
go2hyapi remove_snapshot snapshot_id=[$Logical_ID] region_id=[$Region_ID]
在文档使用中是否遇到以下问题
更多建议
匿名提交