From 6b12f0bbcefb0e8ed6f017e76523159aa2827e91 Mon Sep 17 00:00:00 2001 From: Wojciech Tyczynski Date: Fri, 4 Nov 2016 10:15:32 +0100 Subject: [PATCH] Backup before migration --- cluster/images/etcd/migrate-if-needed.sh | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/cluster/images/etcd/migrate-if-needed.sh b/cluster/images/etcd/migrate-if-needed.sh index 5b262837138..5ff7072cfd9 100755 --- a/cluster/images/etcd/migrate-if-needed.sh +++ b/cluster/images/etcd/migrate-if-needed.sh @@ -145,6 +145,18 @@ stop_etcd() { ATTACHLEASE="${ATTACHLEASE:-/usr/local/bin/attachlease}" ROLLBACK="${ROLLBACK:-/usr/local/bin/rollback}" +# If we are upgrading from 2.2.1 and this is the first try for upgrade, +# do the backup to allow restoring from it in case of failed upgrade. +BACKUP_DIR="${DATA_DIRECTORY}/migration-backup" +if [ "${CURRENT_VERSION}" = "2.2.1" -a ! -d "${BACKUP_DIR}" ]; then + echo "Backup etcd before starting migration" + mkdir ${BACKUP_DIR} + ETCDCTL_CMD="/usr/local/bin/etcdctl-2.2.1" + ETCDCTL_API=2 ${ETCDCTL_CMD} backup --data-dir=${DATA_DIRECTORY} \ + --backup-dir=${BACKUP_DIR} + echo "Backup done in ${BACKUP_DIR}" +fi + # Do the roll-forward migration if needed. # The migration goes as following: # 1. for all versions starting one after the current version of etcd