当前位置: 首页 > news >正文

OVN数据库备份和恢复

1.数据库备份

利用 kubectl 插件的 backup 命令可以对数据库文件进行备份,以用于故障时恢复:

# kubectl ko nb backup
tar: Removing leading `/' from member names
backup ovn-nb db to /root/ovnnb_db.060223191654183154.backup

# kubectl ko sb backup
tar: Removing leading `/' from member names
backup ovn-nb db to /root/ovnsb_db.060223191654183154.backup

2. 集群部分故障恢复

若集群中存在部分节点因为断电,文件系统故障或磁盘空间不足导致工作异常, 但是集群仍可正常工作可以通过如下步骤进行恢复。

查看日志确认状态异常¶
查看对应节点 /var/log/ovn/ovn-northd.log,若提示类似错误则可判断数据库存在异常

 * ovn-northd is not running
ovsdb-server: ovsdb error: error reading record 2739 from OVN_Northbound log: record 2739 advances commit index to 6308 but last log index is 6307
 * Starting ovsdb-nb

从集群中踢出对应节点¶
根据日志提示是 OVN_Northbound 还是 OVN_Southbound 选择对应的数据库进行操作。 上述日志提示为 OVN_Northbound 则对 ovn-nb 进行操作:

# kubectl ko nb status
9182
Name: OVN_Northbound
Cluster ID: e75f (e75fa340-49ed-45ab-990e-26cb865ebc85)
Server ID: 9182 (9182e8dd-b5b0-4dd8-8518-598cc1e374f3)
Address: tcp:[10.0.128.61]:6643
Status: cluster member
Role: leader
Term: 1454
Leader: self
Vote: self

Last Election started 1732603 ms ago, reason: timeout
Last Election won: 1732587 ms ago
Election timer: 1000
Log: [7332, 12512]
Entries not yet committed: 1
Entries not yet applied: 1
Connections: ->f080 <-f080 <-e631 ->e631
Disconnections: 1
Servers:
    f080 (f080 at tcp:[10.0.129.139]:6643) next_index=12512 match_index=12510 last msg 63 ms ago
    9182 (9182 at tcp:[10.0.128.61]:6643) (self) next_index=10394 match_index=12510
    e631 (e631 at tcp:[10.0.131.173]:6643) next_index=12512 match_index=0

从集群中踢出状态异常节点:

kubectl ko nb kick e631

登录异常节点,删除对应的数据库文件:

mv /etc/origin/ovn/ovnnb_db.db /tmp

删除对应节点的 ovn-central Pod,等待集群自动恢复:

kubectl delete pod -n kube-system ovn-central-xxxx

3.集群不能正常工作下的恢复

若集群多数节点受损无法选举出 leader,请参照下面的步骤进行恢复。

停止 ovn-central¶

记录当前 ovn-central 副本数量,并停止 ovn-central 避免新的数据库变更影响恢复:

kubectl scale deployment -n kube-system ovn-central --replicas=0

选择备份

由于多数节点受损,需要从某个数据库文件进行恢复重建集群。如果之前备份过数据库 可使用之前的备份文件进行恢复。如果没有进行过备份可以使用下面的步骤从已有的数据库文件 中生成一个备份。

由于默认文件夹下的数据库文件为集群格式数据库文件,包含当前集群的信息,无法直接 用该文件重建数据库,需要使用 ovsdb-tool cluster-to-standalone 进行格式转换。

选择 ovn-central 环境变量 NODE_IPS 中排第一的节点恢复数据库文件, 如果第一个节点数据库文件已损坏,从其他机器 /etc/origin/ovn 下复制文件到第一台机器 , 执行下列命令生成数据库文件备份。

docker run -it -v /etc/origin/ovn:/etc/ovn kubeovn/kube-ovn:v1.10.7 bash
cd /etc/ovn/
ovsdb-tool cluster-to-standalone ovnnb_db_standalone.db ovnnb_db.db
ovsdb-tool cluster-to-standalone ovnsb_db_standalone.db ovnsb_db.db

删除每个 ovn-central 节点上的数据库文件¶
为了避免重建集群时使用到错误的数据,需要对已有数据库文件进行清理:

mv /etc/origin/ovn/ovnnb_db.db /tmp
mv /etc/origin/ovn/ovnsb_db.db /tmp

恢复数据库集群¶
将备份数据库分别重命名为 ovnnb_db.db 和 ovnsb_db.db,并复制到 ovn-central 环境变量 NODE_IPS 中排第一机器的 /etc/origin/ovn/ 目录下:

mv /etc/origin/ovn/ovnnb_db_standalone.db /etc/origin/ovn/ovnnb_db.db
mv /etc/origin/ovn/ovnsb_db_standalone.db /etc/origin/ovn/ovnsb_db.db

恢复 ovn-central 的副本数:

kubectl scale deployment -n kube-system ovn-central --replicas=3
kubectl rollout status deployment/ovn-central -n kube-system

相关文章:

  • 课程分销平台/长春网站优化方案
  • 在网站上做宣传/如何搜索网页关键词
  • 润商网站建设服务/小红书关键词热度查询
  • 学校网站 建设措施/广东公共广告20120708
  • 网站开发视频播放好做吗/如何线上推广引流
  • 芜湖网站/思亿欧seo靠谱吗
  • 配置 4G 模块为WAN口上网
  • C++异常和断言
  • 十四、使用 Vue Router 开发单页应用(1)
  • 自动推送消息时附带图片的一种实现方式
  • MySQL存储引擎的选择
  • 实战讲解Kibana开发工具(Dev tools)操作ES:CURD(图+文)
  • Qt第二十八章:异步
  • 高阶数据结构:并查集
  • CesiumForUnreal之UE世界坐标与WGS84经纬度坐标转换原理与应用
  • 数据库SQL入门题目及答案记录
  • java-php-net-python-个人理财管理系统答辩PPT计算机毕业设计程序
  • 为啥要这个index 建立索引为什么 hisat2