powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / udr-процедура: бэкап базы + рестор + упаковка 7z
25 сообщений из 40, страница 1 из 2
udr-процедура: бэкап базы + рестор + упаковка 7z
    #39631435
Hommer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
udr-процедура: бэкап базы + рестор + упаковка 7z. Пока только под windows: для 32-разрядного firebird, для 64-разрядного . В embedded тоже работает.
Нужно положить dll в папку \pluguns\udr\ сервера (если папки udr нет, то создать её (помня про UAC)).

Код: sql
1.
2.
3.
4.
5.
6.
7.
create or alter procedure GetBackup (
    ADatabase varchar(512) character set utf8 = null, -- путь к базе; если пусто, то текущая
    ABlockSize bigint = 0, -- разбивать результат на блоки по ABlockSize байт; если 0, то вернуть всё одной записью
    RestoreIt boolean = false, -- восстановить бэкап
    ArchiveIt boolean = false -- упаковать архиватором (7-zip)
) returns (Data blob)
external name 'BackupHelper!getbackup' engine udr


Возврат результата в блобе (одной записью или несколькими по ABlockSize байт).

Вызывается так:
Код: sql
1.
2.
select Data from GetBackup; -- сделать бэкап текущей базы и вернуть содержимое бэкапа одним блобом
select Data from GetBackup(null, 1000000, true, true); -- сделать бэкап текущей базы, потом рестор, потом упаковать и вернуть упакованное записями по 1000000 байт.



Иcпользование из IBExpert:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
execute ibeblock
as
begin
  ibec_SaveToFile('D:\Data.7z', '', __stfOverwrite);
  for select Data from GetBackup(null, 1000000, true, true) into :Data do
  begin
    ibec_SaveToFile('D:\Data.7z', :Data, __stfAppend);
  end
end


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
execute ibeblock
as
begin
  ibec_SaveToFile('D:\Data.fbk', '', __stfOverwrite);
  for select Data from GetBackup(null, 1000000, false, false) into :Data do
  begin
    ibec_SaveToFile('D:\Data.fbk', :Data, __stfAppend);
  end
end


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
execute ibeblock
as
begin
  ibec_SaveToFile('D:\Data.fdb', '', __stfOverwrite);
  for select Data from GetBackup(null, 1000000, true, false) into :Data do
  begin
    ibec_SaveToFile('D:\Data.fdb', :Data, __stfAppend);
  end
end



Выкладываю бинарники с ограничением на 10 успешных запусков процедуры. Счётчик запусков сбрасывается при перезапуске сервера.
Если кому-нибудь нужно без ограничений, или с исходниками, или переделать под ваши нужды, то это можно обсудить (nick@fastbase.net)
...
Рейтинг: 0 / 0
udr-процедура: бэкап базы + рестор + упаковка 7z
    #39631484
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
17.04.2018 11:53, Hommer пишет:
> udr-процедура: бэкап базы + рестор + упаковка 7z.

- а почему утка крякает?
- а патаму што может! (С)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
udr-процедура: бэкап базы + рестор + упаковка 7z
    #39631489
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hommer,

1. как по мне пихать содержимое бекапа в BLOB не очень умно, да и не понятно зачем это надо.
2. если ты уж засовываешь бекап в блоб, то почему бы не сделать парную процедуру для восстановления из этого блоба, а не пихать всё в одну процедуру

ИХМО труд бесполезный, но если ты считаешь что это надо тебе (ну и мало ли кому), то сделай набор процедур для задач копирования и восстановления и помести их в один пакет.

HommerВыкладываю бинарники с ограничением на 10 успешных запусков процедуры. Счётчик запусков сбрасывается при перезапуске сервера.

это ещё зачем, ты продавать свою udr собрался?
...
Рейтинг: 0 / 0
udr-процедура: бэкап базы + рестор + упаковка 7z
    #39631492
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денискак по мне пихать содержимое бекапа в BLOB не очень умно, да и не понятно зачем это надо.

Видимо, чтобы потом вытянуть его на клиент.
Хотя почему не External Table в самом деле....
...
Рейтинг: 0 / 0
udr-процедура: бэкап базы + рестор + упаковка 7z
    #39631495
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

ну вот только ты не говори глупостей. Внимательно читаем какие типы поддерживаются External Table
...
Рейтинг: 0 / 0
udr-процедура: бэкап базы + рестор + упаковка 7z
    #39631513
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
17.04.2018 12:33, Симонов Денис пишет:
> как по мне пихать содержимое бекапа в BLOB не очень умно

pkunzip.zip
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
udr-процедура: бэкап базы + рестор + упаковка 7z
    #39631535
Hommer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис1. как по мне пихать содержимое бекапа в BLOB не очень умно, да и не понятно зачем это надо.
2. если ты уж засовываешь бекап в блоб, то почему бы не сделать парную процедуру для восстановления из этого блоба, а не пихать всё в одну процедуру
Есть база 1-10-100GB на сервере в интернете. У вас есть IP-адрес сервера FB, админские логин и пароль для FB. Бэкапы хочется забирать быстро и удобно.
Как будете решать? :)
7-zip одну мою базу ужимает в 6 раз, а другую в 50. Через интернет передаётся уже ужатое. Быстро забирается, удобно хранится, и уже отресторенное если нужно.
Сейчас нет возможности задавать пароль для архива, но нужно сделать конечно.
...
Рейтинг: 0 / 0
udr-процедура: бэкап базы + рестор + упаковка 7z
    #39631545
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HommerКак будете решать? :)

Код: sql
1.
2.
3.
backup-cgi-bin.sh

gbak db stdout | 7z stdin stdout


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
udr-процедура: бэкап базы + рестор + упаковка 7z
    #39631557
Hommer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AriochСимонов Денискак по мне пихать содержимое бекапа в BLOB не очень умно, да и не понятно зачем это надо.

Видимо, чтобы потом вытянуть его на клиент.
Хотя почему не External Table в самом деле....
Зачем External Table?
Многие знают что есть проблема с обычными блобами, что от них пухнет база. Но если использовать isc_bpb_storage_temp, то база уже не пухнет:
Код: pascal
1.
2.
  BlobParameterBlock := AnsiChar(isc_bpb_version1) + AnsiChar(isc_bpb_storage) + AnsiChar(1) + AnsiChar(isc_bpb_storage_temp);
  OutBlob := Attachment.createBlob(Status, Transaction, @FOutMessage.Data, Length(BlobParameterBlock), Pointer(PAnsiChar(BlobParameterBlock)));
...
Рейтинг: 0 / 0
udr-процедура: бэкап базы + рестор + упаковка 7z
    #39631560
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
17.04.2018 13:16, Hommer пишет:
> Бэкапы хочется забирать быстро и удобно.
> Как будете решать? :)

gbak изначально умеет складывать бэкап на машину клиента.
без анальных практик.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
udr-процедура: бэкап базы + рестор + упаковка 7z
    #39631564
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hommer,

у меня есть большие сомнения что BLOB в 100G можно вообще прокачать. Ты реально это пробовал?
Ну и мегабольшие бекапы обычно запускают в фоне, а потом берут готовый файл. Никто ждать 100500 минут пока сделается бекап не будет. Как себя поведёт эта UDR если связь по интернету прервётся?
...
Рейтинг: 0 / 0
udr-процедура: бэкап базы + рестор + упаковка 7z
    #39631571
Hommer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovHommerКак будете решать? :)

Код: sql
1.
2.
3.
backup-cgi-bin.sh

gbak db stdout | 7z stdin stdout



А с сервера себе забирать через ssh или ftp? :)
Можно и так, если есть доступ к серверу. А если у сервера есть админ, то не факт что он даст вам запускать там что-то :) Вот dll-ку в папочку Firebird положить - это ну максимум на что он готов пойти :)
...
Рейтинг: 0 / 0
udr-процедура: бэкап базы + рестор + упаковка 7z
    #39631577
Hommer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов ДенисHommer,

у меня есть большие сомнения что BLOB в 100G можно вообще прокачать. Ты реально это пробовал?
Вообще-то 100G пожатые 7-zip могут стать 15-ю или 10-ю, или парой гигов.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
execute ibeblock
as
begin
  ibec_SaveToFile('D:\Data.7z', '', __stfOverwrite);
  for select Data from GetBackup(null, 1000000, true, true) into :Data do
  begin
    ibec_SaveToFile('D:\Data.7z', :Data, __stfAppend);
  end
end


Закачивает блобами по 1000000 байт.
...
Рейтинг: 0 / 0
udr-процедура: бэкап базы + рестор + упаковка 7z
    #39631589
Hommer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мимопроходящий17.04.2018 13:16, Hommer пишет:
> Бэкапы хочется забирать быстро и удобно.
> Как будете решать? :)

gbak изначально умеет складывать бэкап на машину клиента.
без анальных практик.

Осталось понять есть ли плюсы от экономии времени, трафика и размера файла на диске.
...
Рейтинг: 0 / 0
udr-процедура: бэкап базы + рестор + упаковка 7z
    #39631592
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий> Бэкапы хочется забирать быстро и удобно.
> Как будете решать? :)

gbak изначально умеет складывать бэкап на машину клиента.
без анальных практик.

Умеет. Но скорость падает в разы ввиду roundtrips на каждый sql-запрос
...
Рейтинг: 0 / 0
udr-процедура: бэкап базы + рестор + упаковка 7z
    #39631595
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HommerА если у сервера есть админ, то не факт что он даст вам запускать там что-то :) Вот dll-ку в папочку Firebird положить - это ну максимум на что он готов пойти :)

...ээээ...

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

а выложить на сервер shell exploit с непонятными внутренностями - запросто?

это какой-то очень админский админ, чеc-слово
...
Рейтинг: 0 / 0
udr-процедура: бэкап базы + рестор + упаковка 7z
    #39631598
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
17.04.2018 13:51, Arioch пишет:
>
> Умеет. Но скорость падает в разы ввиду roundtrips на каждый sql-запрос

шо ты мелешь...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
udr-процедура: бэкап базы + рестор + упаковка 7z
    #39631600
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
17.04.2018 13:48, Hommer пишет:
> Осталось понять

короче говоря - ты этого не знал...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
udr-процедура: бэкап базы + рестор + упаковка 7z
    #39631601
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AriochУмеет. Но скорость падает в разы ввиду roundtrips на каждый sql-запросЕщё он умеет (не изначально) передавать файл (стрим) бекапа
...
Рейтинг: 0 / 0
udr-процедура: бэкап базы + рестор + упаковка 7z
    #39631602
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HommerЗачем External Table?
Многие знают что есть проблема с обычными блобами, что от них пухнет база. Но если использовать isc_bpb_storage_temp

....то мы начинаем пложить временные файлы со случайными названиями, которые нрапример в случае краха UDR-сервера останутся лежать на диске, скорее всего. Хотя не знаю, м.б. firebird/Win ставит этим файлам опцию авто-удаления, но тогда их 7-zip не враз откроет....

у ET же имя известное, фиксированное, и даже если мусор остался - его вполне можно почистить после перезапуска сервера. Да он и сам почистится, при следующшем запуске бакапа.


Симонов ДенисВнимательно читаем какие типы поддерживаются External Table

Ну и? в качестве двоичного буфера, array of int32, ET не так, чтобы сильно хуже.
но за счёт своей добовости - предсказуемее.
...
Рейтинг: 0 / 0
udr-процедура: бэкап базы + рестор + упаковка 7z
    #39631608
Hommer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ariochт.е. положить на сервер скрипт, который он может прочитать и проверить, он не захочет
Когда придёте положить второй-десятый раз, возможно будете чувствовать себя неловко :)
Ariochа выложить на сервер shell exploit с непонятными внутренностями - запросто?
Он вообще может вам доверять, но не быть готовым подрываться на каждую смену скрипта :)
...
Рейтинг: 0 / 0
udr-процедура: бэкап базы + рестор + упаковка 7z
    #39631614
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladумеет (не изначально)

????
Умеет, но не изначально - это по типа "допиши себе свой firebird?"

Локально запущенный gbak может сливать данные в stdout. Или в локальный файл.
Но скорость его взаимодействия с сервером сравнительно небольшая.

А "gbak" запущенный в сервере через Services API как правило заметно быстрее, но наружу кажется поток выдавать не умеет, SPB позволяет только в файл на сервере результат сложить, а потом "как хочешь так и читай". https://stackoverflow.com/questions/49476950
...
Рейтинг: 0 / 0
udr-процедура: бэкап базы + рестор + упаковка 7z
    #39631618
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HommerAriochт.е. положить на сервер скрипт, который он может прочитать и проверить, он не захочет
Когда придёте положить второй-десятый раз, возможно будете чувствовать себя неловко :)
Ariochа выложить на сервер shell exploit с непонятными внутренностями - запросто?
Он вообще может вам доверять, но не быть готовым подрываться на каждую смену скрипта :)

и в чем разница - выложить 2-й/10-й раз скрипт или выложить 2-й/10-й раз новую сборку DLL ?

ну тогда он просто делает вам возможность в специальную папку с ограниченными правами сливать скрипты или DLL без его личного участия
...
Рейтинг: 0 / 0
udr-процедура: бэкап базы + рестор + упаковка 7z
    #39631629
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий17.04.2018 13:51, Arioch пишет:
>
> Умеет. Но скорость падает в разы ввиду roundtrips на каждый sql-запрос

шо ты мелешь...

"мопед не мой" (С)

http://www.ibase.ru/gbak/#bsapi К слову, резервное копирование через Services API является самым быстрым, по сравнению с локальным протоколом или tcp

...
Рейтинг: 0 / 0
udr-процедура: бэкап базы + рестор + упаковка 7z
    #39631637
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
17.04.2018 14:16, Arioch пишет:
> "мопед не мой" (С)

но ведь это твой опус: "скорость падает в разы..."
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25 сообщений из 40, страница 1 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / udr-процедура: бэкап базы + рестор + упаковка 7z
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]