• Главная
  • Документация

АГИС Администрирование

Главная/Документация/АГИС Администрирование
Развернуть все Свернуть все
  • О разделе АГИС Администрирование
  •  Установка АГИС
    • Инсталяция Ubuntu
    • Установка LVM
    • Установка Docker
    • Установка модулей АГИС
    • Резервные копии
  • Запуск, перезапуск и останов АГИС
  •  Администрирование
    •   Ubuntu
      •   LVM&Snapshot
        • Snapshot
        • agis_backup_lvm_xfs
        • Ошибки
      •   Nginx, ssl, letsencrypt
        • Сертификат ssl
        • Letsencrypt
      •   NAS
        • Synology
        • Qnap
      •   SSH
        • SSH доступ без пароля по ключу
        • Клиент ssh
      •   Разные команды
        • Основные команды Linux
        • Расширенные команды
        • Работа с сервером
      • FTP server
      • VPN server
    •   Базы данных
      • Запуск базы данных АГИС
      •   Mongo
        • mongodump-mongorestore
        • Основы
        • Test mongo db
        • Запросы mongodb
        • Запуск mongodb
        • Studio 3T for Mongo DB
        • Тестовый контейнер mongodb
        • mongodb формат даты
        • Replica set
      •   PostgreSQL
        • Test postgis
        • Dump&Restore PostgreSQL
        • Установка и запуск
        • PostgreSQL разное
      •   Elastic search
        • Команды elasticsearch
        • Tools to backup and restore ElasticSearch indices
      • Troubleshooting базы данных АГИС
      • MySql
    •   Docker
      • Команды Docker
      • Команды Docker (admin)
      • docker ps
      • .env
      • docker images save load
    •   Troubleshhoting
      • Mobaxterm
      • Проблема с дисками после raid
    •   Pfsense
      • Установка
      • Openvpn client
    •   Разное
      • Сколько байт(бит) в килобайте, мегабайте, гигабайте
      • Save bookmarks Studio 3T Mobaxterm
      • Acronis true image
      • Кодировки
  •  АГИС ГИС сервер
    • Запуск и остановка Tile сервера
    • Экспорт шейпа из АГИС ГИС
    • Импорт шейпа в АГИС ГИС
    • Backup&restore postgis(postgres)
    • Запуск pgAdmin4
    • Troubleshooting postgis
  •  АГИС Администрирование
    •   Пользователи
      • Добавление нового пользователя
    •   Роли
      • Добавление новой роли
    •   Перевод
      • Добавления перевода
    • АДС (Автоматизированная дисп служба)

mongodump-mongorestore

935 просмотров 0

Чато используемые команды, файлы дампа сохранются на хосте

Dump всех баз даных в контейнере agis-mongo-db

$ nohup docker exec -i agis-mongo-db sh -c "mongodump --gzip --archive" > db_dump.gz 2>db_dump.log &
$ nohup docker exec -i agis-mongo-db-bil sh -c "mongodump --gzip --archive" > db-bil_dump.gz 2>db-bil_dump.log &

Dump всех баз даных в контейнере agis-mongo-db. Если в БД установлен пароль, то для бакапа нужен пользователь agis-dump с ролью backup

$ nohup docker exec -i agis-mongo-db sh -c "mongodump --username=agis-dump --password=i99xfeiyZ1kF --gzip --archive" > db_dump.gz 2>db_dump.log &
$ nohup docker exec -i agis-mongo-db sh -c "mongodump --username agis --password i99xfeiyZ1kF --authenticationDatabase admin --gzip --archive" > db_dump.gz 2>db_dump.log &

Restore всех баз даных из db_dump.gz в контейнер agis-mongo-db

$ nohup docker exec -i agis-mongo-db sh -c 'mongorestore --gzip --archive' < db_dump.gz 2>db_restore.log &

Копирование коллекций внутри одной базы

$ docker exec -it agis-mongo-db-bil sh
# mongodump --archive --db=agisbil --collection=client-facility | mongorestore --archive --nsFrom='agisbil.client-facility' --nsTo='agisbil.client-facility-copy'
# mongodump --archive --db=agisbil --collection=client-subject | mongorestore --archive --nsFrom='agisbil.client-subject' --nsTo='agisbil.client-subject-copy'
# mongodump --archive --db=agisbil --collection=client-rel-subject-facility-copy | mongorestore --archive --nsFrom='agisbil.client-rel-subject-facility-copy' --nsTo='agisbil.client-rel-subject-facility'

Mongodump, файлы дампа сохранются в контейнере

$ docker exec agis-mongo-db sh -c "mongodump --archive=/data/db/db_dump"
$ docker exec agis-mongo-db sh -c "mongodump --gzip --archive=/data/db/db_dump.gz"

Mongodump, запуск внутри контейнера

# mongodump --gzip --archive=./db_dump.tgz &
# mongodump --archive=./db_dump &
# mongodump --archive=test.20150715.archive --db=test

Mongorestore запуск с хоста

docker exec -i agis-mongo-db sh -c 'mongorestore --archive' < db_dump
docker exec -i agis-mongo-db sh -c 'mongorestore --gzip --archive' < db_dump.gz
docker exec -i mongodb sh -c 'mongorestore -u root -p 12345678 --archive' < db_dump

Mongorestore запуск внутри контейнера

# mongorestore --gzip --archive ./db_dump.tgz &
# mongorestore --host=localhost --port=40200 --db=lb-address-service ./lb-address-service
# mongorestore --host=localhost --port=40200 --db=zander ./zander

$ docker exec -i agis-mongo-db sh -c "mongorestore /data/db/dump/lb-scada-service-2020-05-12-1630/"

Mongorestore запуск внутри контейнера, можно отключаться от сессии ssh, логи сохраняться внутри контейнера

docker exec -d agis-mongo-db sh -c "mongorestore /data/db/dump/lb-scada-service-2020-05-12-1630/ > /data/db/dump/mongorestore.log 2>&1"
https://docs.mongodb.com/manual/reference/program/mongodump/
https://docs.mongodb.com/manual/reference/program/mongorestore/

Создание резервных копий закрытого периода в биллинге

$ nohup agis-mongo-dump-period-close.sh &

nohup – UNIX-утилита, запускающая указанную команду с игнорированием сигналов потери связи (SIGHUP).

Таким образом, команда будет продолжать выполняться в фоновом режиме и после того, как пользователь выйдет из системы.

Запустили команду – вышли из ssh, пошли пить чай!

Скрипт agis-mongo-dump-period-close.sh

Тут есть два параметра

BACKUPDIR=”/data/backup/dumps_period_close” – папка, куда будет сохранен архив mongodump

BACKUPCONT=”agis-mongo-db-bil” – название контейнера базы данных mongo

В папке $BACKUPDIR будет создан log file содержащий историю выполнения mongodump

Пример:

agis-mongo-db-bil-2021-01-23_05-36.arch-dump  – Сам архив
agis-mongo-db-bil-2021-01-23_05-36.log – log файл

$ cat agis-mongo-dump-period-close.sh
#!/bin/bash
# agis-mongo-dump-period-close.sh
# Thi script is written to backup mongo billing container with log file
# 30 Dec 2020 15:41:23 PM +06
# Author Kazdayev Nurlan

#Settings
BACKUPDIR="/data/backup/dumps_period_close"   # name of the directory where backup have to save
BACKUPCONT="agis-mongo-db-bil"
# ----------------------------------------------------------------------------------------------
TIMESTAMP=$(date +"%Y-%m-%d_%H-%M")
LOGFILE=$BACKUPDIR/$BACKUPCONT-$TIMESTAMP.log
echo $(date +"%Y-%m-%d %H:%M:%S") "Start mongodump $BACKUPCONT --gzip --archive" > $LOGFILE
/usr/bin/docker exec $BACKUPCONT sh -c "mongodump --gzip --archive" > $BACKUPDIR/$BACKUPCONT-$TIMESTAMP.arch-dump 2>>$LOGFILE
if [ $? = 0 ]; then
   echo $(date +"%Y-%m-%d %H:%M:%S") "Резервная копия $BACKUPCONT сделана" >> $LOGFILE
else
   echo $(date +"%Y-%m-%d %H:%M:%S") "Ошибка при создании $BACKUPCONT резервной копии" >> $LOGFILE
fi
echo $(date +"%Y-%m-%d %H:%M:%S") " Finish mongodump $BACKUPCONT --gzip --archive" >> $LOGFILE

Дополнительно

Создать копию отдельной коллекции

mongodump --gzip --archive=fs.chunks.gz --db=zander --collection=fs.chunks
mongodump --gzip --archive=fs.files.gz --db=zander --collection=fs.files
mongorestore --gzip --archive=fs.chunks.gz --nsFrom='zander.*' --nsTo='zander.*'
mongorestore --gzip --archive=fs.files.gz --nsFrom='zander.*' --nsTo='zander.*'

$ docker exec -it agis-mongo-db bash root@8d6a2a16260e:/# cd /data/db/dump/ mongodump --gzip --archive --db=zander --collection=devicePassports > devicePassports.gz mongodump --gzip --archive=fs.chunks.gz --db=zander --collection=fs.chunks mongodump --gzip --archive=fs.files.gz --db=zander --collection=fs.files

Импортировать коллекции zander.*, которые были в БД zander из архивного файла mongodump.gz в новую базу scada

mongorestore --gzip --archive --nsFrom='zander.*' --nsTo='scada.*' < mongodump.gz
mongorestore --gzip --archive=mongodump.gz --nsFrom='zander.*' --nsTo='scada.*'

Импортировать все коллекции из архивного файла mongodump.gz в новую базу scada

mongorestore --gzip --archive=mongodump.gz --nsFrom='*' --nsTo='newscada.*'

Копировать из БД scada коллекцию rolles в БД scada коллекцию roles2

mongodump --archive --db=scada --collection=roles | mongorestore --archive --nsFrom=scada.roles --nsTo=scada.roles2
mongodump --archive --db=zander --collection=objectValues201 | mongorestore --archive --nsFrom=zander.objectValues201 --nsTo=zander.['objectValues201-3']

Копировать из БД agisbill коллекцию 000 в БД scada коллекцию 000-new-copy

I have no name!@47740762dd91:/data/db$ mongodump --archive --db=agisbil --collection=000 | mongorestore --archive --nsFrom=agisbil.000 --nsTo=agisbil.000-new-copy
2022-02-17T06:54:27.380+0000 writing agisbil.000 to archive on stdout
2022-02-17T06:54:27.384+0000 preparing collections to restore from
2022-02-17T06:54:27.388+0000 done dumping agisbil.000 (5 documents)
2022-02-17T06:54:27.407+0000 reading metadata for agisbil.000-new-copy from archive on stdin
2022-02-17T06:54:27.435+0000 restoring agisbil.000-new-copy from archive on stdin
2022-02-17T06:54:27.447+0000 finished restoring agisbil.000-new-copy (5 documents, 0 failures)
2022-02-17T06:54:27.448+0000 restoring indexes for collection agisbil.000-new-copy from metadata
2022-02-17T06:54:27.448+0000 index: &idx.IndexDocument{Options:primitive.M{"name":"meta.period_1", "v":2}, Key:primitive.D{primitive.E{Key:"meta.period", Value:1}}, PartialFilterExpression:primitive.D(nil)}
2022-02-17T06:54:27.477+0000 5 document(s) restored successfully. 0 document(s) failed to restore.

Восстановить из dump.gz коллекцию roles в БД scada4 коллекцию roles9

mongorestore --gzip --archive=dump.gz --nsInclude=zander.roles --nsFrom=zander.roles --nsTo=scada4.roles9

Копировать из БД scada коллекцию rolles в БД newscada коллекцию roles

mongodump --archive --db=scada --collection=roles | mongorestore --archive --nsFrom=scada.roles --nsTo=newscada.roles

Создать копии всех коллекций, кроме перечисленных

mongodump --gzip --archive=mongodumpZander.gz --db=zander --excludeCollection=values201 --excludeCollection=objectValues201 --excludeCollection=message201 --excludeCollection=logg201 --excludeCollection=fs.chunks --excludeCollection=odataOpuConsumptionReading --excludeCollection=values --excludeCollection=odataByHoursZones2 --excludeCollection=opuReadings --excludeCollection=opuConsumptionHour --excludeCollection=odataByHoursFlowRate2 --excludeCollection=odataByHoursFlowRate1 --excludeCollection=odataByHoursZones1 --excludeCollection=hourBytes201 --excludeCollection=message --excludeCollection=odataByHoursPressure --excludeCollection=objectValuesCount201 --excludeCollection=odataByHoursZonesSum2 --excludeCollection=odataByHoursZonesSum1 --excludeCollection=logg401 --excludeCollection=odataByHours --excludeCollection=odataByHoursZones --excludeCollection=hourBytes401 --excludeCollection=odataByHoursZoneTest --excludeCollection=opuConsumptionMonth --excludeCollection=opuConsumption

Из операционной системы, т.е. вне контейнера файлы доступны

$ ls -l /data/agis/db/agis-mongo-db/db/dump
total 8421624
-rw-r--r-- 1 root root   10529621 Nov  7 03:05 mongodump.gz
-rw-r--r-- 1 root root    6197064 Nov  6 23:16 db_dump.gz
-rw-r--r-- 1 root root 4740821206 Nov  7 03:32 fs.chunks.gz
-rw-r--r-- 1 root root     420995 Nov  7 03:29 fs.files.gz
-rw-r--r-- 1 root root   10526569 Nov  7 03:10 mongodumpZander.gz
-rw-r--r-- 1 root root    6197064 Nov  7 01:52 test.gz

Копировать

mongodump --archive --db=agisbil --collection=client-facility | mongorestore --archive --nsFrom=agisbil.client-facility --nsTo=agisbil2022end.client-facility202202end

mongodump --archive --db=agisbil --collection=client-rel-subject-facility | mongorestore --archive --nsFrom=agisbil.client-rel-subject-facility --nsTo=agisbil2022end.client-rel-subject-facility202202end

mongodump --archive --db=agisbil --collection=client-subject | mongorestore --archive --nsFrom=agisbil.client-subject --nsTo=agisbil2022end.client-subject202202end
mongodump --archive --db=agisbil2022end --collection=client-subject202202end | mongorestore --archive --nsFrom=agisbil2022end.client-subject202202end --nsTo=agisbil.client-subject
mongodump --archive --db=agisbil --collection=counter-wc | mongorestore --archive --nsFrom=agisbil.counter-wc --nsTo=agisbil2022end.counter-wc202202end
mongodump --archive --db=agisbil2022end | mongorestore --archive --nsFrom='agisbil2022end.*' --nsTo='agisbil2022endCopy.*'
db['client-facility'].deleteMany({ "meta.period": 202203 }) db['client-subject'].deleteMany({ "meta.period": 202203 }) db['client-rel-subject-facility'].deleteMany({ "period": 202203 })
Прикрепленные файлы
#
Тип файл
Размер файла
Скачать
1 .zip 568,00 Б GetMsg201
Вам может быть интересно
  • Сертификат ssl
  • Replica set
  • VPN server
  • MySql
  • Кодировки
  • АДС (Автоматизированная дисп служба)
  • Copyright 2020 AGIS. Все права защищены