Показаны сообщения с ярлыком pg_dump. Показать все сообщения
Показаны сообщения с ярлыком pg_dump. Показать все сообщения

понедельник, 16 марта 2020 г.

ERROR: invalid memory alloc request size 1230291841

postgres=# \c demo
You are now connected to database "demo" as user "postgres".
demo=# SELECT nspname || '.' || relname AS "relation",
demo-#     pg_size_pretty(pg_total_relation_size(C.oid)) AS "total_size"
demo-#   FROM pg_class C
demo-#   LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
demo-#   WHERE nspname NOT IN ('pg_catalog', 'information_schema')
demo-#     AND C.relkind <> 'i'
demo-#     AND nspname !~ '^pg_toast'
demo-#   ORDER BY pg_total_relation_size(C.oid) DESC
demo-#   LIMIT 20;
        relation        | total_size
------------------------+------------
 public._inforg24222    | 6462 MB
 public.config          | 165 MB
 public._inforg23805    | 34 MB
 public._inforg24502    | 23 MB
 public._inforg28528    | 23 MB
 public._accumrg28622   | 21 MB
 public._accumrg29176   | 18 MB
 public._crg1079        | 16 MB
 public._inforg31568    | 15 MB
 public._accumrg28976   | 14 MB
 public._inforg27395    | 13 MB
 public._accumrg29535   | 12 MB
 public._inforg31471    | 10 MB
 public._inforg31504    | 9992 kB
 public._accumrg29493   | 9616 kB
 public._accumrg29219   | 9144 kB
 public._accumrg29255   | 8176 kB
 public._accumrgtn29205 | 7632 kB
 public._accumrg29658   | 7344 kB
 public._inforg26344    | 6600 kB
(20 rows)

demo=# \q
postgres@test:/root$ exit
root@test:~# выход
user@test:~$  time sudo su postgres -c "pg_dump -Fc demo"  > ~/demo.dump
pg_dump: Ошибка выгрузки таблицы "_inforg24222": сбой в PQgetResult().
pg_dump: Сообщение об ошибке с сервера: ERROR:  invalid memory alloc request size 1230291841
pg_dump: Выполнялась команда: COPY public._inforg24222 (_fld24223_type, _fld24223_rtref, _fld24223_rrref, _fld24224, _fld864) TO stdout;

real    4m14,566s
user    3m47,729s
sys     0m4,269s


~$ sudo su postgres
[sudo] пароль для user:
postgres@test:/home/user$ psql
psql (10.10 (Ubuntu 10.10-4.1C))
Введите "help", чтобы получить справку.

postgres=# \c demo
Вы подключены к базе данных "demo" как пользователь "postgres".
demo=# DELETE FROM public._inforg24222;
DELETE 1657
 

среда, 11 марта 2020 г.

Перестал работать бэкап и восстановление средствами PostgreSQL

Прочее → 1С:Молокозавод 1.3.112.4 - не работает бэкап средствами PostgreSQL
Позиция 1С:
Причиной возникновения ошибки является ограничение PostgreSQL на работу со значениями, размер которых превышает 1Гб.
Ошибка может воспроизводиться, если конфигурация находится на поддержке и при этом отличается (значительно) от конфигурации поставщика (в режиме совместимости 8.2). В этом случае в таблице config может находиться запись с информацией об изменениях основной конфигурации относительно конфигурации поставщика, размер которой при выводе (например, pg_dump) превышает 1Гб (составляет порядка 500Мб при хранении).
Можем рекомендовать в качестве обхода:
-- снять конфигурацию с поддержки, после этого проблемы не будет.
При необходимости ее можно будет вновь вернуть.
-- настроить резервное копирование с помощью утилиты  pg_basebackup:

Отдельно:
lxd debian 10 сборка PostgreSQL 11.6 (По Олегу Харину)
lxd debian 10 сборка PostgreSQL 11.7 (По Олегу Харину)


Там есть патч 999-pg_dump_bin.patch. Если его применить, то можно делать pg_dump с бинарным COPY указав в командной строке опцию --binary-copy. Пример если выгружать на самом сервере:
pg_dump --binary-copy -j 4 -h /var/run/postgresql/ -U postgres -Fd uvadrev -f 1C-uvadrev-2019-12-12.backup



Для выгрузки/загрузки используются дополнительные утилиты pg_dumpbinary/pg_restorebinary
pg_dumpbinary

$ lxc delete srv1c
$ lxc copy srv1c-cop srv1c
$ lxc start srv1c
$ lxc exec srv1c -- sudo --user ubuntu --login
$ sudo apt update
$ sudo apt upgrade
$ sudo apt install libdbd-pg-perl
$ git clone https://github.com/lzlabs/pg_dumpbinary.git
$ cd pg_dumpbinary$ perl Makefile.PL
$ make
$ sudo make install
$ perl -MCPAN -e shell install DateTime


$ sudo su postgres
$ psql -l
$ pg_dumpbinary -d dbname postgres backup_postgres


воскресенье, 13 октября 2019 г.

Сравнение pg_dump в файл и в каталог

25.1. Выгрузка в SQL

$ sudo su postgres -c "psql -c \"select pg_size_pretty( pg_database_size('demo'))\""
 pg_size_pretty
----------------
 9195 MB
(1 строка)



$ time sudo su postgres -c "pg_dump -Fc demo"  > ~/demo.dump
real    6m5,898s
user    5m25,457s
sys     0m6,010s


$ sudo mkdir /pg_dump
$ sudo chown -R postgres:postgres /pg_dump
$ time sudo su postgres -c "pg_dump -j 4 -F d -f /pg_dump demo"

real    3m24,548s
user    5m18,820s
sys     0m8,760s


Удалить базу:
$ sudo -u postgres psql -c "DROP DATABASE demo;"
$ sudo su postgres -c "createdb --username postgres -T template0 demo"


Создадим несколько баз:
$ sudo su postgres -c "createdb --username postgres -T template0 demo1"
$ sudo su postgres -c "createdb --username postgres -T template0 demo2"
$ sudo su postgres -c "createdb --username postgres -T template0 demo3"

Восстановим указав резервную копию
$ time sudo su postgres -c "pg_restore -d demo1 /home/user/demo.dump"
real    42m55,742s
user    0m41,076s
sys     0m4,237s

$ time sudo su postgres -c "pg_restore -d  demo2 -j 4 /home/user/demo.dump"
real    21m50,954s
user    0m51,454s
sys     0m10,632s


$ time sudo su postgres -c "pg_restore -d demo3 -j 4   /pg_dump"

real    21m31,491s
user    0m49,814s
sys     0m8,429s


$ sudo su postgres -c "psql -c \"SELECT pg_database.datname, pg_size_pretty(pg_database_size(pg_database.datname)) AS size FROM pg_database;\""
  datname  |  size
-----------+---------
 postgres  | 7079 kB
 demo      | 9195 MB
 template1 | 7079 kB
 template0 | 6969 kB
 demo1     | 9186 MB
 demo2     | 9183 MB
 demo3     | 9182 MB
(7 строк)

$ nano backup_demo.sh

#!/bin/sh -e
#/backup
BASE=demo
#должна быть папка:
DIRPGDUMP=/backup/pg_dump
#должны быть права
#sudo chown -R postgres:postgres /backup
DATEST=`date +"%Y-%m-%d %H-%M-%S"`
sudo su postgres -c "echo '$DATEST ---------------------------------' >> $DIRPGDUMP/pg_dump_$BASE.log"
DATA=`date +"%Y-%m-%d_%H-%M-%S"`
DIR=$DIRPGDUMP/$BASE-$DATA
sudo -u postgres mkdir -p $DIR
sudo su postgres -c "pg_dump -j 4 -F d -f $DIR $BASE" && sudo su postgres -c "cd $DIRPGDUMP; \
     tar -cvzf $BASE-$DATA.tar.gz $BASE-$DATA > /dev/null 2>&1"
if [ $? -ne 0 ]
then
     echo "$BASE-$DATA.tar.gz неудачное завершение"
     sudo su postgres -c "echo '$BASE-$DATA.tar.gz неудачное завершение' >> $DIRPGDUMP/pg_dump_$BASE.log"
else
     echo "$BASE-$DATA.tar.gz удачное завершение"
     sudo su postgres -c "echo '$BASE-$DATA.tar.gz удачное завершение' >> $DIRPGDUMP/pg_dump_$BASE.log"
fi
DATEEND=`date +"%Y-%m-%d %H-%M-%S"`
sudo su postgres -c "echo '$DATEEND ---------------------------------' >> $DIRPGDUMP/pg_dump_$BASE.log"
sudo su postgres -c "echo '-----------------------------------------------------' >> $DIRPGDUMP/pg_dump_$BASE.log"
sudo su postgres -c "rm -rf $DIR"

Сохранить.

$ time sh backup_demo.sh


$ nano backup_all.sh

#!/bin/sh -e
#/backup
#должна быть папка:
BACKUP_DIR=/backup/pg_dump
LOG1=$BACKUP_DIR/backup.log
#должны быть права
#sudo chown -R postgres:postgres /backup
sudo su postgres -c "echo '---------------------------------' >> $LOG1"
#exit
#============================================
# делаем  backup
DB_BASE=`sudo su postgres -c "/usr/bin/psql -qAt -c 'SELECT * FROM pg_database;'" | \
     cut -d"|" -f1 | /bin/grep -v template | /bin/grep -v postgres`
#DB_BASE="demo test" #конкретные базы
#DB_BASE="" #пропустить
echo $DB_BASE
for DB_NAME in $DB_BASE
 do
     DATA=`date +"%Y-%m-%d_%H-%M-%S"`
     DATA1=`date +"%Y-%m-%d %H:%M:%S"`
     # Записываем информацию в лог с секундами
     sudo su postgres -c "echo '$DATA1 Начало backup базы ${DB_NAME}' >> $LOG1"
     echo "$DATA1 Начало backup базы ${DB_NAME}"
     DIR=$BACKUP_DIR/$DB_NAME-$DATA
     sudo su postgres -c "mkdir -p $DIR"
     sudo su postgres -c "pg_dump -j 4 -F d -f $DIR $DB_NAME" && sudo su postgres -c \
     "cd $BACKUP_DIR; tar -cvzf $DB_NAME-$DATA.tar.gz $DB_NAME-$DATA > /dev/null 2>&1"
     if [ $? -ne 0 ]
     then
         DATA1=`date +"%Y-%m-%d %H:%M:%S"`
         echo "$DATA1 Ошибка завершения backup для базы ${DB_NAME}"
         sudo su postgres -c "echo '$DATA1 Ошибка backup для для базы ${DB_NAME}' >>  $LOG1"
         sudo su postgres -c "rm -rf $DIR"
         sudo su postgres -c "rm -rf $DIR.tar.gz"
     else
         DATA1=`date +"%Y-%m-%d %H:%M:%S"`
         echo "$DATA1 Завершение backup для базы ${DB_NAME}"
         sudo su postgres -c "echo '$DATA1 Завершение backup для для базы ${DB_NAME}' >>  $LOG1"
         #sudo su postgres -c "rm -rf $DIR"
         #sudo su postgres -c "rm -rf $DIR.tar.gz"
     fi
     sudo su postgres -c "echo '--------------------------------------------------------------------' >> $LOG1"
done
#============================================


Сохранить.

$ time sh backup_demo.sh

вторник, 19 марта 2019 г.

Резервное копирование базы PostgreSQL pg_dump под windows


Создание пустой базы demo1 с помощью pgAdmin4


Создание базы demo1 запросом sql

 CREATE DATABASE demo1
    WITH
    OWNER = postgres
    TEMPLATE = template0
    ENCODING = 'UTF8'
    LC_COLLATE = 'Russian_Russia.1251'
    LC_CTYPE = 'Russian_Russia.1251'
    TABLESPACE = pg_default
    CONNECTION LIMIT = -1;

psql -U postgres -c "CREATE DATABASE demo1 WITH OWNER = postgres TEMPLATE = template0 ENCODING = 'UTF8' LC_COLLATE = 'Russian_Russia.1251' LC_CTYPE = 'Russian_Russia.1251' TABLESPACE = pg_default CONNECTION LIMIT = -1;"

Восстановление базы demo в предварительно созданную выше базу demo1:

pg_restore.exe --host "localhost" --port "5432" --username "postgres" --dbname "demo1" --verbose "demo2019-03-20_20-03-06.backup"


Восстановление базы demo в туже базу demo с заменой данных
C:\Program Files (x86)\pgAdmin 4\v4\runtime\pg_restore.exe --host "localhost" --port "5432" --username "postgres" --no-password --role "postgres" --dbname "demo" --clean --verbose "E:\\windows\\1\\demo\\DEMO20~1.BAC"

Тоже с использование pgAdmin4



Скрипт для автоматизации резервного копирования pg_dump_demo.bat
(создать для каждой базы добавить в планировщик)

REM СОЗДАНИЕ РЕЗЕРВНОЙ КОПИИ БАЗЫ ДАННЫХ demo POSTGRESQL
REM в папке запуска скрипта в папке %PGDATABASE%
REM для базы отличной от demo  изменить PGDATABASE (следующая строка)
SET PGDATABASE=demo
CLS
ECHO OFF
CHCP 1251
REM Установка переменных окружения
REM SET PGBIN=C:\Program Files\PostgreSQL\11.5-19.1C\bin
SET PGBIN=F:\PostgreSQL\11.5-19.1C\bin
SET PGHOST=localhost
SET PGPORT=5432
SET PGUSER=postgres
SET PGPASSWORD=pass
REM Удаляем в папке PGDATABASE все файл старше DAY
SET DAY=5
REM Смена диска и переход в папку из которой запущен bat-файл
%~d0
CD %~dp0
REM Формирование имени файла резервной копии и файла-отчета
SET DATETIME=%DATE:~6,4%-%DATE:~3,2%-%DATE:~0,2%_%TIME:~0,2%-%TIME:~3,2%-%TIME:~6,2%
SET DUMPFILE=%PGDATABASE%%DATETIME%.backup
SET LOGFILE=%PGDATABASE%%DATETIME%.log
SET DUMPPATH="%PGDATABASE%\%DUMPFILE%"
SET LOGPATH="%PGDATABASE%\%LOGFILE%"
REM Создание резервной копии
IF NOT EXIST %PGDATABASE% MD %PGDATABASE%
REM Удаляем в папке PGDATABASE все файл старше DAY
forfiles /p %PGDATABASE% /m * /s /d -%DAY% /c "cmd /c del @path /q" >nul 2>&1
REM Если батник будет запускаться планировщиком при загрузке
REM для исключения повторных срабатываний в один день
FORFILES /p "%PGDATABASE%" /M *.backup /D 0 >nul 2>&1
if not errorlevel 1 exit
CALL "%PGBIN%\pg_dump.exe" --format=custom --verbose --file=%DUMPPATH% 2>%LOGPATH%
REM Анализ кода завершения
IF NOT %ERRORLEVEL%==0 GOTO Error
GOTO Successfull
REM В случае ошибки удаляется поврежденная резервная копия и делается соответствующая запись в журнале
:Error
DEL %DUMPPATH%
MSG * "Ошибка при создании резервной копии базы данных. Смотрите backup.log."
ECHO %DATETIME% Ошибки при создании резервной копии базы данных %DUMPFILE%. Смотрите отчет %LOGFILE%. >> %PGDATABASE%.log
GOTO End
REM В случае удачного резервного копирования просто делается запись в журнал
:Successfull
ECHO %DATETIME% Успешное создание резервной копии %DUMPFILE% >> %PGDATABASE%.log
GOTO End
:End 

Вообще хорошо перед pg_dump
Остановить сервер 1С
"C:\Program Files\1cv8\8.3.13.1690\bin\ragent.exe" -stop
После pg_dump
"C:\Program Files\1cv8\8.3.13.1690\bin\ragent.exe" -start






понедельник, 18 февраля 2019 г.

Скрипт бэкапа postgres pg_dump


Скрипт бэкапа postgres
Шифрование файлов backup с использованием gpg и открытого публичного ключа

Импорт открытого ключа:
$ gpg --import pubkey.txt
 
Импорт закрытого ключа:
$ gpg --allow-secret-key-import --import privkey.txt

$ gpg --edit-key mail@backup.com
gpg (GnuPG) 1.4.20; Copyright (C) 2015 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Закрытый ключ доступен.

pub  4096R/9BD0BCD3  создан: 2019-02-17  годен до: никогда       применимость: SC
                     доверие: неизвестной действительность: неизвестной
sub  4096R/4452E03E  создан: 2019-02-17  годен до: никогда       применимость: E
[неизвестно] (1). backup <mail@backup.com>

gpg> trust Enter;
pub  4096R/9BD0BCD3  создан: 2019-02-17  годен до: никогда       применимость: SC
                     доверие: неизвестной действительность: неизвестной
sub  4096R/4452E03E  создан: 2019-02-17  годен до: никогда       применимость: E
[неизвестно] (1). backup <mail@backup.com>

Укажите, насколько Вы доверяете данному пользователю в вопросах проверки
достоверности ключей других пользователей (проверяет паспорт,
сверяет отпечатки ключей из разных источников и т.п.)

  1 = Не знаю или не буду отвечать
  2 = НЕ доверяю
  3 = Доверяю ограниченно
  4 = Полностью доверяю
  5 = Абсолютно доверяю
  m = вернуться в главное меню

Ваше решение? 5
Вы действительно хотите сделать этот ключ абсолютно доверенным? (y/N) y

pub  4096R/9BD0BCD3  создан: 2019-02-17  годен до: никогда       применимость: SC
                     доверие: абсолютное действительность: неизвестной
sub  4096R/4452E03E  создан: 2019-02-17  годен до: никогда       применимость: E
[неизвестно] (1). backup <mail@backup.com>
Учтите, что показанная действительность ключа может быть неверной,
пока Вы не перезапустите программу.

gpg> q
 

$ mkdir -p /home/user/backup/yandex
$ nano backup-sql.sh
Вставить текст ниже:

#!/bin/sh
# crontab -e
# mkdir -p /home/user/backup/yandex
set -e

BACKUP_DIR="/home/user/backup"
DIR_YANDEX="/home/user/backup/yandex"
echo "====================================================================" > $BACKUP_DIR/backup.log
# останавливаем сервер 1С
echo "останавливаем сервер 1С"
sudo systemctl stop  srv1cv83.service
echo "состояние сервера 1С"  >> $BACKUP_DIR/backup.log
sudo systemctl status  srv1cv83.service | grep 'Active:' >> $BACKUP_DIR/backup.log
echo "--------------------------------------------------------------------" >> $BACKUP_DIR/backup.log
# Устанавливаем дату
DATA=`date +"%Y-%m-%d_%H-%M-%S"`
DATA_NAME=`date +"%Y-%m-%d_%H-%M-%S"`
echo "$DATA Size database file: " >> $BACKUP_DIR/backup.log
sudo du -h -s /var/lib/postgresql/9.6/main/base  >> $BACKUP_DIR/backup.log
echo "--------------------------------------------------------------------" >> $BACKUP_DIR/backup.log
# делаем  backup
DB_BASE=`sudo /bin/su postgres -c "/usr/bin/psql -qAt -c 'SELECT * FROM pg_database;'" | \
     cut -d"|" -f1 | /bin/grep -v template | /bin/grep -v postgres`
#DB_BASE="demo test" #конкретные базы
#DB_BASE="" #пропустить
echo $DB_BASE
for DB_NAME in $DB_BASE
 do
     DATA=`date +"%Y-%m-%d_%H-%M-%S"`
     # Записываем информацию в лог с секундами
     echo "$DATA Начало backup базы ${DB_NAME}" >> $BACKUP_DIR/backup.log
     # Бэкапим базу данных demo и сразу сжимаем
     echo "$DATA Начало backup базы ${DB_NAME}"
     sudo /bin/su postgres -c "pg_dump -Fc ${DB_NAME}"  > $BACKUP_DIR/${DB_NAME}_$DATA_NAME.dump
     DATA=`date +"%Y-%m-%d_%H-%M-%S"`
     if [ $? -ne 0 ]
     then
         echo "$DATA Ошибка завершения backup для базы ${DB_NAME}"
         echo "$DATA Ошибка завершения backup для для базы ${DB_NAME}" >> $BACKUP_DIR/backup.log
         exit
     else
          echo "$DATA Успешное завершение backup для базы ${DB_NAME}"
          echo "$DATA Успешное завершение backup для базы ${DB_NAME}" >> $BACKUP_DIR/backup.log
     fi
     echo "--------------------------------------------------------------------" >> $BACKUP_DIR/backup.log
done


# шифруем и отправляем на ftp
DB_BASE=`sudo /bin/su postgres -c "/usr/bin/psql -qAt -c 'SELECT * FROM pg_database;'" | \
     cut -d"|" -f1 | /bin/grep -v template | /bin/grep -v postgres`
#DB_BASE="demo test" #конкретные базы
#DB_BASE="" #пропустить
echo $DB_BASE
for DB_NAME in $DB_BASE
 do
     DATA=`date +"%Y-%m-%d_%H-%M-%S"`
     # Записываем информацию в лог с секундами
     echo "$DATA Копируем ftp backup базы ${DB_NAME}" >> $BACKUP_DIR/backup.log
     # Бэкапим базу данных demo и сразу сжимаем
     echo "$DATA Копируем ftp backup базы ${DB_NAME}"
     #echo $?
     sudo /bin/su user -c "gpg -e -r mail@backup.com --cipher-algo  AES256 \
          -o $DIR_YANDEX/${DB_NAME}_$DATA_NAME.dump.gpg $BACKUP_DIR/${DB_NAME}_$DATA_NAME.dump" \
     && curl --upload-file $DIR_YANDEX/${DB_NAME}_$DATA_NAME.dump.gpg ftp://test:test@192.168.0.5 \
     && sudo /bin/su user -c "rm $DIR_YANDEX/${DB_NAME}_$DATA_NAME.dump.gpg"

     DATA=`date +"%Y-%m-%d_%H-%M-%S"`
     if [ $? -ne 0 ]
     then
         echo "$DATA Ошибка копирования ftp backup для базы ${DB_NAME}"
         echo "$DATA Ошибка копирования ftp backup для для базы ${DB_NAME}" >> $BACKUP_DIR/backup.log
         exit
     else
          echo "$DATA Успешное завершение копирования ftp backup для базы ${DB_NAME}"
          echo "$DATA Успешное завершение копирования ftp backup для базы ${DB_NAME}" >> $BACKUP_DIR/backup.log
     fi
     echo "--------------------------------------------------------------------" >> $BACKUP_DIR/backup.log
done

# делаем  vacuum
DB_BASE=`sudo /bin/su postgres -c "/usr/bin/psql -qAt -c 'SELECT * FROM pg_database;'" | \
     cut -d"|" -f1 | /bin/grep -v template | /bin/grep -v postgres`
#DB_BASE="demo test" #конкретные базы
#DB_BASE="" #пропустить
for DB_NAME in $DB_BASE
 do
     DATA=`date +"%Y-%m-%d_%H-%M-%S"`
     # Записываем информацию в лог с секундами
     echo "$DATA Начало vacuum базы ${DB_NAME}" >> $BACKUP_DIR/backup.log
     # Бэкапим базу данных demo и сразу сжимаем
     echo "$DATA Начало vacuum базы ${DB_NAME}"
     sudo /bin/su postgres -c "/usr/bin/vacuumdb --analyze --full --quiet \
         --username postgres --dbname=${DB_NAME}"
     #echo $?
     DATA=`date +"%Y-%m-%d_%H-%M-%S"`
     if [ $? -ne 0 ]
     then
         echo "$DATA Ошибка завершения vacuum для базы ${DB_NAME}"
         echo "$DATA Ошибка завершения vacuum для базы ${DB_NAME}" >> $BACKUP_DIR/backup.log
         exit
     else
          echo "$DATA Успешное завершение vacuum для базы ${DB_NAME}"
          echo "$DATA Успешное завершение vacuum для базы ${DB_NAME}" >> $BACKUP_DIR/backup.log
     fi
     echo "--------------------------------------------------------------------" >> $BACKUP_DIR/backup.log
done

# запускаем сервер 1С
echo "Запускаем сервер 1С"
sudo systemctl start  srv1cv83.service
echo "Состояние сервера 1С"  >> $BACKUP_DIR/backup.log
sudo systemctl status  srv1cv83.service | grep 'Active:' >> $BACKUP_DIR/backup.log
echo "--------------------------------------------------------------------" >> $BACKUP_DIR/backup.log
echo "Закончено"

# посылаем сообщение
sleep 2
#echo "backup" | mutt -s "backup"  f2@vt.com -a $BACKUP_DIR/backup.log

Сохранить.

Однократный запуск:
$ sudo sh backup-sql.sh

Запуск по расписанию:

$ sudo -i
# crontab -e
Добавить в конец (сработает в 18:01):
# каждые день в 18.00


0 18 * * * sh /home/user/backup-sql.sh
Сохранить.

Смотреть задания:
# crontab -l

Проверка backup

Посмотрим архивные копии:
$ ls /home/user/backup
backup.log  demo_2019-02-02_17-42  demo_2019-02-02_18-00

#$ sudo /bin/su postgres -c "pg_dump -Fc demo"  > /home/user/test/backup/demo

Создадим тестовую базу:
$ sudo /bin/su postgres -c "createdb --username postgres -T template0 demotest"


Расшифровать: 
$ gpg -d -o demo_2019-02-18_16-35-06.dump.gz demo_2019-02-18_16-35-06.dump.gz.gpg


$ gunzip demo_2019-02-18_16-35-06.dump.gz

Восстановим указав резервную копию
$ sudo /bin/su postgres -c "pg_restore -d demotest /home/user/backup/demo_2019-02-18_16-35-06.dump"


к ней можно подключиться из 1С

Посмотреть список баз:
$ sudo /bin/su postgres -c "psql -l"

Размер базы demo 
$ sudo su -c "psql -d demo -c \"select pg_size_pretty( pg_database_size('demo'))\"" postgres


Размер базы demotest 
$ sudo su -c "psql -d demo -c \"select pg_size_pretty( pg_database_size('demotest'))\"" postgres


Размер базы demo
$ sudo su -c "psql -c \"select pg_size_pretty( pg_database_size('demo'))\"" postgres 

Размер базы demotest
$ sudo su -c "psql -c \"select pg_size_pretty( pg_database_size('demotest'))\"" postgres 


Удаление базы demotest
$ sudo /bin/su postgres -c "dropdb demotest"

Посмотреть список баз:
$ sudo /bin/su postgres -c "psql -l"