DebetPlusv12, Fedora 12+, PostgreSQL 8.4 і архівування даних

Вопросы по работе подсистемы "Администрирование" в "Дебет Плюс V12"

DebetPlusv12, Fedora 12+, PostgreSQL 8.4 і архівування даних

Сообщение Paranoja » Пн апр 11, 2011 1:22 pm

Пропоную shell-скрипт для автоматичного створення архівних копій бази даних та даних організацій:
Код: Выделить всё
#!/bin/bash

# Шлях до каталогу з архівами
DUMP_BASEDIR=/home/backup

# Шлях до конфігурації DebetPlus
PATH_JDEBET=/opt/JDebet

# Шлях до даних організації
PATH_ORGDATA=/opt/orgdata

# Назва бази даних DebetPlus
DPBASE_NAME=dpbase

# Ім'я суперкористувача PostgreSQL.
# Користувач також має існувати в системі і мати право входу.
# У цьому випадку я використав postgres оскільки він є суперкористувачем для всієї БД.
# Рекомендовано, щоб користувач був з встановленим паролем.
PGADMIN=postgres

TIMESTAMP=$(date +%Y-%m-%d_%H_%M)
DATESTAMP=$(date +%Y-%m-%d)

FILENAME_CURRENT=$DUMP_BASEDIR/$DATESTAMP

FILENAME_DPBASE=$FILENAME_CURRENT/"$DPBASE_NAME"_"$TIMESTAMP".sql.tar
FILENAME_ORGDATA=$FILENAME_CURRENT/"orgdata_$TIMESTAMP".tar

if [ ! -d "$FILENAME_CURRENT" ]; then
    mkdir "$FILENAME_CURRENT"
fi

DEBET_USERS=$(grep -oEi "<DBTEMP\s+value=(\"|\')\w+\1\s*/>" "${PATH_JDEBET}/administration.xml" | sed -re "s|^<DBTEMP\s+value=\"(.+?)\"\s*/>$|\1|g" | sort | uniq)

exec 4>&1

CLEAN_RESULT=$( {
for DP_USER in $DEBET_USERS; do
   echo "Cleaning temporary data for user ${DP_USER}."
   USER_VIEWS=$(su -l $PGADMIN -c "psql -U$PGADMIN -tAc\"SELECT schemaname || '.' || viewname FROM pg_views WHERE schemaname ~* '${DP_USER}' ORDER BY viewname\" $DPBASE_NAME")
   USER_TABLES=$(su -l $PGADMIN -c "psql -U$PGADMIN -tAc\" SELECT schemaname || '.' || tablename FROM pg_tables WHERE schemaname ~* '${DP_USER}' ORDER BY tablename\" $DPBASE_NAME")
   for USER_VIEW in $USER_VIEWS; do
      su -l $PGADMIN -c "psql -U$PGADMIN -a -c\"DROP VIEW IF EXISTS ${USER_VIEW} CASCADE\" $DPBASE_NAME"
   done
   for USER_TABLE in $USER_TABLES; do
      su -l $PGADMIN -c "psql -U$PGADMIN -a -c\"DROP TABLE IF EXISTS ${USER_TABLE} CASCADE\" $DPBASE_NAME"
   done
   echo "Done."
done
} 2>&1 1>&4 )

exec 4>&-

if [ ! -z "$CLEAN_RESULT" ]; then
    echo "ERROR!"
    echo "Error occured while cleaning temporary tables: $CLEAN_RESULT"
    exit 1
fi

echo -n "Dumping database $DPBASE_NAME... "
su -l $PGADMIN -c "pg_dump --format=tar $DPBASE_NAME" > "$FILENAME_DPBASE"
DUMP_RESULT=$(su -l $PGADMIN -c "pg_dump --format=tar $DPBASE_NAME" 2>&1 1>"$FILENAME_DPBASE")

if [ ! -z "$DUMP_RESULT" ]; then
    echo "ERROR!"
    echo "Error occured on dump. pg_dump returns: $DUMP_RESULT"
    exit 2
fi
echo "Done."

echo -n "Archivating... "
tar -cf "$FILENAME_ORGDATA" "$PATH_ORGDATA"
bzip2 -z9 "$FILENAME_DPBASE" "$FILENAME_ORGDATA"
echo "Done."

echo "Dump successfuly completed.
Created dump file: '${FILENAME_DPBASE}.bz2', '${FILENAME_ORGDATA}.bz2'."

echo -n "Analyzing ${DPBASE_NAME}... "
su -l $PGADMIN -c "psql -U$PGADMIN -c\"VACUUM FULL ANALYZE\" $DPBASE_NAME"
echo "Done."



Скрипт очищає тимчасові таблиці користувачів DebetPlus, після цього - створює індексований дамп БД, створює архів даних організації, стискає дамп і архів, після чого виконує VACUUM та аналізує існуючу БД для покращення швидкодії.

Скрипт розрахований на виконання оболонкою bash на сервері без встановленого користувацького середовища DebetPlus.

Скрипт можна викликати вручну, а також повісити на cron для виконання, наприклад, щоденно о 2-й ночі.

Приймаю будь-які запитання, зауваження, рекомендації і пропозиції.
Аватара пользователя
Paranoja
Уверенный пользователь
Уверенный пользователь
 
Сообщения: 10
Зарегистрирован: Чт июн 17, 2010 10:22 pm

Re: DebetPlusv12, Fedora 12+, PostgreSQL 8.4 і архівування д

Сообщение Дарья » Чт апр 14, 2011 5:09 pm

Моя мечта потихоньку сбывается: пользователи не только пользуются, но и делятся своими соображениями и наработками с другими, помогают друг другу.
Спасибо!!!!

PS: Или у меня "паранойя", или ваша аватарка такая же "мило-лупоглазая", как и моя :D
Аватара пользователя
Дарья
Консультант
 
Сообщения: 1774
Зарегистрирован: Пн июл 28, 2008 9:40 am

Re: DebetPlusv12, Fedora 12+, PostgreSQL 8.4 і архівування д

Сообщение Nik » Сб авг 27, 2011 5:25 pm

Дарья писал(а):Моя мечта потихоньку сбывается: пользователи не только пользуются, но и делятся своими соображениями и наработками с другими, помогают друг другу. Спасибо!!!!

Дарья, не могу разделить Вашу радость, поскольку мы находимся в форуме пользователей, а не разработчиков Дебета. То, что пользователи, вместо того, что бы делиться своими соображениями о способах учета в Дебете, занимаются его разработкой - это не здорово, а УЖАСНО!
Будем надеяться, что в скором будущем, появятся бухгалтера, которые начнут радоваться безошибочной работе Дебета. Искренне Вам (и себе) этого желаю!
Предложенный "Паранойя" код (до выхода версии 12.32) включен в Дебет 12.32 и теперь архивация и сохранение настроек корректно осуществляется средствами Дебета?
Навіть після апокаліпсису буде постапокаліпсис (життя продовжиться)! :-)
Аватара пользователя
Nik
Почетный пользователь
Почетный пользователь
 
Сообщения: 206
Зарегистрирован: Вс май 11, 2008 4:16 am

Re: DebetPlusv12, Fedora 12+, PostgreSQL 8.4 і архівування д

Сообщение Дарья » Чт сен 01, 2011 12:44 pm

Архивация и восстановление БД postgresql средствами Дебета осуществлялась корректно и до 32 версии, если это не получается у Вас, вопрос стоит в настройках postgresql.
Аватара пользователя
Дарья
Консультант
 
Сообщения: 1774
Зарегистрирован: Пн июл 28, 2008 9:40 am

Re: DebetPlusv12, Fedora 12+, PostgreSQL 8.4 і архівування д

Сообщение Paranoja » Вт ноя 01, 2011 2:03 pm

2Nik: пропустив ваше повідомлення.
Nik писал(а):
Дарья писал(а):Моя мечта потихоньку сбывается: пользователи не только пользуются, но и делятся своими соображениями и наработками с другими, помогают друг другу. Спасибо!!!!

Дарья, не могу разделить Вашу радость, поскольку мы находимся в форуме пользователей, а не разработчиков Дебета. То, что пользователи, вместо того, что бы делиться своими соображениями о способах учета в Дебете, занимаются его разработкой - это не здорово, а УЖАСНО!
Будем надеяться, что в скором будущем, появятся бухгалтера, которые начнут радоваться безошибочной работе Дебета. Искренне Вам (и себе) этого желаю!
Предложенный "Паранойя" код (до выхода версии 12.32) включен в Дебет 12.32 и теперь архивация и сохранение настроек корректно осуществляется средствами Дебета?

Не можу з вами погодитись: ми знаходимось на форумі, присвяченому програмному продукту, і його (форуму) ціль - забезпечити можливість спілкування користувачів Дебета (як адміністраторів, так і бухгалтерів) і його розробників, з чим форум успішно справляється. Окрім того слід розрізняти адміністраторів і бухгалтерів - не завжди бухгалтер є адміністратором і навпаки. Я поділився цим скриптом на цьому форумі з іншими адміністраторами Дебета, а не з бухгалтерами.
Наскільки мені було відомо на момент розробки цього скрипта (версія Дебета - 11.9.95) - потрібного мені функціоналу, а саме можливості створення архіву за допомогою планувальника cron на стороні headless-сервера, не існувало.

Щодо включення цього скрипта у базовий комплект Дебета: цей скрипт був розроблений виключно для клієнт-серверної конфігурації Дебета із headless-сервером на Linux (бажано Fedora, але адміністратору зі середніми знаннями bash чи shell не важко буде його змінити під свій дистрибутив) та сервером баз даних PostgreSQL, а оскільки Дебет передбачає роботу з різними серверами баз даних на широкому спектрі платформ, він не дуже підходить для включення в загальний комплект. Також раджу вам не плутати тепле з м'якеньким - архівування і збереження налаштувань засобами Дебета у версії 12.0.32 було коректним, як і у більш ранніх версіях, а цей скрипт передбачає архівування всіх даних (до речі Дебет з цим теж добре справляється) без участі самого Дебета.

2Дарья: Яка зараз ситуація з архівуванням даних в останній версії (12.0.39)? Наскільки я пам'ятаю, раніше історія змін документів зберігалася окремо від БД у xml-файлах, але у якійсь із версій Дебета з'явилась можливість зберігати її у самій БД. Де я можу про це почитати?
Аватара пользователя
Paranoja
Уверенный пользователь
Уверенный пользователь
 
Сообщения: 10
Зарегистрирован: Чт июн 17, 2010 10:22 pm

Re: DebetPlusv12, Fedora 12+, PostgreSQL 8.4 і архівування д

Сообщение Дарья » Ср ноя 02, 2011 3:54 pm

Все верно. Сейчас есть два варианта: хранить настройки и историю в xml или хранить их в базе. Все зависит от одного единственного параметра при настройке соединения с базой данных. Эта тема немного описана в инструкции про создание базы по шаблону, смотрите самую последнюю часть.
Аватара пользователя
Дарья
Консультант
 
Сообщения: 1774
Зарегистрирован: Пн июл 28, 2008 9:40 am


Вернуться в Администрирование

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

cron