删除linux服务器数据库,OpenStack手动从数据库中删除实例

由于某种原因我将OpenStack的一个计算节点移除了,但移除前并没有删除在其上运行的实例,后来想通过dash删除这些实例,于是N天过去了,我的dash还显示如下内容:

0b97548099039b6b9e4ca917b2ca0696.png

很碍眼是不是?于是我打算手动从数据库中删除它们!

1.数据库中与删除实例相关的表

数据库中与删除实例相关的表如下:

430d51a9d91448b90cad8961a4e5287a.png

fixed_ips记录给实例分配的fixed ip,floating_ips显然与实例分配的floating ip有关,但我在实验中一直没有使用过floating故不作评断,instance_actions我这里是空的不管,instance_faults记录与实例有关的错误不管,instance_info_caches与实例的网络设置缓存有关,instance_metadata实例的元数据有关不管,instance_type_extra_specs与instance_types与flavor设置有关不管,instances显然是实例的主表,volumes与实例的volumes有关。我的实验中没有floating ip也没有volumes故我只关注fixed_ips,instance_info_caches,instances三个表。

2.OpenStack的删除策略

通过观察发现Nova中的表中基本都有如下字段:

2c574f2e20860d05459d958b8b0e26b9.png

OpenStack在删除对象时并不删除数据库中的记录,只是修改deleted_at和deleted字段。

3.操作数据库

删除实例的操作主要集中在instances,instance_info_caches,fixed_ips三个表。

3.1操作instances表

下图是我的数据库中曾经删除了的test3(右边)与现在无法删除的test3(左边)的对比:

d9652bf431b1cfff1a75c0f9ac4f1275.png

因此我的操作如下:

updateinstancesset

deleted_at = updated_at,

deleted = 1,

power_state = 5,

vm_state ="deleted",

terminated_at = updated_at,

root_device_name =NULL,

task_state =NULL

whereid = 9;3.2操作instance_info_caches和fixed_ips

这两个操作简单,在前一步操作后已经在dash中看不到被删除的实例了,这两步操作主要是释放被删除实例所占用的网络资源,直接上代码:

updateinstance_info_cachesset

deleted_at = updated_at,

deleted = 1

whereid = 9;

updatefixed_ipsset

instance_id =NULL,

allocated = 0,

virtual_interface_id =NULL

whereid = 7;OK,如法炮制又删除了另一个实例,总算在dash中不用看那两个讨厌的实例了。0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值