Jump to content

Объединение баз данных двух биллингов Ubilling


Recommended Posts

Естественно, ip сети и города - разные, версии Ubilling - одинаковые.
Собственно, как это сделать максимально просто и безопасно?
 
То, до чего сам додумался - это использовать "Модуль Миграция 2"
Для это планирую сделать экспорт нужных полей из базы данных с помощью запроса

  Reveal hidden contents


По sql запросу вопрос прежде всего к уважаемому nightfly : оттуда ли (таблицы, поля) я беру значения?

Edited by mac
Link to post
Share on other sites

с такими вопросами....

ручками всё перенесите, вы ж наебнете себе всё без понимания что вы и куда суете

 

имена табличек похожи на правду, пробуйте на виртуалках, сдампите себе БД с первого и пробуйте перенести данные со второго

попутно проверяя всё ли в БД занеслось как надо и не ахуел ли старгейзер от таких манипуляций

Edited by l1ght
Link to post
Share on other sites

Да, конечно на виртуалке испытаю сначала.

Просто глубоко не копал, что и где лежит.

Имена полей и таблиц - вроде как адекватны назначению.

Но могут же быть, типа, legacy, и не использоваться в новых версиях убилинга

В частности, смущает таблица users (оч много столбцов)

Link to post
Share on other sites
  On 11/13/2017 at 4:00 PM, mac said:

Да, конечно на виртуалке испытаю сначала.

Просто глубоко не копал, что и где лежит.

Имена полей и таблиц - вроде как адекватны назначению.

Но могут же быть, типа, legacy, и не использоваться в новых версиях убилинга

В частности, смущает таблица users (оч много столбцов)

users это то с чем работает старгейзер

 

почитайте FAQ, посмотрите видео в вики есть ссылочки

думаю станет понятнее, а вообще неиспользуемых табличек у нас нет

все важны и все нужны, стартовая позиция собрать все логины и IP из таблички users

это то по чему есть связь по всем остальным таблицам

соотвественно бабло (cash), кредит, имя тарифа, всё остальное живет в других табличках

Link to post
Share on other sites

Уже есть готовый SQL запрос выборки всех необходимых данных. Сейчас немного подкорректирую под миграцию 2 и вперед, если Вы желаете так переносить. А вообще вариантов масса.

Link to post
Share on other sites
  On 11/13/2017 at 6:59 PM, Pautiina said:

Уже есть готовый SQL запрос выборки всех необходимых данных. Сейчас немного подкорректирую под миграцию 2 и вперед, если Вы желаете так переносить. А вообще вариантов масса.

 

Ну что-то типа такого:

            SELECT 
                    `users`.`login`, `ip`, `mac`, `Tariff`,  `Cash`,  `Credit`, `CreditExpire`, 
                    `cityname`, `streetname`, `buildnum`, `entrance`, `floor`, `apt`,
                    `phones`.`phone`, `mobile`, `emails`.`email`, 
                    concat(`cityname`, ' ', `streetname`, ' ', `buildnum`, IF(`apt`, concat('/',`apt`), '')) AS `fulladress`,
                    `realname`.`realname`, `contract`, `AlwaysOnline`, `Down`, `Passive`                   
            FROM `users` LEFT JOIN `nethosts` USING (`ip`)
                    LEFT JOIN `realname` ON (`users`.`login`=`realname`.`login`)
                    LEFT JOIN `address` ON (`users`.`login`=`address`.`login`)
                    LEFT JOIN `apt` ON (`address`.`aptid`=`apt`.`id`)
                    LEFT JOIN `build` ON (`apt`.`buildid`=`build`.`id`)
                    LEFT JOIN `street` ON (`build`.`streetid`=`street`.`id`)
                    LEFT JOIN `city` ON (`street`.`cityid`=`city`.`id`)
                    LEFT JOIN `phones` ON (`users`.`login`=`phones`.`login`)
                    LEFT JOIN `contracts` ON (`users`.`login`=`contracts`.`login`)
                    LEFT JOIN `emails` ON (`users`.`login`=`emails`.`login`)
Link to post
Share on other sites

l1ght, Pautiina, большое спасибо за советы и решения!

Pautiina, в вашем запросе в

`users`.`login`, `ip`,

пропущен `password`. Правильнее будет

`users`.`login`, `password`, `ip`,
Edited by mac
Link to post
Share on other sites

Там еще данные по платежам, начислениям АП, нетхосты и куча потрохов других есть. Если логины юзеров, сети, и прочее такое не перекрываются, то в принципе, можно пробовать переносить данные в лоб. Проблема будет, только с адресами из "город-улица-дом", так как там куча связей по id, и хорошо бы писать для этого какой-то "заселятор" на пхп. Ненавижу такие штуки.

Link to post
Share on other sites

Ничего (логины юзеров, сети, и прочее такое) не перекрывается.

Т.к. сначала данные были в одном биллинге, потом их разделили на 2 (ломать - не строить).

Дальше они жили своей жизнью. И теперь из-за автоматизации платежей (opayz) их нужно объединить.

Nightfly, Ваше мнение понял, заселятор я не осилю, поэтому - или миграция, или вручную.

Link to post
Share on other sites

 

 

  On 11/14/2017 at 11:05 AM, mac said:
Nightfly, Ваше мнение понял, заселятор я не осилю, поэтому - или миграция, или вручную.

Ну по идее, какая-то из миграций должна пытаться угадывать, чего там делать с адресами. Точно не уверен - отродясь ими не пользовался. Кстати экспорт в ЦСВ-шку вроде был в "мастере отчетов".

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

Link to post
Share on other sites
  On 11/14/2017 at 7:24 AM, mac said:

 

l1ght, Pautiina, большое спасибо за советы и решения!

Pautiina, в вашем запросе в

`users`.`login`, `ip`,

пропущен `password`. Правильнее будет

`users`.`login`, `password`, `ip`,

Пусть будет так :)

Link to post
Share on other sites

Появились новые вопросы по "Миграции 2"

1. Когда создавать недостающие тарифы - до или после миграции?

2. В wiki есть рекомендация выключить stargazer перед миграцией. Но тогда перестает работать ubilling. Это как раз тот случай, когда нужно использовать опцию NOSTGCHECKPID ?

Link to post
Share on other sites
  • 1 year later...

Всім привіт.

З*єдную два убілла.
Мігрігую по вікі "Міграція 2" але щось не прьот. Де косячу підскажіть. Послідовність така: 1. Роблю вибірку з бази і зберігаю в csv. Добавляю в новий білл руцями місто, мережі, дхцп, НАС, тарифи. Далі csv в "міграцію 2". БАчу "First of imported data rows" з данними, далі "Select data columns and their values" в таргеті міняю мережу і тицяю кнопу. Бачу таблоід з юзерами де все гут. Тушу СТГ і тицю "Єс процесс регістрації юзерів". Далі бачу "DEBUG" з усіма юзерами що мігрують і в кінці php скипт. Копіпасс в php консоль і запускаю. Далі цей же скріпт кольоровий і в "Console debug data" порожньо.

Старт СТГ. Заходжу в онлайн а там нема ніхто, з нових мається на увазі.

Edited by sirko.n
Link to post
Share on other sites

При спробі на "бойовому" сервері  видало щось новеньке
 

Fatal error: Uncaught Error: Call to undefined function mysql_num_rows() in /usr/local/www/apache24/data/billing/modules/general/sqlconsole/index.php(220) : eval()'d code:16 Stack trace: #0 /usr/local/www/apache24/data/billing/modules/general/sqlconsole/index.php(220): eval() #1 /usr/local/www/apache24/data/billing/index.php(67): include_once('/usr/local/www/...') #2 {main} thrown in /usr/local/www/apache24/data/billing/modules/general/sqlconsole/index.php(220) : eval()'d code on line 16

Перепровірив. Вставляв код в консоль php.

Edited by sirko.n
Link to post
Share on other sites
  On 2/22/2019 at 9:27 PM, sirko.n said:

При спробі на "бойовому" сервері  видало щось новеньке
 

Fatal error: Uncaught Error: Call to undefined function mysql_num_rows() in /usr/local/www/apache24/data/billing/modules/general/sqlconsole/index.php(220) : eval()'d code:16 Stack trace: #0 /usr/local/www/apache24/data/billing/modules/general/sqlconsole/index.php(220): eval() #1 /usr/local/www/apache24/data/billing/index.php(67): include_once('/usr/local/www/...') #2 {main} thrown in /usr/local/www/apache24/data/billing/modules/general/sqlconsole/index.php(220) : eval()'d code on line 16

Перепровірив. Вставляв код в консоль php.

Expand  

несовместимость старых версий пхп с новыми

надо код адаптировать под новые реалии mysqli_*

Link to post
Share on other sites
  • 1 month later...

Тоже пришлось выгрузить юзеров из убиллинга в другой биллинг (продали оператора).

получилось что то типа такого

SELECT 
users.login as Login, contracts.contract as Номер_Договора, realname.realname as ФИO,
concat(city.cityname,' ',street.streetname,' ',build.buildnum,'/',apt.apt,' подъезд ',apt.entrance,' этаж ',apt.floor) 
as Адрес_подключения,users.tariff as Тариф,phones.phone as Телефон,phones.mobile as Мобилный,passportdata.birthdate
as Дата_Рождения,concat(passportdata.passportnum,' ',passportdata.passportwho,' ',passportdata.passportdate,' ',passportdata.pcity,' ',passportdata.pstreet,' ',passportdata.pbuild,'-', passportdata.papt) 
as Pass_Data,op_customers.virtualid as Платежный_ID,users.ip as IP,nethosts.mac as MAC,users.cash as Баланс

FROM users join contracts on users.login=contracts.login join realname on realname.login=users.login 
join phones on users.login=phones.login join op_customers on users.login=op_customers.realid 
join nethosts on users.ip=nethosts.ip left join passportdata on users.login=passportdata.login 
left join address on address.login=users.login 
left join apt on address.aptid=apt.id 
left join build on build.id=apt.buildid 
left join street on street.id=build.streetid 
left join city on city.id=street.cityid order by realname.realname;

 

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By camchatix
      Добрий день,
      створили запасний NAS із зайвою хромосомою, все працює але коли треба вбити сесію користувача - то у списку NAS серверів лише один (той що основний)
      переназначити швидкість теж не можу
      я так розумію пакети CoA Disconnect, CoA connect, PoD - ідуть на IP адресу старого NAS ?
    • By grach_witch_cheese
      Вітаю, колеги!
      Маю наступну схему:
      DHCP-сервер: Accel-PPP (IPoE) DHCP-Relay: MikroTik RADIUS: Запущений безпосередньо на сервері uBilling Зараз авторизація абонентів здійснюється за MAC-адресою, але планується перехід на авторизацію через Option 82.
      У документації uBilling наведені приклади конфігурацій, коли DHCP-сервер працює локально (на самому uBilling) і містить відповідні шаблони для обробки Option 82.
      Однак немає чіткої інформації про використання Option 82 при віддаленому DHCP-сервері, зокрема, коли Accel-PPP використовується як DHCP-сервер у режимі remote та налаштований через Купаген.
      Питання:
      Чи можливо використовувати Accel-PPP як віддалений DHCP-сервер з авторизацією через Option 82? Якщо так, то де відбувається парсинг значень Remote-ID і Circuit-ID? Де в цьому випадку мають зберігатися шаблони для Option 82? Буду вдячний за роз'яснення або посилання на відповідні приклади.
    • By nightfly
      Ubilling 1.5.2 rev 9302 Book of Endings
       
      Зміни в структурі БД. alter.ini: нова опція FASTPROFITCALC_ENABLED, що вмикає швидкий підрахунок прибутку. alter.ini: нова необов'язкова опція KARMA_IN_PROFILE що вмикає показ карми в профілі користувача. alter.ini: нова опція SWITCHES_AUTH_ENABLED, що вмикає довідник даних авторизації пристроїв. alter.ini: нова опція PON_SCRIPTS_ENABLED, що вмикає підтримку скриптів OLT в ПОНізаторі. alter.ini: нова опція PON_ONU_FDB_SELFFILTER, що вмикає фільтр MAC-ів при відображенні FDB за ONU. alter.ini: нова опція USERBYIP_ENABLED, що вмикає виклик userbyip в RemoteAPI. alter.ini: пачка нових опцій PB_FASTURL_*, що керують поведінкою модулю відсилання коротких посилань на оплату. Модуль PONizer: виправлена помилка зникнення PON інтерфейсів при опиті BDCOM GP3600 Модуль “Профіль користувача”: для опису плагінів профілю та оверлеїв на кшталт “чорної магії” тепер опційно можливо вказувати link_target. Модуль “Панель задач”: для опису елементів панелі задач, тепер опційно можна вказувати LINK_TARGET. Модуль Записи телефонних розмов: вирішено проблеми швидкодії, при перегляді списку записів дзвінків. Модуль “Записи телефонних розмов”: більше не призводить до вичерпання пам'яті процесу, при перегляді великих архівів дзвінків. Модуль “Записи телефонних розмов”: новий аудіо-плеєр для прослуховування записів з візуалізацією аудіо-хвилі. Модуль “Пошук оплат”: реалізовано можливість швиденького підрахунку прибутку по обраних чекбоксами платежах. Модуль УКВ: реалізовано можливість швиденького підрахунку прибутку по обраних чекбоксами платежах. Модулі Мапа обладнання та користувачів: трішки вичищено код. Ліпше не стало. Модуль “Мапа будинків”: поле пошуку при розташуванні будинку, тепер попередньо заповнено локацією, при переході за посиланням “розташувати на мапі”. Модуль “Панель задач”: опція TB_QUICKSEARCH_INLINE змінила свою поведінку, та може тепер приймати значення 0|1|2. Модуль “Звіт по трафіку”: виправлено проблему відображення графіків OphanimFlow для NAS на роздільних здатностях менше ніж FullHD. Кабінет користувача: в модулі “Відеоспостереження” відображення попереднього перегляду каналів користувача, стало трішки притомнішим. Сховище зображень: трішки покращено поведінку форми завантаження. RemoteAPI: новий виклик onusigcompressor, що радикально стискає розпухаючі дані історії сигналів ONU. RemoteAPI: новий виклик pbxmonrefill, що оновлює кеш записів телефонних розмов. RemoteAPI: новий виклик userbyip, що повертає дані про користувача за його IP. OpenPayz: в бекенді та фронтенді platon виправлено проблему диких заокруглень, при вказанні зовнішньої комісії.  
      Повний чейнджлог
      Оновлена демка
       

    • By ppv
      Після оновлення до 1.5.1 не відображаються сигнали на
      OLT BDCOM P3310B (Device version10.1.0B)

      та
      P3608-2TE (Firmware Version10.1.0E). 

      3310C та P3608B ніяких проблем немає, знімає все добре. 
      З GPON3600-8 все зрозуміло будуть виправлення в Ubilling: 1.5.2.
       
      Може в когось було щось подібне? Хочу знати куди копати.
    • By mac
      Глюк в тому, що один (так - тільки один) mac адрес onu існує в білінгу у вигляді строки. Це трохи заважає.
      olt - bdcom gepon.
      Наскільки зрозумів, це виключно проблема реалізації snmpwalk у freebsd, де snmpwalk може на свій розсуд віддати mac адресу не як hex-string, а як звичайний string.
      Можливо snmpwalk тригериться на якомусь символі, мені невідомо.
       
      # tcpdump -vv -i em0 udp port 161 and host olt and host ub | grep "3320.101.10.4.1.1.241 ... olt.snmp > ub.47940: [udp sum ok] { SNMPv2c C="*****" { GetResponse(44) R=93278354 E:3320.101.10.4.1.1.241="8LO"W*" } } ub.47940 > olt.snmp: [udp sum ok] { SNMPv2c C="*****" { GetNextRequest(34) R=93278355 E:3320.101.10.4.1.1.241 } } snmpwalk -c***** -v2c -t5 olt .1.3.6.1.4.1.3320.101.10.4.1.1 SNMPv2-SMI::enterprises.3320.101.10.4.1.1.241 = STRING: "8LO\"W*" snmpwalk -Ox -c***** -v2c -t5 olt .1.3.6.1.4.1.3320.101.10.4.1.1 SNMPv2-SMI::enterprises.3320.101.10.4.1.1.241 = Hex-STRING: 38 4C 4F 22 57 2A  
      Це стосується таких параметрів у snmp конфізі bdcom
       
      [signal] MACINDEX=".1.3.6.1.4.1.3320.101.10.4.1.1" [misc] ONUINDEX=".1.3.6.1.4.1.3320.101.11.1.1.3"  
      За для усунення глюку спробував трошки змінити код і завдати тип snmp параметру явно у ./api/libs/api.ponbdcom.php у function collect()
      Це працює. Мабуть станеться у нагоді:
       
      # diff api.ponbdcom.php{.new,.bak} 37c37 < $onuIndex = $this->snmp->walk('-Ox ' . $oltIp . ':' . self::SNMPPORT, $oltCommunity, $onuIndexOid, self::SNMPCACHE); --- > $onuIndex = $this->snmp->walk($oltIp . ':' . self::SNMPPORT, $oltCommunity, $onuIndexOid, self::SNMPCACHE); 91c91 < $macIndex = $this->snmp->walk('-Ox ' . $oltIp . ':' . self::SNMPPORT, $oltCommunity, $macIndexOID, self::SNMPCACHE); --- > $macIndex = $this->snmp->walk($oltIp . ':' . self::SNMPPORT, $oltCommunity, $macIndexOID, self::SNMPCACHE);  
      P.S. Створив тему, а зараз міркую: а може це глюк у ПЗ olt. Оновлю фірмваре olt та перевірю...
       

×
×
  • Create New...