powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / передача всей базы данных 1 раз в час в онлайн режиме
25 сообщений из 100, страница 2 из 4
передача всей базы данных 1 раз в час в онлайн режиме
    #39284363
Го-стхи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Модель применения чисто потоковая, поэтому все довольно просто - триггер на after insert, в нем вызов udf, которая пишет в файл вставленную запись. Можно еще для чистоты повесить триггер на transaction rollback, чтобы не реплицировать откаченную запись, хотя это будет очень редкий кейс.
В более свежих версиях птицы можно было бы юзать события (отдельная утилитка, которая бы висела на сервере, ловила события вставки и дальше полет фантазии) или execute statement, чтобы сразу подключаться к базе2 и добавлять запись в нее (зависит от частоты вставки, т.к. каждый ES на внешнюю базу - это новое подключение, старт и завершение транзакции).
...
Рейтинг: 0 / 0
передача всей базы данных 1 раз в час в онлайн режиме
    #39284391
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mari.P,

Добавь во все таблицы колонку REPLICATED:TIMESTAMP

По запуску репликатора отбираешь все строки с REPLICATED IS NULL и копируешь их, выставляя REPLICATED = CURRENT_TIMESTAMP
...
Рейтинг: 0 / 0
передача всей базы данных 1 раз в час в онлайн режиме
    #39284407
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AriochПо запуску репликатора отбираешь все строки с REPLICATED IS NULL и копируешь их, выставляя REPLICATED = CURRENT_TIMESTAMPАки Дункан Маклауд "должен остаться только один". А если надо в несколько пунктов назначения доставить? на каждую таблицу будешь N таймштампов навешивать? А как решить в каком порядке выгребать данные? Аццкий Адъ.

Автору не занимайтесь самолечением, вам нужен репликатор, вот его и надо купить, цена у него не космическая ни разу. Костыли с таймштампами и УДФам запросто выйдут боком. Нормальный путь для репликатора это писать триггерами данные для репликации мы пишем плайнтекст, Сибиряков пишет в бинарном формате, потом на требуемое кол-во таргет баз все это накатывается. Когда репликатор работает строго в одну сторону, все сильно упрощается.

С инкрементарным бэкапом все это реализовать хлопотней, не так удобно.
...
Рейтинг: 0 / 0
передача всей базы данных 1 раз в час в онлайн режиме
    #39284415
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mari.P2. Так сколько времени я их просравниваю?

Зависит от кривизны рук и размера таблиц. В идеале - не дольше чем делается бэкап.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
передача всей базы данных 1 раз в час в онлайн режиме
    #39284433
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> А если надо в несколько пунктов назначения доставить?

1) тут другой случай
2) тогда реплицировать в промежуточную БД - формат которой можно уже как угодно крутить - а оттуда уже по остальным
...
Рейтинг: 0 / 0
передача всей базы данных 1 раз в час в онлайн режиме
    #39284437
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Го-стхи!
You wrote on 2 августа 2016 г. 11:35:37:

Го-стхи> триггер на after insert, в нем вызов udf, которая пишет в файл вставленную запись.долболоб!

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
передача всей базы данных 1 раз в час в онлайн режиме
    #39284438
Го-стхи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МимопроходящийHello, Го-стхи!
You wrote on 2 августа 2016 г. 11:35:37:

Го-стхи> триггер на after insert, в нем вызов udf, которая пишет в файл вставленную запись.долболоб!


Обоснуй или не флуди
...
Рейтинг: 0 / 0
передача всей базы данных 1 раз в час в онлайн режиме
    #39284451
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Го-стхи,

на хрен нужен UDF когда есть E.T. ?
...
Рейтинг: 0 / 0
передача всей базы данных 1 раз в час в онлайн режиме
    #39284458
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Arioch!
You wrote on 2 августа 2016 г. 12:08:23:

Arioch> на хрен нужен UDF когда есть E.T. ?E.T. в данном случае тоже не ACID.
ну а UDF, вообще "не пришей кобыле яйца"
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
передача всей базы данных 1 раз в час в онлайн режиме
    #39284462
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Го-стхине флудифлудеров я пока вижу двоих Го-стхи и Arioch. Вам обоим стоит немного подумать, вы предлагаете пройтись по вилам и граблям. Собственно автор предупрежден, дальше дело личное идти туда где обрыв или нет.
...
Рейтинг: 0 / 0
передача всей базы данных 1 раз в час в онлайн режиме
    #39284464
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_Pisarevsky,

варианты без граблей он отрицает 19480872

тогда ему предлагают варианты с наиболее изученными и мягкими граблями, которые можно обойти при аккуратности
...
Рейтинг: 0 / 0
передача всей базы данных 1 раз в час в онлайн режиме
    #39284497
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ariochкоторые можно обойти при аккуратности
Нельзя: триггеров на сейфпоинты не придумали.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
передача всей базы данных 1 раз в час в онлайн режиме
    #39284611
Го-стхи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ariochна хрен нужен UDF когда есть E.T. ?
External table, что ли? Не думаю. Во-первых, не уверен, можно ли ее создавать и дропать в триггере, а во-вторых, в случае отката все равно придется что-то выдумывать.
МимопроходящийHello, Arioch!
You wrote on 2 августа 2016 г. 12:08:23:

Arioch> на хрен нужен UDF когда есть E.T. ?E.T. в данном случае тоже не ACID.
ну а UDF, вообще "не пришей кобыле яйца"

Не вижу проблемы. У ТС задача на insert-delete, никаких update. Откаты можно ловить в триггере и записывать специальный флаг (в файл репликации, соответственно, на каждый insert писать id транзакции). Вариант косой, конечно, но особых граблей не видно.
Хотя в общем случае хранить таблицу истории прямо в БД более правильно.

Ivan_Pisarevskyфлудеров я пока вижу двоих Го-стхи и Arioch. Вам обоим стоит немного подумать, вы предлагаете пройтись по вилам и граблям. Собственно автор предупрежден, дальше дело личное идти туда где обрыв или нет.
Попрошу! Пишу исключительно по делу, коли где ошибаюсь - так хочу знать, в чем. Исключительно в целях самообразования и раскапывания истины, кто знает - вдруг и самому придется чем-то подобным озадачиться. А вот цедимые сквозь зубы реплики утомленных аксакалов делу ничуть не помогают.

Dimitry SibiryakovAriochкоторые можно обойти при аккуратности
Нельзя: триггеров на сейфпоинты не придумали.

М-да, здесь проблема. Но в общем случае. Если в конкретной базе вставленная запись уже не может быть отменена (кроме как по rollback, который можно поймать в триггере) - этот фактор роли вроде бы не играет.
Всё имхо.
...
Рейтинг: 0 / 0
передача всей базы данных 1 раз в час в онлайн режиме
    #39284618
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Го-стхиrollback, который можно поймать в триггере
Нельзя: в 1.5 нет триггеров на rollback.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
передача всей базы данных 1 раз в час в онлайн режиме
    #39284634
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Го-стхиА вот цедимые сквозь зубы реплики утомленных аксакалов делу ничуть не помогают.форум это не курсы молодого бойца, репликации обсуждают уже точно больше 10 лет, каждый раз "плясать от печки" несколько странно. На конкретное место в твоей схеме, где она обломится указано. МП отвечает строго по делу, это я тут "по древу растекаюсь".
...
Рейтинг: 0 / 0
передача всей базы данных 1 раз в час в онлайн режиме
    #39284650
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Го-стхиможно ли ее создавать и дропать в триггере

с дуба рухнул ???

конечно же внешняя таблица - как и ЛЮБЫЕ метаданные - создается ОДИН раз

а ты что, каждую запись хочешь в отдельный файл сбрасывать? весь диск засрать что ли однокластерным мусором?
...
Рейтинг: 0 / 0
передача всей базы данных 1 раз в час в онлайн режиме
    #39284789
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Го-стхи!
You wrote on 2 августа 2016 г. 17:16:36:

Го-стхи> Не вижу проблемы.да потому что ты лошара!

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
передача всей базы данных 1 раз в час в онлайн режиме
    #39284850
Го-стхи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ivan_Pisarevskyфорум это не курсы молодого бойца, репликации обсуждают уже точно больше 10 лет, каждый раз "плясать от печки" несколько странно. На конкретное место в твоей схеме, где она обломится указано. МП отвечает строго по делу, это я тут "по древу растекаюсь".
Не КМБ? Странно. А то я тут постоянно вижу темы из серии "помогите написать select А и Б from В", и они ни у кого вроде не вызывают зубовного скрежета.
Обсуждать-то обсуждают, а какого-то вменяемого результата не видать. Тогда бы хоть в FAQ добавили, дескать, репликация своими силами - табу, юзайте сторонний спец софт и не парьте мозг. А еще лучше была бы статейка, куда всех страждущих неофитов направляли бы черпать мудрости.
"На конкретное место в твоей схеме, где она обломится указано"
Где? Вот хоть убей - конкретики не вижу. "Дельность" этого самого дела оставим за кадром.
Ariochс дуба рухнул ???
конечно же внешняя таблица - как и ЛЮБЫЕ метаданные - создается ОДИН раз
Я не был уверен, потому так и сказал. С ET не работал.
Ariochа ты что, каждую запись хочешь в отдельный файл сбрасывать? весь диск засрать что ли однокластерным мусором?
Разумеется нет. Начинать новый файл с шагом репликации, иначе его просто так не скопируешь, а тогда какой в ET плюс по сравнению с обычной таблицей? Твое ж предложение, вот и развил бы тему подробнее ;)
Dimitry SibiryakovНельзя: в 1.5 нет триггеров на rollback.

Вот! Наконец полезное сообщение в этой теме. Кратко, по делу, без гонора. Дмитрий, уважаю.
Мимопроходящийда потому что ты лошара!

Прошу присутствующего здесь модератора зафиксировать оскорбление пользователя, а также флуд, и принять соответствующие меры.
...
Рейтинг: 0 / 0
передача всей базы данных 1 раз в час в онлайн режиме
    #39284861
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Го-стхиТогда бы хоть в FAQ добавили, дескать, репликация своими силами - табу

Не табу конечно, но репликацию своими силами сделать не так-то просто. Новички это не сделают точно, а если и сделают то с граблями. Те кто знает как это делать, никогда не будут применять для этих целей UDF.
...
Рейтинг: 0 / 0
передача всей базы данных 1 раз в час в онлайн режиме
    #39284875
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисрепликацию своими силами сделать не так-то просто

Вообще-то это просто. Своими силами и исключительно для своей базы это практически
тривиальная задача. Все решения давно описаны в статьях и обсуждены на форумах. По ссылке
kdv даже лежит болванка репликатора. Но времени, конечно, придётся потратить больше чем на
250 баксов.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
передача всей базы данных 1 раз в час в онлайн режиме
    #39284934
O'Rioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Го-стхиAriochа ты что, каждую запись хочешь в отдельный файл сбрасывать? весь диск засрать что ли однокластерным мусором?
Разумеется нет. Начинать новый файл с шагом репликации, иначе его просто так не скопируешь, а тогда какой в ET плюс по сравнению с обычной таблицей? Твое ж предложение, вот и развил бы тему подробнее

Это не моё предложение.

моё предложение было - апгрейднуться до Nbackup - 19480872
если это не получается, то второе предложение, хуже - добавить по столбцу во все интересующие таблицы - 19485321

что же до конкретно этого - то это было "если уж делать триггерами, то не через UDF, а тогда хотя бы через E.T."

Чем E.T. лучше - cтандартный функционал сервера, против всех возможных косяков в самописной UDF
А чистить эти файлы можно например по ночам, когда приложение будет закрыто.

Но как я сказал, это не совет, а "уже если идёте туда, то лучше хотя бы переобуйтесь"
...
Рейтинг: 0 / 0
передача всей базы данных 1 раз в час в онлайн режиме
    #39284937
O'rioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovПо ссылке kdv даже лежит болванка репликатора. Но времени, конечно, придётся потратить больше чем на
250 баксов.


Да вроде даже в IBE это встроено, http://www.ibexpert.net/ibe/index.php?n=Doc.LogManager
...
Рейтинг: 0 / 0
передача всей базы данных 1 раз в час в онлайн режиме
    #39285900
Mari.P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
День добрый уважаемые профессионалы!
Что сделала.
1. Апгрейдила сервер Firebird с версии 1.5 до версии 2.0 с целью воспользоваться утилитой nbackup
Апгрейд прошел успешно, вопрос по утилите nbackup. Допустим я хочу создавать инкрементальный бэкап каждый час.
и соответственно восстанавливать на удаленном сервере.
c созданием все понятно:
http://firebirdsql.org/manual/ru/nbackup-backups-ru.html#nbackup-backups-pract-ru
Ночью делаем полную резервную копию:
Код: sql
1.
 nbackup -B 0 base.fdb base_04082016.nbk


и восстанавливаем ее сразу на удаленном узле
Код: sql
1.
nbackup -R base.fdb base_04082016.nbk


через час делаем рез копию уровня 1
Код: sql
1.
 nbackup -B 1 base.fdb base_04082016_1.nbk



И хотим сразу восстановить ее на удаленном узле.
Но в документации написано, что необходимо восстанавливать последовательно, те
Код: sql
1.
nbackup -R base.fdb base_04082016.nbk base_04082016_1.nbk


Означает-ли это, что восстановление из инкрементальной резервной копии пойдет медленнее, чем из полной копии?
и скажем на 9 час восстановления у меня таких файлов в цепочке будет уже 9?
...
Рейтинг: 0 / 0
передача всей базы данных 1 раз в час в онлайн режиме
    #39285912
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mari.P,

Надо было сразу обновляться на 2.5 или 3.0. Двойка уже давно снята с поддержки. Тем более там какие-то баги были в nbackup.

Mari.PОзначает-ли это, что восстановление из инкрементальной резервной копии пойдет медленнее, чем из полной копии?

Да. В 2.5 инкрементные копии ещё и целиком читают файл БД на любом уровне. В 3.0 это значительно улучшено.
Поэтому обычно делают план копирования чтобы не перебирать потом 100 инкрементов. Типа раз в день делают полную копию, а каждый час инкременты от неё.

Восстанавливать с помощью nbackup сразу в БД можно будет в 4.0. Но в 4.0 будет и нативная логическая репликация master-slave.
...
Рейтинг: 0 / 0
передача всей базы данных 1 раз в час в онлайн режиме
    #39285923
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mari.P1. Апгрейдила сервер Firebird с версии 1.5 до версии 2.0 с целью воспользоваться утилитой nbackupНи в коем случае ! nbackup нормально работает только в 2.5 и выше

Mari.PОзначает-ли это, что восстановление из инкрементальной резервной копии пойдет медленнее, чем из полной копии?Зависит от размера инкремента

Mari.Pна 9 час восстановления у меня таких файлов в цепочке будет уже 9?Если каждый час делать инкремент 1-го уровня, то в цепочке будет всегда 2 файла.
Но сам инкремент будет больше с каждым часом. Насколько - зависит от характера работы с БД.
Если там обновляются одни и те же страницы, то может вообще не расти.

Если каждый час делать инкремент следующего уровня, то инкременты будут потенциально меньшими (не обязательно), но в цепочке их нужно будет перечислить все.
...
Рейтинг: 0 / 0
25 сообщений из 100, страница 2 из 4
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / передача всей базы данных 1 раз в час в онлайн режиме
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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