Для MySQL 8 данная статья не актуальна
Подготовка
Выполните подрезку данных в БД.
Чаще всего в подрезке нуждаются неактуальные данные о товарах, переоценках и неиспользуемые данные о продажах за большой временной интервал. При подрезке данных в БД и таблицах осуществляется поиск и удаление записей, старше указанного количества суток. Подробнее о подрезке можно прочитать в разделе "Подрезка данных в БД".Проверьте наличие свободного места на диске.
На диске необходимо выделить достаточное количество памяти для работы системы и хранения таблиц, которые могут быть созданы в процессе миграции БД. Для успешной миграции необходимо пространство равное размеру самой большой таблицы + 2 ГБ.Загрузите с КС на кассы все данные, необходимые для их корректной работы во время обновления.
Кассовый сервер хранит информацию о справочниках (каталоги товаров, переоценки, скидки, акции и так далее), которые должны быть своевременно переданы на кассы в магазине. Во время обновления загрузку актуальных справочников выполнить невозможно. Подробнее о загрузке справочников на кассу можно прочитать в разделе "Загрузка справочников из КС на кассу" и в статье "SYNC-AGENT".Необходимо загрузить на кассы актуальные акции и выгрузить из касс в АСТУ все доступные продажи. Подробнее о выгрузке продаж с кассы в АСТУ можно прочитать в разделе "Выгрузка продаж из Кассы в АСТУ".
Сделайте бэкап на сервере (или виртуальной машине) с установленными КС и БД:
бэкап компонентов КС можно выполнить, например, с использованием инструментов резервного копирования платформы виртуализации,
бэкап БД – штатными средствами СУБД. Подробнее о бэкапировании БД можно прочитать в разделах "Бэкапирование и восстановление баз данных MySQL" и "Бэкапирование и восстановление баз данных MongoDB".
Такой подход работает для КС и БД, которые установлены как на одном сервере, так и на разных серверах.
Обновление
Запустите скрипт обновления КС.
Подробнее об обновлении КС можно прочитать в подразделе "Обновление" в разделе "Установка и обновление".Если автоматическая миграция выключена, то необходимо запустить ее вручную, используя веб-интерфейс кассового сервера.
Если автоматическая миграция включена, то она будет запущена при изменении структуры БД сразу после обновления. Подробнее о миграции можно прочитать в разделе "Миграция БД".Миграция БД справочников и продаж запускается автоматически при включенной настройке "Запускать миграцию при старте КС" в настройках сервера (вкладка "Прочее").
Контроль
- Отслеживайте процесс миграции:
- Через сообщения в логе.
В/var/log/artix/artixcs-rest/migrate.log
логируются сообщения о начале (begin inner db MigrateImpl.migrateInner()) и окончании (Success MigrationImpl.setMigrateVersion()) миграции для каждой БД, а также сообщения об ошибках. - Через мониторинг состояния выполняемых SQL-запросов.
Отслеживая такие запросы, как создание временной таблицы, изменение таблиц, копирование данных обратно из временной таблицы, можно определить, как идет миграция, а также закончилась она или нет. Например, некоторые запросы работают слишком медленно или не завершатся никогда.
Для получения списка текущих запросов необходимо использовать команду:show full processlist
– для MySQL;SELECT * from pg_stat_activity
– для PostgreSQL.Примеры вывода команды show full processlist с длительными операциями
- Через сообщения в логе.
ID | Пользователь | Хост | БД | Команда | Время выполнения | Статус | Запрос |
---|---|---|---|---|---|---|---|
3 | netroot | localhost | db1 | Sleep | 90 | NULL | |
13 | netroot | localhost | db1 | Query | 0 | init | show full processlist |
11 | netroot | localhost | db1 | Query | 0 | committing alter table to storage engine | ALTER TABLE artixcs_shop_987_3aaac852.tpricesTemp ADD PRIMARY KEY (bcode, `index`, effectivedate) |
17 | netroot | localhost | db1 | Query | 0 | waiting for handler commit | ALTER TABLE artixcs_shop_987_3aaac852.unitsTemp ADD frunit INT NULL COMMENT 'Мера количества предмета расчета' |
27 | netroot | localhost | db1 | Query | 0 | waiting for handler commit | CREATE OR REPLACE VIEW dictionaries_shop_987_3aaac852.medicine AS SELECT * FROM `artixcs_shop_987_3aaac852`.`medicineTemp` |
26558 | netroot | localhost | artixcsAll | Query | 3 | copy to tmp table | ALTER TABLE `artixcsAll`.`tmcTemp` |
Проверка обмена
- Проверьте, что после обновления работает обмен между КС и АСТУ:
- Загрузите справочники из АСТУ в КС. Подробнее об этом можно прочитать в разделе "Загрузка справочников в КС".
- Выгрузите продажи из КС в АСТУ. Подробнее об этом можно прочитать в разделе "Выгрузка продаж из КС в АСТУ".
- Проверьте, что после обновления работает обмен между КС и кассой:
- Выгрузите продажи из кассы на КС. Подробнее об этом можно почитать в разделе "Выгрузка продаж из Кассы на КС".
- Загрузите справочник из КС на кассу. Подробнее об этом можно прочитать в разделе Sync-agent.