Резервное копирование и восстановление данных
Статья описывает процесс сохранения резервных копий, восстановления и переноса данных системы между различными инсталляциями.
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
Пример текста скрипта:
#!/bin/bash
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" /var/lib/hbase
log "HBase stored to $BACKUP"
По умолчанию резервная копия создается в директории /backups/hbase
в формате 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
Текст скрипта:
#!/bin/bash
#
# Outputs a log message, prefixed with current date-time.
log() {
echo "[`date`] $1"
}
# Directory for MongoDB backups.
DIR=/backups/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 /var/lib/hbase
tar xvf $DIR/$BACKUP -C /
docker start opentsdb
log "HBase restored from $DIR/$BACKUP"
Конфигурационные файлы
Для экспорта настроек конфигурации необходимо сделать копию директории с конфигурационными файлами /etc/saymon
.
Для экспорта настроек конфигурации необходимо сделать копию директории с конфигурационными файлами /etc/saymon
.
Для импорта настроек конфигурации необходимо поместить файлы из ранее сохранённой директории с конфигурационными файлами в директорию /etc/saymon
.