Документация
Releases
База знаний
Примеры конфигурации
|
|
NeTAMS 3.2-RELEASE. Как обновляться?
Если вы проводите инсталляцию NeTAMS "с нуля", вам лучше почитать другой документ.
Если у вас уже установлен и работает NeTAMS предыдущей версии, то все зависит от того, хочется ли вам сохранить старую статистику или нет.
Если старая статистика вам не интересна, то:
- Остановите работающий NeTAMS
- Удалите все его стартап-скрипты, бинарные файлы
- Старый файл конфигурации можно оставить "на всякий случай"
- Сгенерированная ранее статическая HTML-статистика может оставаться на старом месте. Новый NeTAMS автоматически ее увидит. Если же и эта статистика не нужна, удалите дерево файлов (куда указывал параметр path сервиса html)
- Удалите старую базу данных: mysqladmin drop netams или как там у вас база называлась?
Естественно, никто не мешает устанавливать и настраивать новую версию NeTAMS одновременно с работающей старой, однако вам придется немного повозиться с путями/именами/портами, чтобы такая конструкция заработала.
В большинстве случаев, однако, вам захочется сохранить старую статистику, и обеспечить "плавный переход". Последовательность действий такова:
- Обновляем MySQL (если вы используете именно эту СУБД)
- Скачиваем, распаковываем, конфигурируем и собираем новую версию 3.2
- Создаем "временный" конфигурационный файл для новой версии, взяв за основу старый
- Запускаем и отлаживаем "новую версию" из "временного" каталога и с временными путями/конфигами/правилами. Убеждаемся, что все работает и ничего не глючит.
- Останавливаем старый NeTAMS.
- Делаем полный бэкап базы данных
- Делаем бэкап старого конфигурационного файла и бинарного файла netams
- Делаем ALTER таблицам базы
- Подправляем "новый" конфигурационный файл, чтобы он ссылался на "большую" базу.
- Кладем на место новый стартап-скрипт, свежесобранные бинарные файлы
- Запускаем NeTAMS через стартап-скрипт
- Сразу же смотрим, как ему работается: пригодятся команды show version, html, show config
- Пробуем перезапустить NeTAMS через его команду reload. Пробуем перезапустить сервер.
- Если полет проходит нормально (старая статистика осталась, новая - появляется, в базу запись идет своим чередом) - поздравляем, апгрейд прошел успешно!
Необходимые комментарии по этим пунктам:
- Обновление MySQL
Новая версия NeTAMS активно использует LOAD DATA FROM FILE, который некорректно работает на MySQL 3.xx.xx, о чем говорят частые core dump в недрах libmysqlclient.so.10. Мы настоятельно рекомендуем обновить ваш MySQL до версии 4.0.последняя (как говорят, версии 4.1.х и 5.х тоже работают). Обновления касаются И клиентской, И серверной части. С самими файлами базы данных делать ничего не надо - их формат не изменился, и в большинстве случаев достаточно просто удалить старые пакеты и сразу же поставить новые. Однако, если какие-то другие приложения в вашей системе были скомпилированы и слинкованы со старой версией MySQL, вам придется обновить и их (например, mod_php.so)
- Сборка новой версии
Описана вот здесь.
- "Временный" конфигурационный файл
Взять за основу старый. Просмотреть документацию по синтаксису сервисов. Основные изменения состоят в том, как задавать политики. Необходимо убрать слова "acct" и "fw" в начала, а также переписать target в соответствии с новыми реалиями. Указать (временно!) другой порт для telnet-доступа (service server), правило захвата пакетов (другой порт divert, номер правила, само правило поменять на ICMP). Линукс не поддерживает несколько одновременных IPQ-фильтров, так что используйте libpcap. Укажите другое имя для базы SQL, т.к. формат таблиц изменился (service storage .... dbname netams_test)
- Запуск новой версии
netams -ldf путь_до_нового_конфига. Проверьте, что нет конфликтов по открытым сокетам. Зайдите с другого терминала, подключитесь к программе через телнет, попробуйте команды show version, show config и html. Попробуйте команду reload (программа сама не запустится по-новой, но надо убедиться в корректности завершения, т.е. нет ли core dump'а). Попробуйте выполнить show config и найти отличия с тем конфигурационным файлом, откуда запускались. Попробовать save и проверить, что ничего не пропало.
- Остановка старой программы
Желательно делать это все не в разгар дня :)
- Бэкап старой базы
Учите матчасть! Для MySQL придется делать что-то вроде:
(предположим, что старая база называлась netams; новая для тестов
netams_test, бэкап делаем в netams так, чтобы таблицы имели
старое имя и суффикс "_bkp"):
server:~#mysql netams
mysql> show tables;
+------------------+
| Tables_in_netams |
+------------------+
| quota |
| raw |
| summary |
+------------------+
mysql> show create table summary \G
*********************** 1. row ***********************
Table: summary_old
Create Table: CREATE TABLE `summary_old` (
`prefix` enum('T','M','W','D','H') NOT NULL default 'T',
`unit_oid` int(10) unsigned NOT NULL default '0',
`policy_oid` int(10) unsigned NOT NULL default '0',
`t_from` int(10) unsigned NOT NULL default '0',
`bytes_in` bigint(20) unsigned default NULL,
`bytes_out` bigint(20) unsigned default NULL
) TYPE=MyISAM
1 row in set (0.00 sec)
mysql> CREATE TABLE `summary_bkp` (
`prefix` enum('T','M','W','D','H') NOT NULL default 'T',
`unit_oid` int(10) unsigned NOT NULL default '0',
`policy_oid` int(10) unsigned NOT NULL default '0',
`t_from` int(10) unsigned NOT NULL default '0',
`bytes_in` bigint(20) unsigned default NULL,
`bytes_out` bigint(20) unsigned default NULL
) TYPE=MyISAM
Query OK, 0 rows affected (0.11 sec)
mysql> insert into summary_bkp select * from summary;
Query OK, 417308 rows affected (24.88 sec)
Records: 417308 Duplicates: 0 Warnings: 0
Таким образом можно сделать резервные копии всех таблиц. Можно также класть бэкап в другие базы.
Однако, если у вас есть возможность полностью остановить работу MySQL на несколько минут, гораздо более привлекательным выглядит бэкап базы не через SQL-выражения, а при помощи простого копирования файлов данных. Просто сделайте копию каталога, где хранится ваша база (что-то вроде /var/db/mysql/netams) в другое место, и все!
- Бэкап исполняемых файлов и конфигурации
На всякий случай..
- Изменение таблиц
Если вы используете сервис квот, старую таблицу quota необходимо распечатать (или не забыть посмотреть на show quota заранее), и УДАЛИТЬ!. Новый сервис квот использует несовместимую таблицу, данные о квотах необходимо будет задать по-новой.
mysql>DROP TABLE quota;
Таблицы raw, login и monitor осталась без изменений.
Таблица summary теперь имеет несколько ключей, что сильно ускоряет ее работу. Ключи добавлять так:
alter table summary add primary key (`prefix`,
`unit_oid`,`policy_oid`,`t_from`);
alter table summary add KEY `policy_oid` (`policy_oid`);
alter table summary add KEY `unit_oid` (`unit_oid`);
alter table summary add KEY `t_from` (`t_from`);
Впоследствии появятся еще две таблицы: events и oid. О них волноваться не нужно.
Поскольку механизм генерации OID был изменен, то нет гарантий того, что объявленные вами ранее значения OID для политик останутся теми же. Необходимо узнать, соответствуют ли OID в старой базе и в новой. Для этого необходимо сравнить результаты команд:
use netams;
select distinct policy_oid from summary;
select distinct policy_oid from raw;
use netams_test;
select distinct policy_oid from summary;
select distinct policy_oid from raw;
Не забывайте, OID в базе представлен в десятичном виде, а в конфигурационном файле - в шестнадцатеричном. Если окажется, что по новому конфигурационному файлу и базе OIDы для политик другие, необходимо еще раз поправить данные в базе, установив новые значения. Это делается так:
use netams;
update raw set policy_oid=new_value
where policy_oid=old_value;
update summary set policy_oid=new_value
where policy_oid=old_value;
- Правим новый конфигурационный файл "обратно"
Дабы в нем были правильные пути, сокеты, имена базы. Остальные пункты процедуры апгрейда комментариев не требуют.
| Если вышенаписанное вам покажется слишком сложным, вы можете заказать проведение апгрейда у авторов. Пишите на адрес support собака netams.com. Вам придется обеспечить доступ по SSH и права root. |
|