备份和恢复 CLI
ENTERPRISE
使用 CLI 备份和恢复群集
您可以使用 CLI 来创建和恢复群集的备份。还可以选择备份和恢复在 DC/OS 群集内运行的 ZooKeeper 状态。
先决条件
- DC/OS Enterprise 群集
- DC/OS CLI 已安装
- 安装的 DC/OS Enterprise CLI
-
创建备份并对其分配一个有意义的标签。标签有以下限制:
- 长度必须介于 3 到 25 个字符之间。
- 不能以
..
开始。 - 必须由以下字符组成:[A-Za-z0-9_.-]。
dcos backup create --label=<backup-label>
-
验证您的备份是否已创建。
dcos backup list
或使用以下命令将搜索结果限制为您创建备份时使用的标签。
dcos backup list [label]
备份最初将过渡到
STATUS_BACKING_UP
状态,并且最终应进入STATUS_READY
状态。如果出现错误,它将显示一个STATUS_ERROR
状态。使用dcos backup show <backup-id>
找出在备份过程中 Marathon 出错的原因。 -
在后续命令中使用由
dcos backup list
产生的 ID 引用您的备份。备份 ID 类似于<backup-label>-ea6b49f5-79a8-4767-ae78-3f874c90e3da
。
删除备份
删除不需要的备份。
dcos backup delete <backup-id>
恢复群集
-
列出可用备份,选择要恢复的备份并记录备份 ID。
dcos backup list
-
从所选备份中恢复。
dcos backup restore <backup-id>
-
监控恢复操作的状态。
JSON 输出的dcos backup show <backup-id>
restores.component_status.marathon
参数将显示STATUS_RESTORING
,然后显示STATUS_READY
。
- 确保特定管理节点上有足够的磁盘空间可以临时存储 ZooKeeper 备份。
- 任何 shell 命令都必须以有特权的 Linux 系统用户身份发出。
-
通过 Exhibitor
systemd
单元仅停止一个特定管理节点上的 Zookeeper 实例。systemctl stop dcos-exhibitor
-
通过同一管理节点上提供的 DC/OS ZooKeeper 备份脚本创建 ZooKeeper 备份。
/opt/mesosphere/bin/dcos-shell dcos-zk backup <backup-tar-archive-path> -v
-
在同一管理节点上重新启动先前停止的 ZooKeeper 实例。
systemctl start dcos-exhibitor
- 将已创建的 ZooKeeper 备份 tar 存档从该管理节点下载到 DC/OS 群集之外的安全位置。
- 从管理节点上删除 ZooKeeper 备份 tar 存档。
从 ZooKeeper 备份中恢复
您可以从单个 ZooKeeper 节点备份中恢复,该备份已物理复制到群集中的所有 ZooKeeper 节点。这确保所有节点从备份过程结束之前记录的相同状态返回到操作状态。恢复要求停止所有 ZooKeeper 节点,这意味着这只能是当中断可容忍或正在进行时的选择。
- 将之前创建的单个 ZooKeeper 备份 tar 归档复制到每个管理节点的文件系统。
-
通过 Exhibitor
systemd
单元停止每个管理节点上的 ZooKeeper 实例。systemctl stop dcos-exhibitor
-
通过提供的 DC/OS ZooKeeper 恢复脚本在每个管理节点上启动恢复程序。
/opt/mesosphere/bin/dcos-shell dcos-zk restore <backup-tar-archive-path> -v
-
在每个管理节点上重新启动先前停止的 ZooKeeper 实例。
systemctl start dcos-exhibitor
-
通过 Exhibitor 群集状态 API 端点监控 DC/OS 群集的 Exhibitor 状态(无需身份验证)。
curl https://<master-host-ip>/exhibitor/exhibitor/v1/cluster/status
[
{
"code": 3,
"description": "serving",
"hostname": "172.31.12.169",
"isLeader": true
},
{
"code": 3,
"description": "serving",
"hostname": "172.31.13.255",
"isLeader": false
},
{
"code": 3,
"description": "serving",
"hostname": "172.31.17.144",
"isLeader": false
}
]
serving
状态且领导者已选出时,则恢复程序成功。
ZooKeeper 备份的限制
- 在当前表单中备份 ZooKeeper 状态需要停止一个 ZooKeeper 节点。在使用 3 个管理节点的情况下,这会显著降低进行备份时 DC/OS 群集管理节点中断的容忍度,在使用 5 个管理节点时对恢复力的影响较小。
- 从 ZooKeeper 备份中恢复需要停止 DC/OS 内所有 ZooKeeper 实例。因此,仅建议将此作为恢复其他不可恢复群集的最后方法。