Перейти к содержимому
Local
mac

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

Рекомендованные сообщения

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


 

SELECT
  users.login, users.password, # login;password;
  users.ip, nethosts.mac, # IP;MAC;
  users.tariff, users.cash, users.Credit, users.CreditExpire, # tariff;cash;credit limit;credit expire date;
  city.cityname, # city;
  street.streetname, # street;
  build.buildnum, # build;
  apt.entrance, apt.floor, apt.apt, # entrance;floor;apt;
  phones.phone, phones.mobile, # phone;mobile;
  emails.email, # email;
  userreg.address, # address;
  realname.realname, # realname;
  contracts.contract, # contract;
  users.AlwaysOnline, users.Down, users.Passive  # AlwaysOnline state;Down state;Passive state
FROM
  city, street, build, apt, address, users, nethosts, phones, emails, userreg, realname, contracts
WHERE
  build.streetid = street.id AND
  apt.buildid = build.id AND
  address.aptid = apt.id AND
  address.login = users.login AND
  nethosts.ip = users.IP AND
  userreg.login=users.login AND
  realname.login = users.login AND
  phones.login=users.login AND
  emails.login = users.login AND
  userreg.login = users.login AND
  contracts.login = users.login
INTO OUTFILE '/tmp/ubilling.exp'
FIELDS TERMINATED BY ';'
ENCLOSED BY ''
LINES TERMINATED BY '\n'

 


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

Изменено пользователем mac

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

 

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

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

Изменено пользователем l1ght

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

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

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

 

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Уже есть готовый 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`)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

`users`.`login`, `password`, `ip`,
Изменено пользователем mac

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

 

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

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

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

1. По идее до.

2. Да.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Всім привіт.

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

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

Изменено пользователем sirko.n

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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.

Изменено пользователем sirko.n

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, sirko.n сказал:

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


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.

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

З php кодом в мене не дуже ((

Якісь варіки крім "руками" ще можливі?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
14 минут назад, sirko.n сказал:

З php кодом в мене не дуже (( 

Якісь варіки крім "руками" ще можливі? 

Відсипати кілограм грошей, тим в кого зі всім "дуже".

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Мабуть так і зроблю. Дякую.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

  • Похожие публикации

    • Автор: dycost
      Такая проблема.
      Был написан модуль для получения mac абонента с порта коммутатора. Модуль перестал работать после обновления биллинга. Обновлялся точно не скажу с какого релиза, ориентировочно 0.8.9 или 0.9.0.
       
      Суть вот в чем.
      Модуль использует скрипт на питоне вызываемый через popen, в принципе весь код вот:
      if (cfr('GET_MAC')) { $inputs = wf_TextInput('switch_address', __('Enter switch address'), '', true, '10'); $inputs.= wf_TextInput('switch_port', __('Enter switch port'), '', true, '10'); $inputs.= wf_Submit(__('Get')); $form = wf_Form("", 'POST', $inputs, 'glamour'); show_window(__('Get mac address from switch port'), $form); if (isset ($_POST['switch_address'])) { $process = popen(escapeshellcmd('/usr/local/www/apache22/data/billing/modules/general/get_mac/get_mac.py ' . $_POST['switch_address'] . ' ' . $_POST['switch_port']), "r"); $mac = fread($process, 2096); show_window(__('Active mac address: '), $mac); pclose($process); }; } else { show_error(__('Access denied')); } Питон потому, что парсинг на php я не осилил..
      из питона вызывается snmpwalk через  popen (да, такая вот матрешка), собственно для получения mac.
      До обновления все работало, и сейчас если выполнить  из консоли что-то типа такого:
      <?php $process = popen(escapeshellcmd('/usr/local/www/apache22/data/billing/modules/general/get_mac/get_mac.py 172.16.0.182 2', "r"); $mac = fread($process, 2096); echo "$mac"; ?> то все работает.
      При выполнении из биллинга питон не создает процесс-потомок snmpwalk.
      Какие настройки php или биллинга копать?
    • Автор: init
      Добрый день! Появилась необходимость обновить Ubilling с версии 0.7.2 до текущей, как бы это сделать быстро и безболезненно?
      Я так понимаю надо с версии на версию прыгать? или есть какой-то инструмент который инкрементно обновит до текущей версии?
      Благодарю
    • Автор: 005836
      Помогите пожалуйста.
      ОС freebsd 12/freeradius3/mikrotik os 5.24
      Настраивал Ubilling + Mikrotik pppoe по радиусу
      В дебаг режиме радиус говорит

       
    • Автор: superb
      Ребята, нужна помощь админа. После пропадания електричество перестал стартовать mysql на билинге абилс. Система freebsd 7.2. Пишите в личку сразу номер телефона, будет быстрее. Хорошо отблагодарю, спасибо.
    • Автор: nightfly
      Мы знаем, всем уже надоело ждать. Вот, первый в этом году стабильный релиз Ubilling 0.9.5 rev 6653 syoubu da
       
      Из основных изменений
      Изменения в структуре БД. см. дамп. alter.ini: новые опции FWTBT_* управляющие знанием о том, по ком звонит колокол. alter.ini: новая опция CALLSHIST_ENABLED включающая модуль «История звонков». alter.ini: новые необязательные опции PON_UONU_USER_BY_MAC_SEARCH_* управляющие возможностью поиска пользователя по МАС при регистрации ONU из «неизвестных ONU». alter.ini: новая опция IPCHANGE_ARP_CLEANUP указывающая на необходимость очистки от старых arp-записей при смене IP пользователя. alter.ini: новая опция STICKY_REVELATIONS_ENABLED включающая механику откровений. alter.ini: новая опция ISHIMURA_ENABLED включающая планетарный потрошитель Ишимура. alter.ini: новая опция PONCPE_CONTROLS_ENABLED включающая отображение элементов управления для присваивания PON CPE в профиле пользователя. alter.ini: новая необязательная опция PONCPE_TARIFFMASK указывающая маску имени тарифа, для пользователей, для которых требуется учет PON CPE. userstats.ini: добавлена новая необязательная опция AF_TARIFF_ALLOW_ANY позволяющая включить возможность заморозки счета из личного кабинета не взирая на тарифный план абонента. userstats.ini: новая опция ISHIMURA_ENABLED включающая использование трафика Ишимуры при показе статистики. userstats.ini: новая необязательная опция MG_TARIFFSALLOWED при помощи которой можно ограничить тарифы на которых разрешено использование Megogo. Модуль «Планирование работ»: исправлена ошибка, появляющейся при фильтра заявок «Показать задачи только для меня» Модуль «Печать документов»: исправлена работа макроса {CONTRACT} при использовании не уникальных номеров договоров. Модуль «Возможности подключений»: добавлена текстовая пометка о телепатической угаданности пользователя, для упрощения фильтрования. Модуль «Отчет по подключениям»: в статистику мертвых пользователей добавлен раздельный счетчик замороженных. Модуль «Учет зарплат»: для зарплатных ведомостей реализована возможность просмотра/печати без графиков. Модуль SMSZilla: для направления «Интернет» добавлен фильтр активности пользователя. Модуль «Сети и услуги»: из модуля «Смена IP» портирована статистика использования адресов. Модуль «Работники»: добавлена возможность ограничивать сумму пополнения абонентов в месяц Модуль «Финансовый отчет»: исправлена сортировка в сводке за год. Модуль «Отчет по подключениям»: селектор года теперь сохраняет свое состояние. Модуль «Финансовый отчет»: селектор года теперь сохраняет свое состояние. Модуль «Импорт банковских выписок»: оптимизировано быстродействие, возможно исправлена проблема повторного внесения некоторых платежей. Новый модуль По ком звонит колокол: позволяет получать near real-time оповещения о входящих звонках. Модуль [По ком звонит колокол]: исправлены дубликаты отображения входящих звонков Модуль «Текущий кеш FDB»: добавлена возможность навигации из модуля в профиль свитча. askozianum: теперь также логирует входящие звонки в базу. Новый модуль «История звонков»: позволяет просматривать предыдущие входящие звонки ваших абонентов. Модуль Учет зарплат: добавлена возможность отметить для выплаты все работы одним кликом. Модуль «Планирование работ»: исправлена ошибка приводившая к невозможности удаления задач в некоторых ситуациях. Модуль «Телефонный справочник»: теперь использует JQuery Data Tables для показа списка контактов. Модуль «Смена IP»: теперь также умеет чистить за собой старые arp записи при смене IP. Модуль «Объявления»: полностью переделан код, скорость загрузки модуля увеличилось в много раз. Модуль «Персональные заметки и напоминания»: добавлена возможность осыпать всех откровениями. Модуль «Удаление пользователя»: теперь при удалении пользователя также очищаются его детали подключения. Модуль SMSZilla: исправлена работа фильтра «денег не хватит на следующий месяц». Модуль «TrinityTV»: добавлен функционал привязки устройств из личного кабинета абонента. Модуль «Отчет по задачам»: исправлен показ дат в печати. Модуль Склад: история бронирования теперь позволяет нормально отслеживать историю конкретной брони. Модуль «Склад»: теперь умеет рассылать сотрудникам зарезервированные на них ТМЦ скопом, для сверки того что у них в багажниках. Модуль «Статистика по трафику»: теперь также агрегирует при показе нативный трафик коллекторов с трафиком Ишимуры. Модуль «Онлайн»: теперь также агрегирует при показе нативный трафик коллекторов с трафиком Ишимуры. Понизатор: добавлена возможность поиска пользователя(логина и IP) по МАС при регистрации ONU из «неизвестных ONU». Так же для тех, кто использует ONU с NAT, у которых МАС WAN-подключения изменяется на какое-то значение добавлена возможность инкремента/декремента МАС адреса ONU. Модуль «Права администраторов»: добавлена возможность на ходу перелогиниваться в режиме призрака, под другими администраторами. Модуль «Состояние системы»: добавлена возможность уничтожения отдельных ключей кэша. RemoteAPI: добавлен новый вызов warehousetelegram для рассылки зарезервированных ТМЦ. Глобально: в диалогах выбора года расширен диапазон доступных для выбора лет. Глобально: исправлен фильтр ввода email, теперь email может содержать тире Кабинет пользователя: подавлены попытки Google Chrome пытаться автоматически переводить страницу. Кабинет пользователя: исправлены проблемы со входом по логину/паролю. Кабинет пользователя: модуль «Статистика по трафику» теперь также агрегирует нативный трафик коллектора с трафиком Ишимуры при показе. Кабинет пользователя: модуль «Megogo» теперь умеет ограничивать использование сервиса относительно тарифов пользователя. OpenPayz: добавлен фронтэнд для работы с ПриватБанком «PRIVATX_STRICT», призванный обеспечить слегка противоположный фронтэнду «PRIVATMULTI» функционал. OpenPayz: фронтенд «IBOX» - добавлена отдача информации по пользователю UBinstaller: собарны бинарные пакеты для установки биллинга на FreeBSD 12.0 amd64. UBinstaller: для конфигуратора NAS на rscriptd собраны бинарные пакеты для FreeBSD 12.0 amd64. UBinstaller: на мороз выкинуты все неактуальные и не поддерживаемые на данный момент релизы FreeBSD.  
      Также вы можете:
      Почитать полный чейнджлог: http://wiki.ubilling.net.ua/doku.php?id=changelog2019#rev_6653
      Ознакомиться с рекомендациями к обновлению: http://wiki.ubilling.net.ua/doku.php?id=relnotes#section095
      Потрогать руками демку: http://ubilling.net.ua/?module=fnpages&pid=demo
       

×