# Backup and Restore ETCD Database

**URL:** <https://discuss.kubernetes.io/t/backup-and-restore-etcd-database/12889>\
**Category:** General Discussions\
**Created:** [September 20, 2020, 5:51pm UTC](https://discuss.kubernetes.io/t/backup-and-restore-etcd-database/12889 "2020-09-20T17:51:53Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![cloudwizard](https://avatars.discourse-cdn.com/v4/letter/c/87869e/32.png) [@cloudwizard](https://discuss.kubernetes.io/u/cloudwizard)\
**Post date:** [September 20, 2020, 5:51pm UTC](https://discuss.kubernetes.io/t/backup-and-restore-etcd-database/12889/1 "2020-09-20T17:51:53Z")

</div>

- Are this the correct commands to backup the ETCD DB:

ETCDCTL\_API=3 etcdctl help

ETCDCTL\_API=3 etcdctl --endpoints [https://127.0.0.1:2379](https://127.0.0.1:2379) --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key snapshot save /tmp/snapshot-pre-boot.db

- Are this the correct commands to Restore the ETCD DB:

ETCDCTL\_API=3 etcdctl --endpoints=https://[127.0.0.1]:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt   
–name=master   
–cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key   
–data-dir /var/lib/etcd-from-backup   
–initial-cluster=master=https://127.0.0.1:2380   
–initial-cluster-token=etcd-cluster-1   
–initial-advertise-peer-urls=https://127.0.0.1:2380   
snapshot restore /tmp/snapshot-pre-boot.db

- Update ETCD manifest file with correct backup directory and token:

- –data-dir=/var/lib/etcd-from-backup

- –initial-cluster-token=etcd-cluster-1

- Update ETCD manifest file with correct hostpath and volume:  
volumeMounts:

---

<div class="post-metadata">

**Author:** ![tej-singh-rana](https://sea2.discourse-cdn.com/flex016/user_avatar/discuss.kubernetes.io/tej-singh-rana/32/5921_2.png) [@tej-singh-rana](https://discuss.kubernetes.io/u/tej-singh-rana)\
**Post date:** [September 24, 2020, 8:51am UTC](https://discuss.kubernetes.io/t/backup-and-restore-etcd-database/12889/2 "2020-09-24T08:51:20Z")

</div>

You can visit this post. [ETCD - backup and restore management](https://discuss.kubernetes.io/t/etcd-backup-and-restore-management/11019/6)

---

<div class="post-metadata">

**Author:** ![ksaravind](https://avatars.discourse-cdn.com/v4/letter/k/958977/32.png) [@ksaravind](https://discuss.kubernetes.io/u/ksaravind)\
**Post date:** [November 27, 2020, 2:59am UTC](https://discuss.kubernetes.io/t/backup-and-restore-etcd-database/12889/3 "2020-11-27T02:59:06Z")

</div>

Above steps looks good, are you facing any issue?

---

<div class="post-metadata">

**Author:** ![haozhiyu](https://sea2.discourse-cdn.com/flex016/user_avatar/discuss.kubernetes.io/haozhiyu/32/7284_2.png) [@haozhiyu](https://discuss.kubernetes.io/u/haozhiyu)\
**Post date:** [March 30, 2021, 12:32am UTC](https://discuss.kubernetes.io/t/backup-and-restore-etcd-database/12889/5 "2021-03-30T00:32:46Z")

</div>

First, you need to install etcd-client: sudo apt install etcd-client

---

<div class="post-metadata">

**Author:** ![chandramohan](https://avatars.discourse-cdn.com/v4/letter/c/ea5d25/32.png) [@chandramohan](https://discuss.kubernetes.io/u/chandramohan)\
**Post date:** [April 7, 2021, 1:51pm UTC](https://discuss.kubernetes.io/t/backup-and-restore-etcd-database/12889/6 "2021-04-07T13:51:39Z")

</div>

can we restore etcd using pem format cert and keys? if so, is it possible only from master node?

ETCD backup is as below:  
ETCDCTL\_API=3 etcdctl --endpoints=https://[127.0.0.1]:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt  
–name=master  
–cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key snapshot save /var/etcd-backup.db

ETCD restore using below:

cert-/opt/etcd-client-ca.pem key=/opt/etcd-client-key.pem restore from /opt/previous\_backup.db

---

<div class="post-metadata">

**Author:** ![vinodhvenugopal](https://sea2.discourse-cdn.com/flex016/user_avatar/discuss.kubernetes.io/vinodhvenugopal/32/8536_2.png) [@vinodhvenugopal](https://discuss.kubernetes.io/u/vinodhvenugopal)\
**Post date:** [August 25, 2021, 2:06pm UTC](https://discuss.kubernetes.io/t/backup-and-restore-etcd-database/12889/10 "2021-08-25T14:06:06Z")

</div>

Can anyone post the commands to take backup and restore HA ETCD cluster. and also please let me knoe, after restore ,we need reboot any kubeadm tools ?

---

<div class="post-metadata">

**Author:** ![Ramesh\_Godishela](https://sea2.discourse-cdn.com/flex016/user_avatar/discuss.kubernetes.io/ramesh_godishela/32/10359_2.png) [@Ramesh\_Godishela](https://discuss.kubernetes.io/u/Ramesh_Godishela)\
**Post date:** [June 30, 2022, 8:12am UTC](https://discuss.kubernetes.io/t/backup-and-restore-etcd-database/12889/12 "2022-06-30T08:12:35Z")

</div>

#get certs  
cat /etc/kubernetes/manifests/kube-apiserver.yaml | grep etcd

#take a snapshot  
ETCDCTL\_API=3 etcdctl snapshot save /tmp/etcd-backup.db   
–cacert /etc/kubernetes/pki/etcd/ca.crt   
–cert /etc/kubernetes/pki/etcd/server.crt   
–key /etc/kubernetes/pki/etcd/server.key

#restore a snapshot  
ETCDCTL\_API=3 etcdctl snapshot restore /tmp/etcd-backup.db   
–data-dir /var/lib/etcd-backup   
–cacert /etc/kubernetes/pki/etcd/ca.crt   
–cert /etc/kubernetes/pki/etcd/server.crt   
–key /etc/kubernetes/pki/etcd/server.key

---

<div class="post-metadata">

**Author:** ![V1RAL\_V1DZ](https://sea2.discourse-cdn.com/flex016/user_avatar/discuss.kubernetes.io/v1ral_v1dz/32/15627_2.png) [@V1RAL\_V1DZ](https://discuss.kubernetes.io/u/V1RAL_V1DZ)\
**Post date:** [August 20, 2024, 3:55pm UTC](https://discuss.kubernetes.io/t/backup-and-restore-etcd-database/12889/17 "2024-08-20T15:55:10Z")

</div>

Back Up the etcd Data

1. From the terminal, log in to the etcd server:  
ssh etcd1
2. Back up the etcd data:  
ETCDCTL\_API=3 etcdctl snapshot save /home/cloud\_user/etcd\_backup.db   
–endpoints=[https://etcd1:2379](https://etcd1:2379)   
–cacert=/home/cloud\_user/etcd-certs/etcd-ca.pem   
–cert=/home/cloud\_user/etcd-certs/etcd-server.crt   
–key=/home/cloud\_user/etcd-certs/etcd-server.key  
Restore the etcd Data from the Backup
3. Stop etcd:  
sudo systemctl stop etcd
4. Delete the existing etcd data:  
sudo rm -rf /var/lib/etcd
5. Restore etcd data from a backup:  
sudo ETCDCTL\_API=3 etcdctl snapshot restore /home/cloud\_user/etcd\_backup.db   
–initial-cluster etcd-restore=[https://etcd1:2380](https://etcd1:2380)   
–initial-advertise-peer-urls [https://etcd1:2380](https://etcd1:2380)   
–name etcd-restore   
–data-dir /var/lib/etcd
6. Set database ownership:  
sudo chown -R etcd:etcd /var/lib/etcd
7. Start etcd:  
sudo systemctl start etcd
8. Verify the system is working:  
ETCDCTL\_API=3 etcdctl get cluster.name   
–endpoints=[https://etcd1:2379](https://etcd1:2379)   
–cacert=/home/cloud\_user/etcd-certs/etcd-ca.pem   
–cert=/home/cloud\_user/etcd-certs/etcd-server.crt   
–key=/home/cloud\_user/etcd-certs/etcd-server.key

---

<div class="post-metadata">

**Author:** ![Arun\_1998](https://sea2.discourse-cdn.com/flex016/user_avatar/discuss.kubernetes.io/arun_1998/32/18181_2.png) [@Arun\_1998](https://discuss.kubernetes.io/u/Arun_1998)\
**Post date:** [April 12, 2026, 5:45pm UTC](https://discuss.kubernetes.io/t/backup-and-restore-etcd-database/12889/18 "2026-04-12T17:45:17Z")

</div>

Backup:

ETCDCTL\_API=3 etcdctl --endpoints=https://[127.0.0.1]:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key snapshot save /opt/snapshot-pre-boot.db

To view status

ETCDCTL\_API=3 etcdctl --endpoints=https://[127.0.0.1]:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key snapshot status /opt/snapshot-pre-boot.db –write-out=table

Before restore , kindly follow below steps

mv /etc/kubernetes/manifests/kube-apiserver.yaml /tmp/

ETCDCTL\_API=3 etcdctl --endpoints=https://[127.0.0.1]:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt  
–cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key  
–data-dir /var/lib/etcd-from-backup  
snapshot restore /opt/snapshot-pre-boot.db

And edit etcd.yaml file

–data-dir /var/lib/etcd-from-backup

volumeMounts:

- mountPath: /var/lib/etcd-from-backup  
name: etcd-data
- mountPath: /etc/kubernetes/pki/etcd  
name: etcd-certs

volumes:

-hostPath:  
path: /etc/kubernetes/pki/etcd  
type: DirectoryOrCreate  
name: etcd-certs

-hostPath:  
path: /var/lib/etcd-from-backup  
type: DirectoryOrCreate  
name: etcd-data

mv /tmp/kube-apiserver.yaml /etc/kubernetes/manifests

sudo systemctl restart kubelet
