前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >etcd 备份与恢复

etcd 备份与恢复

作者头像
田飞雨
发布2019-12-19 21:13:46
3.7K0
发布2019-12-19 21:13:46
举报
文章被收录于专栏:田飞雨的专栏田飞雨的专栏

etcd 是一款开源的分布式一致性键值存储,由 CoreOS 公司进行维护,详细的介绍请参考官方文档。

etcd 目前最新的版本的 v3.1.1,但它的 API 又有 v3 和 v2 之分,社区通常所说的 v3 与 v2 都是指 API 的版本号。从 etcd 2.3 版本开始推出了一个实验性的全新 v3 版本 API 的实现,v2 与 v3 API 使用了不同的存储引擎,所以客户端命令也完全不同。

代码语言:javascript
复制
# etcdctl --version
etcdctl version: 3.0.4
API version: 2

官方指出 etcd v2 和 v3 的数据不能混合存放,support backup of v2 and v3 stores

特别提醒:若使用 v3 备份数据时存在 v2 的数据则不影响恢复 若使用 v2 备份数据时存在 v3 的数据则恢复失败

对于 API 2 备份与恢复方法

官方 v2 admin guide

etcd的数据默认会存放在我们的命令工作目录中,我们发现数据所在的目录,会被分为两个文件夹中:

  • snap: 存放快照数据,etcd防止WAL文件过多而设置的快照,存储etcd数据状态。
  • wal: 存放预写式日志,最大的作用是记录了整个数据变化的全部历程。在etcd中,所有数据的修改在提交前,都要先写入到WAL中。
代码语言:javascript
复制
# etcdctl backup --data-dir /home/etcd/ --backup-dir /home/etcd_backup

# etcd -data-dir=/home/etcd_backup/  -force-new-cluster

恢复时会覆盖 snapshot 的元数据(member ID 和 cluster ID),所以需要启动一个新的集群。

对于 API 3 备份与恢复方法

官方 v3 admin guide

在使用 API 3 时需要使用环境变量 ETCDCTL_API 明确指定。

在命令行设置:

代码语言:javascript
复制
# export ETCDCTL_API=3

备份数据:

代码语言:javascript
复制
# etcdctl --endpoints localhost:2379 snapshot save snapshot.db

恢复:

代码语言:javascript
复制
# etcdctl snapshot restore snapshot.db --name m3 --data-dir=/home/etcd_data

恢复后的文件需要修改权限为 etcd:etcd –name:重新指定一个数据目录,可以不指定,默认为 default.etcd –data-dir:指定数据目录 建议使用时不指定 name 但指定 data-dir,并将 data-dir 对应于 etcd 服务中配置的 data-dir

etcd 集群都是至少 3 台机器,官方也说明了集群容错为 (N-1)/2,所以备份数据一般都是用不到,但是鉴上次 gitlab 出现的问题,对于备份数据也要非常重视。

官方文档翻译

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-03-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 对于 API 2 备份与恢复方法
  • 对于 API 3 备份与恢复方法
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档