Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Проблема с репликацией длинной транзакции / 15 сообщений из 15, страница 1 из 1
25.08.2006, 10:34
    #33942226
Рыжий Кот
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с репликацией длинной транзакции
ASA 9.0.2 3320
проблема возникла вчера. репликация идет через ftp.
имеется: редко изменяющаяся табличка (справочник), в которой 12000 записей. Табличка для расчетов и в ней все поля (а их всего 3) - decimal. Первичый ключ - составной на первых двух полях.
Нужно было обновить содержимое.
На одной из удаленных баз было сделано delete from table390085 + commit;
после этого была начала заливка новых данных с той же удаленной базы

пошли апдейты в центральную базу.
Для сверки позже были выполнены команды в удаленной и центральной бд select count(*) from table 390085. В результате выяснилось, что количество строк не совпадает, а в логе центральной бд имеется куча skip(-193), вызванных попыткой вставить записи, у которых первичные ключи конфликуют с уже имеющимися.
Продолжая читать лог dbremote было обнаружено, что delete * from не выполнился... и причина этого непонятна. Но есть одно обстоятельноство в процессе выполнения этой длинной транзакции dbremote по расписанию останавливался и запускался, что видно ниже

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
I.  08 / 24   18 : 00 : 51 . DELETE FROM god.table390085

                    WHERE density= 1 . 06 

                      AND temperature= 66 
I.  08 / 24   18 : 00 : 51 . DELETE FROM god.table390085

                    WHERE density= 1 . 06 

                      AND temperature= 66 . 5 
I.  08 / 24   18 : 00 : 51 . DELETE FROM god.table390085

                    WHERE density= 1 . 06 

                      AND temperature= 67 
I.  08 / 24   18 : 00 : 51 . DELETE FROM god.table390085

                    WHERE density= 1 . 06 

                      AND temperature= 67 . 5 
I.  08 / 24   18 : 00 : 51 . DELETE FROM god.table390085

                    WHERE density= 1 . 06 

                      AND temperature= 68 
I.  08 / 24   18 : 00 : 51 . DELETE FROM god.table390085

                    WHERE density= 1 . 06 

                      AND temperature= 68 . 5 
E.  08 / 24   18 : 00 : 52 . Receiving messages failed
I.  08 / 24   18 : 00 : 52 . Shutdown by request
I.  08 / 24   18 : 00 : 52 . Execution completed

но после повторного старта и затребования повторной посылки данных,
инструкции delete не были посланы вновь, а уже пошли insert, что вызвало конфликт.


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
E.  08 / 24   18 : 01 : 35 . Missing message from "remote_az" ( 138 - 013266126735 - 013266147356 - 0 )
I.  08 / 24   18 : 01 : 35 . Sending message to "remote_az" ( 413 - 014331032693 - 014331032693 - 0 )
...
...
I.  08 / 24   18 : 02 : 36 . INSERT INTO god.table390085(density,temperature,density20)

                   VALUES (. 5 , 16 . 5 ,. 495 )
E.  08 / 24   18 : 02 : 36 . SQL statement failed: (- 193 ) Primary key for table 'table390085' is not unique
E.  08 / 24   18 : 02 : 36 . Skipping:
E.  08 / 24   18 : 02 : 36 . INSERT INTO god.table390085(density,temperature,density20)

                   VALUES (. 5 , 16 . 5 ,. 495 )
I.  08 / 24   18 : 02 : 36 . INSERT INTO god.table390085(density,temperature,density20)

                   VALUES (. 5 , 17 ,. 495 )
E.  08 / 24   18 : 02 : 36 . SQL statement failed: (- 193 ) Primary key for table 'table390085' is not unique
E.  08 / 24   18 : 02 : 36 . Skipping:
E.  08 / 24   18 : 02 : 36 . INSERT INTO god.table390085(density,temperature,density20)

                   VALUES (. 5 , 17 ,. 495 )
I.  08 / 24   18 : 02 : 36 . INSERT INTO god.table390085(density,temperature,density20)

                   VALUES (. 5 , 17 . 5 ,. 496 )
E.  08 / 24   18 : 02 : 36 . SQL statement failed: (- 193 ) Primary key for table 'table390085' is not unique
...
...

не долго думая, удалил все из центральной бд, и заново повторил операцию, все прошло удачно...
однако, теперь возникает вопрос: неужели существует вероятность недополучить инфу при принудительной (но корректной) остановке dbremote во время получения длинной транзакции...
...
Рейтинг: 0 / 0
25.08.2006, 12:57
    #33942769
antand
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с репликацией длинной транзакции
Вроде не возникала ситуация, точнее возникали сбои и остановки в том числе во время длиных транзакций, но все отрабатывало потом нормально(перезапросы и т.д.)
Я что вспоминаю про опции в базе типа Continue_after_raiserror и т.д., хотя могу ошибаться. Давно основы репликации у себя настаивал, сейчас уже все в скриптах , забываешь кое-что.
Думаю надо смотреть как ведет себя dbremote, если его останавливают. Настройки и т.д.
...
Рейтинг: 0 / 0
25.08.2006, 13:03
    #33942790
antand
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с репликацией длинной транзакции
Посмотрел на лог Ваш еще раз.
По идее после посылки запроса на повторную посылку он должен был отвергать, все что приходит до первого пакета из запрошенной повторной посылке.
А у вас почему-то он стал insert применять.
...
Рейтинг: 0 / 0
25.08.2006, 15:27
    #33943438
Рыжий Кот
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с репликацией длинной транзакции
antandПосмотрел на лог Ваш еще раз.
По идее после посылки запроса на повторную посылку он должен был отвергать, все что приходит до первого пакета из запрошенной повторной посылке.
А у вас почему-то он стал insert применять.

вот именно.
за 2 года это первый такой сбой... я его связываю с обновлением до 9,0,2... в чистой 9,0,0 (с последним соответствующим ebf) dbremote работает как часы... в 9,0,2 он может вообще повиснуть (в режиме сервиса) и снимается только при помощи kill/taskkill ((
...
Рейтинг: 0 / 0
25.08.2006, 15:30
    #33943452
Рыжий Кот
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с репликацией длинной транзакции
CONTINUE_AFTER_RAISERROR - это, к сожалению, не с репликацией связано
...
Рейтинг: 0 / 0
25.08.2006, 15:33
    #33943468
Рыжий Кот
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с репликацией длинной транзакции
пока временно заменил net stop на kill/taskkill, думаю что ошибка именно в dbremote... надеюсь, что при насильственном отваливании dbremote будет происзодить rollback...
...
Рейтинг: 0 / 0
25.08.2006, 15:34
    #33943471
antand
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с репликацией длинной транзакции
Жалко Вы сразу все удалили и заново сделали.
Лучше было бы посмотреть, когда повторная посылка начала бы применяться.
Т.е. пусть бы он на Insertы ругнулся, но повторно ведь должен был DELETы прислать и потом опять Insertы.
А вот если бы такого небыло, то это весело действительно получается.
...
Рейтинг: 0 / 0
25.08.2006, 15:38
    #33943489
Рыжий Кот
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с репликацией длинной транзакции
antandЖалко Вы сразу все удалили и заново сделали.
Лучше было бы посмотреть, когда повторная посылка начала бы применяться.
Т.е. пусть бы он на Insertы ругнулся, но повторно ведь должен был DELETы прислать и потом опять Insertы.
А вот если бы такого небыло, то это весело действительно получается.

у меня все на руках... все логи...
параллельно еще ребята вбивали данные, так вот после этого delete пошли их данные в центральную вперемешку с этими insert-тами
как видно из лога это произошло ровно в 6 вечера, когда рестартнулся dbremote (он это делает каждый час).
Я могу попробовать повторно проиграть данный сценарий на выходных ), данные не очень критичные...
...
Рейтинг: 0 / 0
25.08.2006, 15:42
    #33943507
Рыжий Кот
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с репликацией длинной транзакции
вот длинный кусок лога, там видно что затребовалась перепосылка... видно
она затребовалась так, как будто delete прошел нормально...
...
Рейтинг: 0 / 0
25.08.2006, 15:48
    #33943541
Рыжий Кот
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с репликацией длинной транзакции
antandЛучше было бы посмотреть, когда повторная посылка начала бы применяться.
Т.е. пусть бы он на Insertы ругнулся, но повторно ведь должен был DELETы прислать и потом опять Insertы.
А вот если бы такого небыло, то это весело действительно получается.

а такое возможно??? он же сразу по смещению определяет, что message too old... а то если б он применял, все что лежит в папке это был бы кошмар %)
...
Рейтинг: 0 / 0
25.08.2006, 16:08
    #33943635
antand
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с репликацией длинной транзакции
А вот у меня мысль возникла шальная. У вас там поля ключевые цифры?
А не могло случиться, что он не удалил по delete запись? Ну например не было такой из-за округления и т.д.
...
Рейтинг: 0 / 0
25.08.2006, 16:12
    #33943651
antand
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с репликацией длинной транзакции
antandА вот у меня мысль возникла шальная. У вас там поля ключевые цифры?
А не могло случиться, что он не удалил по delete запись? Ну например не было такой из-за округления и т.д.
Я имею ввиду конечно в консолидированной.
...
Рейтинг: 0 / 0
25.08.2006, 16:34
    #33943747
Рыжий Кот
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с репликацией длинной транзакции
antand antandА вот у меня мысль возникла шальная. У вас там поля ключевые цифры?
А не могло случиться, что он не удалил по delete запись? Ну например не было такой из-за округления и т.д.
Я имею ввиду конечно в консолидированной.

тоже была такая мысль, однако тип decimal(30, 10)
если даже предположить такое, то НЕКОТОРЫЕ десятичные числа хранятся в виде бесконечного двоичного числа, но не все же ;)
...
Рейтинг: 0 / 0
25.08.2006, 16:42
    #33943787
antand
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с репликацией длинной транзакции
Рыжий Кот antand antandА вот у меня мысль возникла шальная. У вас там поля ключевые цифры?
А не могло случиться, что он не удалил по delete запись? Ну например не было такой из-за округления и т.д.
Я имею ввиду конечно в консолидированной.

тоже была такая мысль, однако тип decimal(30, 10)
если даже предположить такое, то НЕКОТОРЫЕ десятичные числа хранятся в виде бесконечного двоичного числа, но не все же ;)
Очень многие!!! как я выяснил недавно в войне с double.
Тут тема недалеко где-то моя, еле одолел. Но это к слову.

А вообще если допустить что так и есть, то все срастается хорошо. Согласитесь.
Но я все же думаю, что дело в другом. Пока тайм-аут возьму, подумать надо. Тут еще начальники ...
...
Рейтинг: 0 / 0
25.08.2006, 16:45
    #33943803
Рыжий Кот
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с репликацией длинной транзакции
antandА вообще если допустить что так и есть, то все срастается хорошо. Согласитесь.

двумя руками за! (с)
)) мне уже сюрпризы надоели
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Проблема с репликацией длинной транзакции / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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