проблема с базой UTM5

Технические вопросы по UTM 5.0
Ответить
Аватара пользователя
TiRider
Сообщения: 568
Зарегистрирован: Сб июн 07, 2008 12:43

проблема с базой UTM5

Сообщение TiRider »

Доброго дня всем друзья!

Уважаемые. Случилась у меня беда следующего характера.
В общем вот:

main.log

Код: Выделить всё

*CRIT  : Jan 31 12:37:30 UTM5 DBA: can't parse notification_borders 0.000000
*CRIT  : Jan 31 12:37:30 UTM5 DBA: can't parse notification_borders 0.000000
*CRIT  : Jan 31 12:37:30 UTM5 DBA: can't parse notification_borders 0.000000
*CRIT  : Jan 31 12:37:30 UTM5 DBA: can't parse notification_borders 0.000000
*CRIT  : Jan 31 12:37:30 UTM5 DBA: can't parse notification_borders 0.000000
ну и так далее, продолжает валиться эта ошибка.

core_start.log

Код: Выделить всё

*CRIT  : Jan 31 14:09:48 UTM5 DBA: can't parse notification_borders 0.000000
*CRIT  : Jan 31 14:09:48 UTM5 DBA: can't parse notification_borders 0.000000
*CRIT  : Jan 31 14:09:48 UTM5 DBA: can't parse notification_borders 0.000000
*CRIT  : Jan 31 14:09:48 UTM5 DBA: can't parse notification_borders 0.000000
*CRIT  : Jan 31 14:09:48 UTM5 DBA: can't parse notification_borders 0.000000
radius.log

Код: Выделить всё

 ERROR : Jan 31 14:23:15 StreamManager: connect failed: Connection refused
 ERROR : Jan 31 14:23:15 StreamManager: connect failed: Connection refused
?Debug : Jan 31 14:23:15 RADIUS Config: Unable to connect, waiting for 30 sec..
 ERROR : Jan 31 14:23:45 StreamManager: connect failed: Connection refused
 ERROR : Jan 31 14:23:45 StreamManager: connect failed: Connection refused
?Debug : Jan 31 14:23:45 RADIUS Config: Unable to connect, waiting for 30 sec..
ну и самое вкусное...

verificator.log

Код: Выделить всё

-- Verificator
-- You have to backup UTM5 database!
-- Affected tables list at the end of file

-- ERROR service link 3137 refer to service 166 which not exist
-- SQL DESC no sql, delete slink or create service

-- ERROR unexpected row in periodic_service_links with id 3137
-- SQL DESC delete row (NOT RECOMMENDED)
-- UPDATE periodic_service_links SET is_deleted=1 WHERE id='3137';
Настораживают записи notification_borders... В верификаторе вижу, с базой дела. По форуму полазил, видел примерно как делается. Но не задача.... Я не могу войти в админку через утилиту админскую...
Пишет ошибку:

Код: Выделить всё

Connection refused: connect
FreeBSD 7.0/utm5.2.1-006/MySQL 5 ( UTF-8 )

Подскажите друзья, куда копать :( последнюю ошибку вообще не понимаю куда прикрутить :( ну и если можно про верификатор, поподробнее....

Pulse
Сообщения: 945
Зарегистрирован: Вт окт 03, 2006 12:58

Сообщение Pulse »

сервисная связка ссылается на услугу 166 которой нету, услуга причем периодическая...
проверьте таблицы

Аватара пользователя
TiRider
Сообщения: 568
Зарегистрирован: Сб июн 07, 2008 12:43

Сообщение TiRider »

В общем, вроде как сделали все. Почти даже без ошибок :lol:
В ближайшие дни набросаю, как и что делали. Пусть людям которые не знаю, в помощь будет. Сам столкнулся с такой проблемой, честно - первый раз...

moog
Сообщения: 15
Зарегистрирован: Пн фев 08, 2010 10:25

Сообщение moog »

TiRider писал(а):В общем, вроде как сделали все. Почти даже без ошибок :lol:
В ближайшие дни набросаю, как и что делали. Пусть людям которые не знаю, в помощь будет. Сам столкнулся с такой проблемой, честно - первый раз...
подобная проблема и у меня,распиши как ты ее востановил

Аватара пользователя
TiRider
Сообщения: 568
Зарегистрирован: Сб июн 07, 2008 12:43

Сообщение TiRider »

Пардон. В файле все расписал, а забыл добавить на сайт... Исправлюсь.

Аватара пользователя
TiRider
Сообщения: 568
Зарегистрирован: Сб июн 07, 2008 12:43

Сообщение TiRider »

Вот мое решение проблемы.

По какой то не понятной мне причине, в базе данных изменилась структура следующей таблицы - notification_borders, значение которое должно быть выглядит так:

Код: Выделить всё

mysql> SELECT value FROM utm5_settings WHERE variable='notification_borders' ;
+---------+
| value |
+---------+
| 0.1 2 5 |
+---------+
1 row in set (0.00 sec)
У нас же было вот так:

Код: Выделить всё

mysql> SELECT value FROM utm5_settings WHERE variable='notification_borders' ;
+--------------+
| value        |
+--------------+
| 0,1,15,30,50 |
+--------------+
1 row in set (0.00 sec)
Из-за этого конечно же и база посыпалась и в админку я не мог зайти чтобы убить не правильные значения.

В verificator.log у меня сыпались ошибки:

Код: Выделить всё

billing>less /netup/utm/log/verificator.log

-- Verificator
-- You have to backup UTM5 database!
-- Affected tables list at the end of file

-- ERROR service link 3137 refer to service 166 which not exist
-- SQL DESC no sql, delete slink or create service

-- ERROR unexpected row in periodic_service_links with id 3137
-- SQL DESC delete row (NOT RECOMMENDED)
UPDATE periodic_service_links SET is_deleted=1 WHERE id='3137';

-- WARNING slink 3137 exists only in dtagg_periodic
-- SQL DESC check slink exists and delete dtagg_periodic entry for deleted slink
UPDATE dtagg_periodic SET is_closed=1 WHERE slink_id=3137;

-- 2 errors
-- 1 warnings
-- affected tables: dtagg_periodic periodic_service_links
Видно, что явно это не в тему. И никак не связано с notification_borders, но об этом чуть позже.

В логах /var/log/utm/core_start.log сыпалось такое критическое сообщение:

Код: Выделить всё

*CRIT  : Jan 31 14:09:48 UTM5 DBA: can't parse notification_borders 0.000000
*CRIT  : Jan 31 14:09:48 UTM5 DBA: can't parse notification_borders 0.000000
*CRIT  : Jan 31 14:09:48 UTM5 DBA: can't parse notification_borders 0.000000
*CRIT  : Jan 31 14:09:48 UTM5 DBA: can't parse notification_borders 0.000000
*CRIT  : Jan 31 14:09:48 UTM5 DBA: can't parse notification_borders 0.000000
В /var/log/utm/main.log тоже самое...

Код: Выделить всё

*CRIT  : Jan 31 12:37:30 UTM5 DBA: can't parse notification_borders 0.000000 
*CRIT  : Jan 31 12:37:30 UTM5 DBA: can't parse notification_borders 0.000000 
*CRIT  : Jan 31 12:37:30 UTM5 DBA: can't parse notification_borders 0.000000 
*CRIT  : Jan 31 12:37:30 UTM5 DBA: can't parse notification_borders 0.000000 
*CRIT  : Jan 31 12:37:30 UTM5 DBA: can't parse notification_borders 0.000000
Ну точно с базой проблемы...

Собственно не долго думая, делаем backup базы данных.

Код: Выделить всё

/var/backups/utm5/db/>mysqldump -u root -p UTM5 > UTM5.sql
Должно выскочить сообщение с указанием пароля для доступа. Вводите свой пароль.

Затем "тушим" ядро. Так как, мои попытки выключить его через команду /usr/local/etc/rc.d/utm5_core.sh stop не увенчались успехом, ядро минут пять останавливалось так не остановившись.
Решил "убить" с помощью kill:

Код: Выделить всё

billing>kill -9 number pid
где number pid запущенный процесс в системе (ядро utm). У меня это был 768.

Дальше чистим логи, т.к. из-за этой конители папка куда пишется лог, переполнилась, и начала ругаться на место на диске.

Код: Выделить всё

/var/log: write failed, filesystem is full
Если после этого размер не изменится, то перезапустите систему. После перезапуска нужно снова будет "вырубить" ядро.

Далее заходим в базу:

Код: Выделить всё

billing>mysql UTM5

и исполняем запрос в базу данных.

Код: Выделить всё

mysql>UPDATE utm5_settings SET value=0.1 WHERE variable='notification_borders';
После чего проверяем изменения:

Код: Выделить всё

mysql>SELECT value FROM utm5_settings WHERE variable='notification_borders';
+-------+
| value |
+-------+
| 0.1   |
+-------+
1 row in set (0.00 sec)
Вроде изменилось. Тфу тфу. Двигаемся дальше.

Делаем бэкап базы на всякий случай.

Код: Выделить всё

/var/backups/utm5/db/>mysqldump -u root -p UTM5 > UTM5_last.sql
Далее идем в верификатор, у меня он тут: /netup/utm5/log/verificator.log

Код: Выделить всё

-- Verificator
-- You have to backup UTM5 database!
-- Affected tables list at the end of file

-- ERROR service link 3137 refer to service 166 which not exist
-- SQL DESC no sql, delete slink or create service

-- ERROR unexpected row in periodic_service_links with id 3137
-- SQL DESC delete row (NOT RECOMMENDED)
UPDATE periodic_service_links SET is_deleted=1 WHERE id='3137';

-- WARNING slink 3137 exists only in dtagg_periodic
-- SQL DESC check slink exists and delete dtagg_periodic entry for deleted slink
UPDATE dtagg_periodic SET is_closed=1 WHERE slink_id=3137;

-- 2 errors
-- 1 warnings
-- affected tables: dtagg_periodic periodic_service_links
Смотрим, что нам нужно апдейтить. И делаем это.

Код: Выделить всё

billing>mysql UTM5

Код: Выделить всё

mysql> UPDATE periodic_service_links SET is_deleted=1 WHERE id='3137';
Query OK, 1 row affected (0.04 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> UPDATE dtagg_periodic SET is_closed=1 WHERE slink_id=3137;
Query OK, 1 row affected (0.04 sec)
Rows matched: 1  Changed: 1  Warnings: 0
Смотрим, что получилось после этих манипуляций:

Код: Выделить всё

mysql> SELECT * FROM periodic_service_links WHERE id='3137';
+------+------------+--------------------+---------------------------+------------+------------+-------------+----------+---------------+-----------------+--------------------+----------------------+----------------+------------+
| id   | is_blocked | discount_period_id | discounted_in_curr_period | start_date | is_planned | expire_date | need_del | unabon_period | unprepay_period | start_block_unabon | start_block_unprepay | is_invoice_set | is_deleted |
+------+------------+--------------------+---------------------------+------------+------------+-------------+----------+---------------+-----------------+--------------------+----------------------+----------------+------------+
| 3137 |          0 |                276 |                         0 | 1244182778 |          0 |  2000000000 |        1 |             0 |               0 |                  0 |                    0 |              0 |          1 |
+------+------------+--------------------+---------------------------+------------+------------+-------------+----------+---------------+-----------------+--------------------+----------------------+----------------+------------+
1 row in set (0.00 sec)

mysql> CHECK TABLE `discount_periods`;
+-----------------------+-------+----------+----------+
| Table                 | Op    | Msg_type | Msg_text |
+-----------------------+-------+----------+----------+
| UTM5.discount_periods | check | status   | OK       |
+-----------------------+-------+----------+----------+
1 row in set (0.80 sec)
Вроде как все в порядке.
Делаем бэкап на всякий случай. И перегружаемся.

Все должно запуститься.

Удачи! И не дай Бог вам с этим столкнуться...

Ответить