Просмотр Исходного

h2. Общие сведения:

При миграции с 4го биллинга сначала мы экспортируем все данные 4го биллинга, а потом загружаем их в порядке очереди.

*Важно\! Скрипты импорта и экспорта стараются быть максимально информативными. Читайте их вывод и обо всех проблемах сообщайте в тех. поддержку.*


h2. Порядок импортирования:

Просто для ознакомления. Ничего в этом пункте делать не нужно
{code}
migrate_card_series
migrate_cards
migrate_ippool
migrate_switch
migrate_nas
migrate_usluga
migrate_tariff
migrate_tariff_usluga
migrate_abonents
migrate_users_usluga
{code}

h2. Выполнение миграции (пошаговое)

*Шаг 1. Подготовка к миграции*
Открываем порт для доступа к БД в 4й версии
Допустим IP биллинга 5й версии 2.2.2.2.
Выполняем в консоли биллинга 4й версии
{panel}
iptables \-I INPUT \-s 2.2.2.2 \-p tcp \--dport 3050 \-j ACCEPT
iptables \-I OUTPUT \-d 2.2.2.2 \-p tcp \--sport 3050 \-j ACCEPT
{panel}
Из консоли получаем пароль доступа к БД биллинга 4й версии:
{panel}
grep ISC_PASSWORD /etc/ics/ics.conf
\#вывод ISC_PASSWORD='servicem'
{panel}
В нашем случае пароль это servicem

*Шаг 2. Удаляем старый карты оплаты из демо БД (5 версия)*
{panel}
sqlexec "delete from cards"
sqlexec "delete from card_series"
{panel}

*Шаг 3. Подготавливаем рабочий каталог для миграции*
{panel}
chroot /app/asr_billing/
/etc/init.d/memcached stop
/etc/init.d/worker stop
cd /root/
mkdir new_migration
cd new_migration/
mkdir csv_output
{panel}

*Шаг 4. Получаем данные из биллинга 4й версии*
Для примера:
IP биллинга: 1.1.1.1
Пароль БД: servicem

{panel}
python /usr/lib/python2.6/site-packages/carbon_migration_scripts/crb4_csv_export/main.pyc 1.1.1.1 servicem
{panel}
Внимательно посмотрите вывод.
Проверьте, что данные выгрузились
{panel}
ll csv_output
{panel}
Вывод буде такой
{code}
итого 772
-rw-r--r-- 1 root root 605262 Сен 16 14:27 abonent.csv
-rw-r--r-- 1 root root 2857 Сен 16 14:27 abonent.csv.cfg
-rw-r--r-- 1 root root 0 Сен 3 15:41 abonent.csv.error
-rw-r--r-- 1 root root 1360 Сен 16 14:27 ip_pull.csv
-rw-r--r-- 1 root root 420 Сен 16 14:27 ip_pull.csv.cfg
-rw-r--r-- 1 root root 0 Авг 20 17:38 ip_pull.csv.error
-rw-r--r-- 1 root root 327 Сен 16 14:27 nas.csv
-rw-r--r-- 1 root root 965 Сен 16 14:27 nas.csv.cfg
-rw-r--r-- 1 root root 0 Июл 24 15:51 nas.csv.error
-rw-r--r-- 1 root root 5188 Сен 16 14:27 pay_card.csv
-rw-r--r-- 1 root root 666 Сен 16 14:27 pay_card.csv.cfg
-rw-r--r-- 1 root root 260 Сен 16 14:27 switch.csv
-rw-r--r-- 1 root root 678 Сен 16 14:27 switch.csv.cfg
-rw-r--r-- 1 root root 0 Июл 24 15:51 switch.csv.error
-rw-r--r-- 1 root root 1912 Сен 16 14:27 tariff.csv
-rw-r--r-- 1 root root 2034 Сен 16 14:27 tariff.csv.cfg
-rw-r--r-- 1 root root 0 Авг 20 17:35 tariff.csv.error
-rw-r--r-- 1 root root 4050 Сен 16 14:27 tariff_usluga.csv
-rw-r--r-- 1 root root 1611 Сен 16 14:27 tariff_usluga.csv.cfg
-rw-r--r-- 1 root root 0 Авг 20 17:35 tariff_usluga.csv.error
-rw-r--r-- 1 root root 112057 Сен 16 14:27 users_usluga.csv
-rw-r--r-- 1 root root 401 Сен 16 14:27 users_usluga.csv.cfg
-rw-r--r-- 1 root root 979 Сен 16 14:27 usluga.csv
-rw-r--r-- 1 root root 1657 Сен 16 14:27 usluga.csv.cfg
-rw-r--r-- 1 root root 0 Авг 20 17:35 usluga.csv.error
{code}
Файлы \*csv.error должны быть с нулевым размером

*Шаг 5. Заносим в БД 5й версии данные сериях карт оплаты*
{panel}
python /usr/lib/python2.6/site-packages/carbon_migration_scripts/file_client/import_csv.pyc csv_output/card_series.csv.cfg csv_output/card_series.csv migrate_card_series
{panel}
Внимательно посмотрите вывод.
Подробно проверяем, что данные в биллинге соответствуют данным из 4й версии (хотя бы пару записей).

*Шаг 6. Заносим в БД 5й версии данные о картах оплаты*
{panel}
python /usr/lib/python2.6/site-packages/carbon_migration_scripts/file_client/import_csv.pyc csv_output/cards.csv.cfg csv_output/cards.csv migrate_cards
{panel}
Внимательно посмотрите вывод.
Подробно проверяем, что данные в биллинге соответствуют данным из 4й версии (хотя бы пару записей).

*Шаг 7. Заносим в БД 5й версии данные о пулах IP*
{panel}
python /usr/lib/python2.6/site-packages/carbon_migration_scripts/file_client/import_csv.pyc csv_output/ip_pull.csv.cfg csv_output/ip_pull.csv migrate_ippool
{panel}
Внимательно посмотрите вывод.
Подробно проверяем, что данные в биллинге соответствуют данным из 4й версии (хотя бы пару записей).

*Шаг 8. Заносим в БД 5й версии данные о коммутаторах*
{panel}
python /usr/lib/python2.6/site-packages/carbon_migration_scripts/file_client/import_csv.pyc csv_output/switch.csv.cfg csv_output/switch.csv migrate_switch
{panel}
Внимательно посмотрите вывод.
Подробно проверяем, что данные в биллинге соответствуют данным из 4й версии (хотя бы пару записей).

*Шаг 9. Заносим в БД 5й версии данные о NAS-ах*
{panel}
python /usr/lib/python2.6/site-packages/carbon_migration_scripts/file_client/import_csv.pyc csv_output/nas.csv.cfg csv_output/nas.csv migrate_nas
{panel}
Внимательно посмотрите вывод.
Подробно проверяем, что данные в биллинге соответствуют данным из 4й версии (хотя бы пару записей).

*Шаг 10. Заносим в БД 5й версии данные об услугах*
{panel}
python /usr/lib/python2.6/site-packages/carbon_migration_scripts/file_client/import_csv.pyc csv_output/usluga.csv.cfg csv_output/usluga.csv migrate_usluga
{panel}
Внимательно посмотрите вывод.
Подробно проверяем, что данные в биллинге соответствуют данным из 4й версии (хотя бы пару записей).

*Шаг 11. Заносим в БД 5й версии данные о тарифах*
{panel}
python /usr/lib/python2.6/site-packages/carbon_migration_scripts/file_client/import_csv.pyc csv_output/tariff.csv.cfg csv_output/tariff.csv migrate_tariff
{panel}
Внимательно посмотрите вывод.
Подробно проверяем, что данные в биллинге соответствуют данным из 4й версии (хотя бы пару записей).

*Шаг 12. Заносим в БД 5й версии данные о тарифных услугах*
{panel}
python /usr/lib/python2.6/site-packages/carbon_migration_scripts/file_client/import_csv.pyc csv_output/tariff_usluga.csv.cfg csv_output/tariff_usluga.csv migrate_tariff_usluga
{panel}
Внимательно посмотрите вывод.
Подробно проверяем, что данные в биллинге соответствуют данным из 4й версии (хотя бы пару записей).

*Шаг 13. Заносим в БД 5й версии данные об абонентах *
{panel}
python /usr/lib/python2.6/site-packages/carbon_migration_scripts/file_client/import_csv.pyc csv_output/abonent.csv.cfg csv_output/abonent.csv migrate_abonents
{panel}
Внимательно посмотрите вывод.
Подробно проверяем, что данные в биллинге соответствуют данным из 4й версии (хотя бы пару записей).

*Шаг 14. Разблокировка пользователей и запуск*
При миграции абоненты будут заблокированы, чтобы они стали разблокированными нужно выполнить команду:
{panel}
python /usr/lib/python2.6/site-packages/python_tools/client_fix_scripts/unblock_after_migration.pyc
{panel}

При этом скрипт может во время работы завершиться некорректно. Нужно будет запустить его заново.
Корректное завершение выглядит так:
{code}
2015-12-25 14:20:18,637 - worker - unblock_after_migration - INFO - Разблокирую:2271
2015-12-25 14:20:18,662 - worker - unblock_after_migration - INFO - Разблокирую:2272
2015-12-25 14:20:18,676 - worker - unblock_after_migration - INFO - Разблокирую:2273
2015-12-25 14:20:18,686 - worker - base_worker - INFO - Обработано строк:925
[root@Carbon (asr_billing) new_migration]#
{code}
Запустить демоны
{panel}
/etc/init.d/memcached start
/etc/init.d/worker start
{panel}

h2. Что не поддерживается в текущей версии миграции:

* финансовые группы
* карточные абоненты
* у абонентов снимаются обещанные платежи
* Пароли, содержащие кириллицу, удаляются.
* Слишком длинные ФИО обрезаются.
* Для тарифов с неуказанной абон.платой ставится 0.