PostgreSQL создает пустой 20-байтовый сжатый файл резервной копии - PullRequest
0 голосов
/ 02 октября 2018

Мы управляем несколькими средами Java + PostgreSQL в Jelastic.Наш провайдер PaaS использует платформу Jelastic версии 5.4.

В каждой среде у нас есть задача cron, которая вызывает скрипт оболочки для создания ежедневной резервной копии базы данных gzipped через pg_dump для PostgreSQL 9.4.Этот сценарий был запущен в течение многих лет, буквально, но недавно он перестал работать.Сценарий выглядит так:

#!/bin/bash
DATE=`date +"%Y-%m-%d_%H-%M-%S"`
DB_NAME="my-backup"
FILE="$DB_NAME-$DATE.backup.gz"
BASE_DIR="/var/lib/jelastic/backup"
BACKUP_FILE_PATH=$BASE_DIR/$FILE
pg_dump --verbose --format=custom $DB_NAME | gzip > $BACKUP_FILE_PATH

Единственное, что изменилось в последнее время, связано с увеличенным значением shared_buffers в postgresql.conf, которое мы сделали на основе инструкций, предоставленных Jelastic.Мы попытались отменить изменение на shared_buffers, чтобы вернуть его к значению по умолчанию для сред Jelastic без положительного влияния на резервные копии.

Теперь сгенерированный файл резервной копии (gzipped) имеет длину всего 20 байт.и весь процесс резервного копирования занимает гораздо меньше времени, чем мы ожидаем, поскольку наша база данных большая (более 1,5 ГБ) и содержит BLOB-объекты.Файл, извлеченный из GZIP, пуст.

В подробном выводе pg_dump нет ничего необычного:

pg_dump: reading schemas
pg_dump: reading user-defined tables
pg_dump: reading extensions
pg_dump: reading user-defined functions
pg_dump: reading user-defined types
pg_dump: reading procedural languages
pg_dump: reading user-defined aggregate functions
pg_dump: reading user-defined operators
pg_dump: reading user-defined operator classes
pg_dump: reading user-defined operator families
pg_dump: reading user-defined text search parsers
pg_dump: reading user-defined text search templates
pg_dump: reading user-defined text search dictionaries
pg_dump: reading user-defined text search configurations
pg_dump: reading user-defined foreign-data wrappers
pg_dump: reading user-defined foreign servers
pg_dump: reading default privileges
pg_dump: reading user-defined collations
pg_dump: reading user-defined conversions
pg_dump: reading type casts
pg_dump: reading table inheritance information
pg_dump: reading event triggers
pg_dump: finding extension members
pg_dump: finding inheritance relationships
pg_dump: reading column info for interesting tables
pg_dump: finding the columns and types of table "databasechangeloglock"
pg_dump: finding the columns and types of table "databasechangelog"
pg_dump: finding the columns and types of table "compania"
pg_dump: finding default expressions of table "compania"
pg_dump: finding the columns and types of table "comprobante"
pg_dump: finding default expressions of table "comprobante"
pg_dump: finding the columns and types of table "estado_comprobante"
pg_dump: finding default expressions of table "estado_comprobante"
pg_dump: finding the columns and types of table "usuario"
pg_dump: finding default expressions of table "usuario"
pg_dump: finding the columns and types of table "clave_contingencia"
pg_dump: finding default expressions of table "clave_contingencia"
pg_dump: finding the columns and types of table "latido_integrador"
pg_dump: finding default expressions of table "latido_integrador"
pg_dump: finding the columns and types of table "comprobante_importado"
pg_dump: finding default expressions of table "comprobante_importado"
pg_dump: finding the columns and types of table "estado_comprobante_importado"
pg_dump: finding default expressions of table "estado_comprobante_importado"
pg_dump: finding the columns and types of table "tarea_comprobante_importado"
pg_dump: finding default expressions of table "tarea_comprobante_importado"
pg_dump: finding the columns and types of table "usuario_compania"
pg_dump: finding default expressions of table "usuario_compania"
pg_dump: flagging inherited columns in subtables
pg_dump: reading indexes
pg_dump: reading indexes for table "databasechangeloglock"
pg_dump: reading indexes for table "compania"
pg_dump: reading indexes for table "comprobante"
pg_dump: reading indexes for table "estado_comprobante"
pg_dump: reading indexes for table "usuario"
pg_dump: reading indexes for table "clave_contingencia"
pg_dump: reading indexes for table "latido_integrador"
pg_dump: reading indexes for table "comprobante_importado"
pg_dump: reading indexes for table "estado_comprobante_importado"
pg_dump: reading indexes for table "tarea_comprobante_importado"
pg_dump: reading indexes for table "usuario_compania"
pg_dump: reading constraints
pg_dump: reading foreign key constraints for table "compania"
pg_dump: reading foreign key constraints for table "comprobante"
pg_dump: reading foreign key constraints for table "estado_comprobante"
pg_dump: reading foreign key constraints for table "usuario"
pg_dump: reading foreign key constraints for table "clave_contingencia"
pg_dump: reading foreign key constraints for table "latido_integrador"
pg_dump: reading foreign key constraints for table "comprobante_importado"
pg_dump: reading foreign key constraints for table "estado_comprobante_importado"
pg_dump: reading foreign key constraints for table "tarea_comprobante_importado"
pg_dump: reading foreign key constraints for table "usuario_compania"
pg_dump: reading triggers
pg_dump: reading triggers for table "compania"
pg_dump: reading triggers for table "comprobante"
pg_dump: reading triggers for table "estado_comprobante"
pg_dump: reading triggers for table "usuario"
pg_dump: reading triggers for table "clave_contingencia"
pg_dump: reading triggers for table "latido_integrador"
pg_dump: reading triggers for table "comprobante_importado"
pg_dump: reading triggers for table "estado_comprobante_importado"
pg_dump: reading triggers for table "tarea_comprobante_importado"
pg_dump: reading triggers for table "usuario_compania"
pg_dump: reading rewrite rules
pg_dump: reading large objects
pg_dump: reading dependency data
pg_dump: saving encoding = UTF8
pg_dump: saving standard_conforming_strings = on
pg_dump: saving database definition

Кроме того, журналы PostgreSQL 9.4, к которым можно получить доступ в Jelastic showнет соответствующих сообщений, которые могли бы дать нам подсказку о том, что может происходить.

В попытке «исправить» это мы выполнили процедуры обслуживания PostgreSQL, включая vacuumlo и vacuumdb --full, но безрезультатно.,Для файла резервной копии достаточно свободного места, поэтому это не должно быть причиной проблемы.

Есть идеи, почему это может происходить?Что мы должны искать и где?Поскольку это критическая проблема, мы будем благодарны за любые указания.

1 Ответ

0 голосов
/ 04 октября 2018

Первое, что вам нужно сделать, это изменить файл pg_hba.conf (разрешить соединения без пароля через сокеты):

CT-42366 ~# cat ./backup.sh 
local    all all                  trust
host     all all     127.0.0.1/32 ident
host     all all     ::1/128      ident
host     all all     0.0.0.0/0    md5

После этого перезапустить службу "postgresql":

service postgresql restart

Тогда, если ваш логин в базе данных отличается от "root", используйте этот модифицированный скрипт:

CT-42366 ~# cat ./backup.sh 
#!/bin/bash
DATE=date +"%Y-%m-%d_%H-%M-%S"
DB_NAME="db_name"
LOGIN="db_login"
FILE="$DB_NAME-$DATE.backup.gz"
BASE_DIR="/var/lib/jelastic/backup"
BACKUP_FILE_PATH=$BASE_DIR/$FILE
pg_dump --user=$LOGIN --format=custom --dbname=$DB_NAME | gzip > 
$BACKUP_FILE_PATH

Мы надеемся, что это поможет вам решить вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...