Биллинговая система Nodeny
23 Ноября 2024, 07:30:54 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Прекращена поддержка версии Nodeny 49
 
   Начало   Помощь Поиск Войти Регистрация  
Страниц: [1] 2
  Печать  
Автор Тема: Ubuntu(БД репликация Master-Slave)+radius+Mikrotik - database query error  (Прочитано 14202 раз)
k291
Старожил
****

Карма: -10
Offline Offline

Сообщений: 455


Просмотр профиля
« : 22 Апреля 2018, 03:38:07 »

Имеется резервный сервер Ubuntu+radius+Mikrotik. БР реплицируется по Master-Slave(резервный сервер).
Настраивают радиус по инструкции. При запросе с Mikrotik`a, ответ:
Цитировать
rad_recv: Access-Request packet from host 217.10.55.66 port 55867, id=216, length=129
Threads: total/active/spare threads = 5/0/5
Waking up in 0.9 seconds.
Thread 4 got semaphore
Thread 4 handling request 0, (1 handled so far)
        NAS-Port-Type = Ethernet
        NAS-Port = 2206959593
        Calling-Station-Id = "1:e4:8d:8c:b8:c6:83"
        Framed-IP-Address = 10.0.1.82
        Called-Station-Id = "dhcp_1_24"
        User-Name = "E4:8D:8C:B8:C6:83"
        User-Password = ""
        NAS-Identifier = "Sap"
        NAS-IP-Address = 217.10.55.66
# Executing section authorize from file /etc/freeradius/sites-enabled/nodeny
+group authorize {
rlm_sql (sql): Reserving sql socket id: 4
[sql]   expand: call radcheck('%{User-Name}') -> call radcheck('E4:8D:8C:B8:C6:83')
rlm_sql_mysql: MYSQL check_error: 1305 received
rlm_sql_getvpdata: database query error
[sql] SQL query error; rejecting user
rlm_sql (sql): Released sql socket id: 4
++[sql] = fail
+} # group authorize = fail
Using Post-Auth-Type Reject
  WARNING: Unknown value specified for Post-Auth-Type.  Cannot perform requested action.
# Executing group from file /etc/freeradius/sites-enabled/nodeny
Delaying reject of request 0 for 1 seconds
Going to the next request
Thread 4 waiting to be assigned a request

Все делаю правильно, повторял действия по инструкции несколько раз. Ответ один и тотже. Сервер MASTER, настроен по аналогии, но все работает как надо.
Подскажите, что не так?
Записан
Cell
NoDeny
Спец
*

Карма: 52
Offline Offline

Сообщений: 1407



Просмотр профиля
« Ответ #1 : 22 Апреля 2018, 16:47:16 »

ну проверьте mysql клиентом с этого таза вызов
call radcheck('E4:8D:8C:B8:C6:83');
Пишет же что в нем ошибка sql
Записан
k291
Старожил
****

Карма: -10
Offline Offline

Сообщений: 455


Просмотр профиля
« Ответ #2 : 23 Апреля 2018, 03:20:55 »

Пробовал.
Вот ответ:
Код:
mysql> CALL radreply('E4:8D:8C:B8:C6:83', 'dhcp_1_24');
+------+-------------------+-------------------+-----------+---+
| NULL | login             | Framed-IP-Address | usr_ip    | = |
+------+-------------------+-------------------+-----------+---+
| NULL | E4:8D:8C:B8:C6:83 | Framed-IP-Address | 10.0.1.82 | = |
+------+-------------------+-------------------+-----------+---+
1 row in set (0,01 sec)

+------+-------------------+-----------------+-----+---+
| NULL | login             | Session-Timeout | 600 | = |
+------+-------------------+-----------------+-----+---+
| NULL | E4:8D:8C:B8:C6:83 | Session-Timeout | 600 | = |
+------+-------------------+-----------------+-----+---+
1 row in set (0,01 sec)

Query OK, 0 rows affected (0,01 sec)
И выдает новый адрес:
Код:
mysql> SELECT get_ip_by_tag('1', 'dhcp_1_saperka24');
+----------------------------------------+
| get_ip_by_tag('1', 'dhcp_1_saperka24') |
+----------------------------------------+
| 10.0.1.201                             |
+----------------------------------------+
1 row in set (0,01 sec)
Радиус запущен. И перезагружал:
Код:
ps aux | grep radi
freerad  25362  0.0  0.1 479884  6184 ?        Ssl  04:15   0:00 /usr/sbin/freeradius
root     25441  0.0  0.0  15476  1024 pts/8    S+   04:16   0:00 grep --color=auto radi

При при таком запросе с консоли, Radius не выдает ошибок:
Код:
root@vps:~# radtest E4:8D:8C:B8:C6:83 '' 127.0.0.1 0 hardpass5
Sending Access-Request of id 243 to 127.0.0.1 port 1812
        User-Name = "E4:8D:8C:B8:C6:83"
        User-Password = ""
        NAS-IP-Address = 127.0.1.1
        NAS-Port = 0
        Message-Authenticator = 0x00000000000000000000000000000000
rad_recv: Access-Reject packet from host 127.0.0.1 port 1812, id=243, length=20
А при дебаге, ошибка sql.
Записан
k291
Старожил
****

Карма: -10
Offline Offline

Сообщений: 455


Просмотр профиля
« Ответ #3 : 23 Апреля 2018, 04:00:26 »

Пробовал перезалить базу вручную через консоль, взяв с рабочего сервера. Результат тот же.
Пере создавал процедуру, проблема осталась.
У человека с форума была подобная проблема, причина в кодировке. Менял кодировку, вручную писал правила. Не помогло.
« Последнее редактирование: 23 Апреля 2018, 04:22:47 от k291 » Записан
ser970
NoDeny
Спец
*

Карма: 70
Offline Offline

Сообщений: 1323

262462619
Просмотр профиля Email
« Ответ #4 : 23 Апреля 2018, 08:00:01 »

из радиуса
call radcheck('%{User-Name}') -> call radcheck('E4:8D:8C:B8:C6:83')
и из консоли
CALL radreply('E4:8D:8C:B8:C6:83', 'dhcp_1_24');

вам не кажется то разные ?

попробуйте из консоли мускула
call radcheck('E4:8D:8C:B8:C6:83');
Записан
k291
Старожил
****

Карма: -10
Offline Offline

Сообщений: 455


Просмотр профиля
« Ответ #5 : 24 Апреля 2018, 21:22:21 »

Вот вывод с резервного сервера, на котором ошибка:
Код:
mysql> call radcheck('E4:8D:8C:B8:C6:83');
ERROR 1305 (42000): PROCEDURE nodeny.radcheck does not exist
А это с центрального:
Код:
mysql> call radcheck('E4:8D:8C:B8:C6:83');
+------+-------------------+--------------------+-------+----+
| NULL | login             | Attribute          | Value | := |
+------+-------------------+--------------------+-------+----+
| NULL | E4:8D:8C:B8:C6:83 | Cleartext-Password |       | := |
+------+-------------------+--------------------+-------+----+
1 row in set (0,01 sec)

Query OK, 0 rows affected (0,01 sec)

Дело в том, что между центральным и резервным серверном, настроина репликация Master-Slave. + делал перенос дампа базы. А в ответ "PROCEDURE nodeny.radcheck does not exist"

Пересоздал процедуру, теперь есть ответ на резервном.
« Последнее редактирование: 24 Апреля 2018, 22:09:29 от k291 » Записан
ser970
NoDeny
Спец
*

Карма: 70
Offline Offline

Сообщений: 1323

262462619
Просмотр профиля Email
« Ответ #6 : 24 Апреля 2018, 21:31:51 »

все зависит от тогда как настраивали и делали и зарворачивали бекап....

з.ы.ну так создайте процедуру ...
Записан
Redmen
NoDeny
Ветеран
*

Карма: 62
Offline Offline

Сообщений: 546


Подяку в КАРМУ


Просмотр профиля WWW
« Ответ #7 : 24 Апреля 2018, 21:43:05 »

если делал бекап скриптом из поставки с нодени, то он дампит только таблицы и въюхи!
вот инструкция : https://ruhighload.com/Как+настроить+mysql+master-slave+репликацию%3f

только перед 4. шагом слей дамп с мастера на слейв, я использую scp
Код:
scp /directory1/filename1 usern@destination_host:/directory2/filename2
Записан

Приймаю подяку у вигляді карми... та/або грошей Подмигивающий
t.me/MrMethod
Redmen
NoDeny
Ветеран
*

Карма: 62
Offline Offline

Сообщений: 546


Подяку в КАРМУ


Просмотр профиля WWW
« Ответ #8 : 24 Апреля 2018, 21:47:26 »

или на мастеере сделай експорт всех функций и процедур, и импортируй их на слейве
перед импортом  на слейве нужно выполнить
Код:
ALTER DATABASE nodeny CHARACTER SET utf8 COLLATE utf8_general_ci;
Записан

Приймаю подяку у вигляді карми... та/або грошей Подмигивающий
t.me/MrMethod
ser970
NoDeny
Спец
*

Карма: 70
Offline Offline

Сообщений: 1323

262462619
Просмотр профиля Email
« Ответ #9 : 24 Апреля 2018, 21:48:57 »

может проще было делать дамп с -R
Записан
Redmen
NoDeny
Ветеран
*

Карма: 62
Offline Offline

Сообщений: 546


Подяку в КАРМУ


Просмотр профиля WWW
« Ответ #10 : 24 Апреля 2018, 22:10:09 »

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

db1<=>db2->db3
master1<=>master2->slave3(delay 12h)
1 и 2 мастер мастер (основной сервер 1, второй на горячую замену)
3 - слейв  с задержкой в 12 часов

+ ко всему мониторинг

если упал 1, на его место стает 2, когда подняли первый,  он бегом с восстанавливается, и лишь за тем он становится обратно 1;
если мастера не упали  а посыпались кретические таблицы но мускул работает, тут приходит на помощь слейв с задержкой =
мониторинг трубит проблему и остонавливает репликацию на мастерах, и у вас есть 11.5 часов на поднятие мастеров с слейва (для быстроты слейв 3 стает мастером а мастер 1 стает слейвом)

минус такой схемы = слейв пишет с мастер2, а что если он упадет ( но мастер2 резервный и не нагружений, поетому риск его падения минимален)

успехов
Записан

Приймаю подяку у вигляді карми... та/або грошей Подмигивающий
t.me/MrMethod
k291
Старожил
****

Карма: -10
Offline Offline

Сообщений: 455


Просмотр профиля
« Ответ #11 : 25 Апреля 2018, 23:08:44 »

Всем спасибо!
Действительно, при переносе БД не перенес процедуры.
Помогло:
Код:
mysqldump --routines -R -u root -p nodeny > nodeny.sql
А именно "--routines -R"
Если надо перенести только процедуры и тригеры(Полезно когда таблица уже созданы):
Код:
mysqldump --routines -R --no-create-info --no-data --no-create-db --skip-opt -u root -p nodeny > nodeny_procedury.sql

Импортируется дамп как обычная БД:
Цитировать
mysql -u root --password='hardpass' nodeny < nodeny.sql
Записан
ser970
NoDeny
Спец
*

Карма: 70
Offline Offline

Сообщений: 1323

262462619
Просмотр профиля Email
« Ответ #12 : 25 Апреля 2018, 23:56:19 »

только 


Цитировать
mysqldump --routines -R -u root -p nodeny > nodeny.sql

-R, --routines      Dump stored routines (functions and procedures). это одно и тоже

зачем два раза указывать ?

и если куда то переносить надо то сразу и в архив

где то так
mysqldump  -R -u root -p nodeny  | gzip > nodeny.sql.gz 
Записан
Redmen
NoDeny
Ветеран
*

Карма: 62
Offline Offline

Сообщений: 546


Подяку в КАРМУ


Просмотр профиля WWW
« Ответ #13 : 26 Апреля 2018, 08:53:42 »

Код:
-R, --routines      Dump stored routines (functions and procedures).
не знал, спасибо
Записан

Приймаю подяку у вигляді карми... та/або грошей Подмигивающий
t.me/MrMethod
ser970
NoDeny
Спец
*

Карма: 70
Offline Offline

Сообщений: 1323

262462619
Просмотр профиля Email
« Ответ #14 : 26 Апреля 2018, 10:27:56 »

можно сделать чуть красивее...

в my.cnf
в секцию
[mysqldump]
routines=TRUE
Записан
Страниц: [1] 2
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.20 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!