Резервное копирование и восстановление данных
Система предусматривает возможность создания резервных копий, восстановления и переноса основных данных между различными инсталляциями.
MongoDB
MongoDB - NoSQL-СУБД, которая является основным хранилищем данных о пользователях, объектах и связях, их свойствах, состояниях и авариях.
Резервирование
Для экспорта данных из MongoDB в архив необходимо создать и выполнить следующий скрипт:
$ sudo /opt/saymon-scripts/mongodump.sh
Пример текста скрипта (необходимо указать HOST
, LOGIN
, PASS
):
#!/bin/bash
BACKUP=/backups/mongo/mongodump-$(date +%F-%H-%M).gz
HOST='10.130.0.10'
LOGIN='saymon'
PASS='5tr43ewQ21'
# Outputs a log message, prefixed with current date-time.
log() {
echo "[`date`] $1"
}
# Create MongoDB backup.
mongodump -h"$HOST" -u"$LOGIN" -p"$PASS" --db saymon --gzip --archive > "$BACKUP"
log "MongoDB stored to $BACKUP"
По умолчанию резервная копия создается в директории /backups/mongo
в формате gz.
Для периодического автоматического создания новых и удаления старых резервных копий можно добавить соответствующие команды в crontab, например:
$ sudo crontab -e
0 */2 * * * /opt/saymon-scripts/mongodump.sh
10 */2 * * * ls -tr /backups/mongo | xargs realpath | head -n -6 | xargs rm
Восстановление
Для восстановления или импорта данных в MongoDB необходимо создать и выполнить следующий скрипт:
$ sudo /opt/saymon-scripts/mongorestore.sh
Пример текста скрипта (необходимо указать HOST
, LOGIN
, PASS
):
#!/bin/bash
HOST='10.130.0.10'
LOGIN='saymon'
PASS='5tr43ewQ21'
# Outputs a log message, prefixed with current date-time.
log() {
echo "[`date`] $1"
}
# Directory for MongoDB backups.
DIR=/backups/mongo
# Ask user to specify dump file.
read -p "Please specify backup file, e.g. mongodump-2021-04-15-14-10.gz: " BACKUP
# Check if BACKUP exists, remove DIR if ndeeded.
if [[ "$BACKUP" = */backups/mongo/* ]]; then
BACKUP=$(sed 's/\/backups\/mongo\///' <<< "$BACKUP")
fi
if [ -f $DIR/$BACKUP ]; then
log "Backup file $DIR/$BACKUP found!"
else
log "Backup file $DIR/$BACKUP not found!"
exit 1
fi
# Create MongoDB backup.
mongorestore -h"$HOST" -u"$LOGIN" -p"$PASS" --db saymon --drop --noIndexRestore --gzip --archive="$DIR/$BACKUP"
redis-cli -h 10.130.0.10 -a '$6$9UG8HCr0nqj$bVMZfvDKTobl' flushall
log "MongoDB, database saymon, restored from $DIR/$BACKUP"
OpenTSDB
OpenTSDB — специализированное хранилище временных рядов, в котором хранятся числовые метрики, используемые при построении графиков.
Резервирование
Для экспорта данных из OpenTSDB в архив на существующей инсталляции системы необходимо создать и выполнить следующий скрипт:
$ sudo /opt/saymon-scripts/hbasedump.sh
Директория с данными OpenTSDB может отличаться в разных инсталляциях сервера. Перед созданием скрипта убедитесь в наличии данных в директории, указанной в переменной Данные OpenTSDB могут храниться в следующих директориях:
Также, папку
|
Пример текста скрипта:
#!/bin/bash
SOURCE=/var/lib/hbase
BACKUP=/backups/hbase/hbasedump-$(date +%F-%H-%M).tar.gz
# Outputs a log message, prefixed with current date-time.
log() {
echo "[`date`] $1"
}
# Create HBase backup.
tar zcvf "$BACKUP" "$SOURCE"
log "HBase stored to $BACKUP"
По умолчанию резервная копия создается в директории /backups/hbase
в формате .tar.gz.
Директория, в которую сохраняются резервные копии должна существовать перед выполнением скрипта. |
Для периодического автоматического создания новых и удаления старых резервных копий можно добавить соответствующие команды в crontab, например:
$ sudo crontab -e
0 */2 * * * /opt/saymon-scripts/hbasedump.sh
10 */2 * * * ls -tr /backups/hbase | xargs realpath | head -n -6 | xargs rm
Восстановление
Для восстановления или импорта данных в OpenTSDB на новой инсталляции системы необходимо создать и выполнить следующий скрипт:
$ sudo /opt/saymon-scripts/hbaserestore.sh
Директория с данными OpenTSDB может отличаться в разных инсталляциях сервера. Перед созданием скрипта убедитесь в правильности директории, указанной в переменной |
Текст скрипта:
#!/bin/bash
#
# Outputs a log message, prefixed with current date-time.
log() {
echo "[`date`] $1"
}
# Directory for OpenTSDB backups.
DIR=/backups/hbase
# Where to restore OpenTSDB data.
DEST=/var/lib/hbase
# Ask user to specify dump file.
read -p "Please specify backup file, e.g. hbasedump-2021-04-15-14-31.tar.gz: " BACKUP
# Check if BACKUP exists, remove DIR if ndeeded.
if [[ "$BACKUP" = */backups/hbase/* ]]; then
BACKUP=$(sed 's/\/backups\/hbase\///' <<< "$BACKUP")
fi
if [ -f $DIR/$BACKUP ]; then
log "Backup file $DIR/$BACKUP found!"
else
log "Backup file $DIR/$BACKUP not found!"
exit 1
fi
# Restore from BACKUP.
docker stop opentsdb
rm -rf "$DEST"
mkdir -p "$DEST" && tar xvf $DIR/$BACKUP -C /
docker start opentsdb
log "HBase restored from $DIR/$BACKUP"