docker安装etcd 及备份还原

Yml文件

version: "3.5"

services:

  etcd:

    image: docker.io/bitnami/etcd:3

    restart: always

    volumes:

      - ./etcd:/bitnami/etcd

    environment:

      ETCD_ENABLE_V2: "true"

      ALLOW_NONE_AUTHENTICATION: "yes"

      ETCD_ADVERTISE_CLIENT_URLS: "[http://0.0.0.0:2379](http://0.0.0.0:2379)"

      ETCD_LISTEN_CLIENT_URLS: "[http://0.0.0.0:2379](http://0.0.0.0:2379)"

    ports:

      - "2379:2379/tcp"

    networks:

      etcdnet:

networks:

  etcdnet:

    name: etcdnet

在当前目录下创建好etcd/data目录,并进入etcd文件夹,给data文件夹授权

chmod 777 data

如果不创建data目录或者未授权,启动后会报错,类似于如下

msg":"check file permission","error":"directory \"/bitnami/etcd/data\" exist, but the permission is \"drwxrwxr-x\". The recommended permission is \"-rwx------\" to prevent possible unprivileged access to the data"

备份及还原
网上有不少教程,但基本上都是基于集群或者主机安装的,涉及到基于docker安装etcd的备份还原资料不多,而且不少都无效。

备份

ETCDCTL_API=3  docker exec -it etcd etcdctl --endpoints=":2379" snapshot save "/home/snapshot.db"

home目录要提前创建,不会自动创建,否则会报如下错误

Error: could not open /home/snapshot.db.part (open /home/snapshot.db.part: permission denied)

将snapshot.db拷贝到宿主机,再传到其他需要还原的机器即可。

还原

相对于备份,在docker下还原麻烦一些,
进入容器, 删除目录/bitnami/etcd/data下的所有内容 ( 慎重,确保数据可以清空)

然后执行命令恢复

ETCDCTL_API=3  docker exec -it etcd etcdctl  snapshot restore  "/home/snapshot.db" --endpoints=":2379" --data-dir=/bitnami/etcd/data

如果使用其他目录,数据是还原的,但是etcd中的数据不是还原的,如果需要使用还原的数据库,需要设置data-dir,且此时data-dir未映射到主机,如果使用已有的data-dir目录,会报如下错误

Error: data-dir "/bitnami/etcd/data" not empty or could not be read
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇