Как сделать кнопку резервного копирования и восстановления?

50 views
Skip to first unread message

Andrey Svininykh

unread,
Feb 6, 2012, 5:01:10 AM2/6/12
to openbravoposru
Добрый день, друзья.

Вот и мне нужна помощь.

Может у кого есть решение, как добавить кнопку для резервного
копирования и восстановления базы данных Openbravo POS. Самую кнопку
нарисовать могу :) А вот с вызовами для копирования и восстановления
нужна помощь. Жду любых предложений, которые позволят это сделать.
Само собой если всё получится, результат внесём в наш проект.

С уважением,
Андрей Свининых

Gennady Kovalev

unread,
Feb 6, 2012, 5:17:32 AM2/6/12
to openbra...@googlegroups.com
В Пнд, 06/02/2012 в 02:01 -0800, Andrey Svininykh пишет:

А для чего вообще нужна такая кнопка? Резервное копирование традиционно
делается сторонними средствами, причём копировать надо именно данные
СУБД. Для разных СУБД и для разных случаем это делается по разному,
чтобы не нарушить целостность и обеспечить бесперебойность.

Для семейства unix-like систем самое мощное средство - bacula, которую
надо затачивать под конкретную СУБД.


Andrey Svininykh

unread,
Feb 6, 2012, 5:47:57 AM2/6/12
to openbravoposru
Вот как раз данные СУБД и надо скопировать в файл в SQL формате, а
затем восстановить. А кнопка потому что это самый простой и наглядный
вариант для пользователя или администратора(сейчас в любой CMS такое
есть) с машиной на которой и сервер СУБД и POS, который не будет(или
не может) разворачивать систему резервного копирования.

Gennady Kovalev

unread,
Feb 6, 2012, 6:05:21 AM2/6/12
to openbra...@googlegroups.com
06.02.2012 14:47, Andrey Svininykh пишет:

> Вот как раз данные СУБД и надо скопировать в файл в SQL формате, а
> затем восстановить. А кнопка потому что это самый простой и наглядный
> вариант для пользователя или администратора(сейчас в любой CMS такое
> есть) с машиной на которой и сервер СУБД и POS, который не будет(или
> не может) разворачивать систему резервного копирования.

Ну для каждой СУБД это свои собственные команды. Для PostgreSQL,
например, это команда pg_dump в шеле.

Для MySQL - mysqldump.

DMG

unread,
Feb 6, 2012, 6:20:13 AM2/6/12
to openbravoposru

Sergiu Costas

unread,
Feb 6, 2012, 6:26:59 AM2/6/12
to openbra...@googlegroups.com
как зделать Back-up, давним давно есть такое решение на форумах, не вопрос. А зделать кнопку Восстонавить - аж заинтересовал меня тоже )))

Артур Акчурин

unread,
Feb 6, 2012, 8:20:19 AM2/6/12
to openbra...@googlegroups.com
Процедура бэкап/рестор сильно зависит от субд. Каждый сервер СУБД
делает это по своему. Уж если перечислять команды то в Firebird это
gbak. Универсальных простых решений по моему не существует. Самое
простое решение это сделать список команд бэкап и рестор для каждого
сервера, а затем вызывать нужную команду в зависимости от того, какая
субд используется, ну и соотвествующую инфраструктуру написать. А
вообще, по большому счету ни к чему это всё по моему. Т.к. обычно
делают некий файл сценария (батник в винде или sh скрипт в линуксе) в
котором описана процедура бэкапа. Далее этот сценарий запускают с
помощью каких нибудь шедулеров.

06.02.12, Sergiu Costas<sergiu...@gmail.com> написал(а):

Артур Акчурин

unread,
Feb 6, 2012, 8:24:29 AM2/6/12
to openbra...@googlegroups.com
Это если субд автоматизированных средств не предоставляет

06.02.12, Артур Акчурин<akar...@gmail.com> написал(а):

Gennady Kovalev

unread,
Feb 7, 2012, 3:08:08 AM2/7/12
to openbra...@googlegroups.com
> вариант для пользователя или администратора(сейчас в любой CMS такое
> есть) с машиной на которой и сервер СУБД и POS, который не будет(или

Желание сделать backup внутри приложение - это результат не
продумманости разграничения работ системного администратора, мэнтейнера
и пользователя.

Задача системного администратора обеспечить запускаемость софта, его
настройку и бесперебойную работу. Эти задачи невозможно выполнить, не
зная операционной системы. То есть настройка бэкапа - это очень грубо
можно считать частью настройки операционной системы. Потому, что кроме
самих данных часто надо бэкапить много чего.

В общем надо чётко разделить настройку компьютера и настройку POS.
Почему настройка ip-адреса не внутри POS? Консоль для диагностирования?
Учётные записи входа в систему? Ну и т.д.

Что касается CMS систем, то внутрь встраивают кучу всего из-за
ограничений виртуального хостинга. Там часто кроме доступа по FTP нет
других возможностей. В результате через web-интерфейс делают доступ и к
администрированию БД, и к backup, и иногда шел, чтобы проверить
процессы, память и т.д. Это вынужденный шаг, а не крутая фича.

Максим Захаров

unread,
Feb 7, 2012, 3:56:41 AM2/7/12
to openbra...@googlegroups.com
имхо, бэкап БД в случае использования удаленного сервера БД из интерфейса POS не очень интересная полезность, ибо гораздо разумнее использовать для этого утилиты непосредственно для БД и непосредственно на сервере либо через phpMyAdmin|MySQLAdministrator/etc.
полезной кнопкой было бы возможно сделать некое подобие экспорта/импорта локальных настроек POS, когда например есть сначала один локальный терминал, он в процессе работы постепенно дорабатывается, модернизируется и появляется вдруг (естественно, сверхсрочно, мегаважно и внезапно) необходимость еще вчера воткнуть второй такой же терминал. тут было бы полезно некий "однокнопочный" экспорт всех настроек и изменений иметь, а на новом терминале их быстро загружать. опять же, на мой взгляд. это конечно наверное (могу ошибаться) если копированием не возможно распространить POS.

Andrey Svininykh

unread,
Feb 8, 2012, 1:22:11 AM2/8/12
to openbravoposru
В общем похоже есть один путь, это сделать скрипты под ОС и СУБД,
которые и вызывать по кнопке. В скрипты можно добавить и сохранение
локальных настроек и вообще всё что угодно.

Сам вопрос родился из-за интереса к возможностям JDBC. Есть ли
возможность использовать

SELECT * INTO OUTFILE $FILE_NAME{} FROM $TABLE_NAME{}

для сохранения данных

LOAD DATA INFILE $FILE_NAME{} INTO TABLE $TABLE_NAME{}

для восстановления

Сам попробовал не получилось, а в интете, что-то ответа не найду.

Мне такая возможность нужна для обслуживания удалённых точек(больше
500 км от областного центра), интернета у них нет и к ним не
наездишься(так как дорог к ним тоже практически нет). Так что
единственный вариант посмотреть, что у них происходить в БД и если что
поправить, это выгрузить данные на флешку и передать с оказией.

On 6 фев, 19:20, Артур Акчурин <akart...@gmail.com> wrote:
> Процедура бэкап/рестор сильно зависит от субд. Каждый сервер СУБД
> делает это по своему. Уж если перечислять команды то в Firebird это
> gbak. Универсальных простых решений по моему не существует. Самое
> простое решение это сделать список команд бэкап и рестор для каждого
> сервера, а затем вызывать нужную команду в зависимости от того, какая
> субд используется, ну и соотвествующую инфраструктуру написать. А
> вообще, по большому счету ни к чему это всё по моему. Т.к. обычно
> делают некий файл сценария (батник в винде или sh скрипт в линуксе) в
> котором описана процедура бэкапа. Далее этот сценарий запускают с
> помощью каких нибудь шедулеров.
>

> 06.02.12, Sergiu Costas<sergiu.cos...@gmail.com> написал(а):

ReMaks

unread,
Feb 8, 2012, 2:12:01 AM2/8/12
to openbra...@googlegroups.com
выскажу свое мнение (уже озвученное)

не надо внутрь мелкой проги пихать не присущий ей функционал (бекап-ресторе)

ибо у каждой бд - свои средства.
у каждой ОС - свои средства.

кнопку сделать можно,
но функция этой кнопки - "звонок-письмо админу, для бекапа-ресторе"

Артур Акчурин

unread,
Feb 8, 2012, 2:33:55 AM2/8/12
to openbra...@googlegroups.com
Андрей, в этом случае нужно делать либо репликацию, либо использовать
какие нибудь ETL инструменты, хотя бы тот же kettle , scriptella (на
счет её не уверен, подойдёт ли тебе) и т.д. И в самом деле, этот
функционал , если его пихать в obp будет лишним. Для достижения твоих
целей нужно использовать внешние инструменты и их грамотную настройку.
Благо таких инструментов много.

08.02.12, ReMaks<rem...@gmail.com> написал(а):

Gennady Kovalev

unread,
Feb 8, 2012, 4:33:27 AM2/8/12
to openbra...@googlegroups.com
В Втр, 07/02/2012 в 22:22 -0800, Andrey Svininykh пишет:

> Мне такая возможность нужна для обслуживания удалённых точек(больше
> 500 км от областного центра), интернета у них нет и к ним не
> наездишься(так как дорог к ним тоже практически нет). Так что
> единственный вариант посмотреть, что у них происходить в БД и если что
> поправить, это выгрузить данные на флешку и передать с оказией.

Значит на локальной машине должна быть либо система бэкапа, либо просто
скрипт, который запускается и в определённую папочку кладёт файлик.

Если делать не правильно, но универсально, то можно внутри POS
перечислить таблицы, они у нас фиксированы. В цикле их перебрать и
сгенерировать sql-файл с командами INSERT INTO ... () ....

Но это супер-неправильно. Правильно на локальной системе запускать
команду для конкретной СУБД.

Reply all
Reply to author
Forward
0 new messages