MariaDB - восстановление таблиц

Редактировал(а) Руслан Савельев 2025/08/07 04:31

Перед восстановлением закройте все программы СНК-АЗС

1. Первый уровень

Применяется если:
Найдены поврежденные таблицы
Ошибки в данных в Бэк-Офисе
Ошибки при выполнении отчетов
Ошибки расчета скидки
Ошибки в лог-файлах - boapp.log, bolink.log, ReportBuilder.log:Table '.\oc\cashbox' is marked as crashed

Восстановление можно провести в ручном режиме (вкладка - "Ручной режим") или автоматическом режиме (вкладка - "Автоматический режим")

  • Запустите HeidiSQL
C:\Program Files (x86)\Common Files\MariaDBShared\HeidiSQL\heidisql.exe
  • Создайте сеанс подключения к БД (или используйте существующий)
    • Нажмите на кнопку "Создать"
    • Имя хоста - 127.0.0.1 или localhost
    • Пользователь - root
    • Нажмите на кнопку "Открыть"
1754551301381-560.png

Подключение к HeidiSQL

  • Откроется окно программы
  • Выберите схему oc нажатием левой кнопки мыши
  • Кликните по названию схемы oc правой кнопкой мыши и в выпадающем меню выберите "Обслуживание"
1754551750773-147.png

Выбор схемы для обслуживания

  • Откроется окно "Массовый редактор таблиц", выберите следующие параметры для восстановления:
    • Убедитесь, что схема oc отмечена флажком (на рисунке отмечено цифрой 1)
    • На вкладке "Обслуживание" в строке "Операция" выберите Repair (на рисунке отмечено цифрой 2)
    • Отметьте флажком опции "Extended" и "Use FRM file" (на рисунке отмечено цифрой 3)
    • Нажмите - "Выполнить" (на рисунке отмечено цифрой 4)
1754552205146-942.png

Выбор параметров восстановления

Дождитесь восстановления таблиц. Процесс может занимать несколько часов!

Если восстановление не работает

  • Остановите службу MariaDB
  • Отключите автоматическое восстановление таблиц в файле my.ini
C:\SNC_AZS\MariaDB\data\my.ini
mysqld
aria_recover_options=OFF
  • Запустите службу MariaDB
  • Снова запустите восстановление первого уровня
  • Запустите скрипт MariaLevel1.cmd
C:\SNC_AZS\software\dbase\MariaLevel1.cmd

После выполнения скрипта в каталоге запуска появится файл level1.log

16:18                                           #Время запуска скрипта
"------Start checking tables------"                
"------Bad tables list------"                   #Список поврежденных таблиц
oc.eventlog
"------Start recovery------"                    #Протокол восстановления таблиц
oc.eventlog
warning : Number of rows changed from 0 to 972
status  : OK
"------Recover complete, start new check------"    
16:18                                           #Время завершения восстановления
"------Bad tables list after recovery------"    #Список невосстановленных таблиц (должен быть пуст)

2. Второй уровень

Применяется если:
Выполнение операции Repair не дало результата

Восстановление можно провести в ручном режиме (вкладка - "Ручной режим") или автоматическом режиме (вкладка - "Автоматический режим")

  • Остановите службу MariaDB
  • Запустите утилиту aria_chk со следующими параметрами:
C:\SNC_AZS_Maria\MariaDB\bin\aria_chk.exe --check --force oc\*.MAI
  • После выполнения команды, при отсутствии ошибок, запустите службу сервера MariaDB
  • Запустите скрипт MariaLevel2.cmd
C:\SNC_AZS\software\dbase\MariaLevel2.cmd
  • После выполнения скрипта в каталоге запуска появится файл level2.log
16:18                                           #Время запуска скрипта
"------Start checking tables------"                
"------Bad tables list------"                   #Список поврежденных таблиц
oc.eventlog
"------Start recovery------"                    #Протокол восстановления таблиц
oc.eventlog
warning : Number of rows changed from 0 to 972
status  : OK
"------Recover complete, start new check------"    
16:18                                           #Время завершения восстановления
"------Bad tables list after recovery------"    #Список невосстановленных таблиц (должен быть пуст)

3. Третий уровень

Применяется если:
Выполнение восстановления второго уровня не дало результата

  • Остановите службу MariaDB
  • Запустите утилиту aria_chk со следующими параметрами:
C:\SNC_AZS_Maria\MariaDB\bin\aria_chk.exe --safe-recover --zerofill oc\*.MAI
  • После выполнения команды, при отсутствии ошибок, запустите службу сервера MariaDB

4. Четвертый уровень

Применяется если:
БО не загружается, при запуске появляется сообщение «Невозможно подключиться к БД».
В bo_app.log, bo_link.log, ReportBuilder.log сообщения:
«Подключение к БД — ОШИБКА» , «server gone away».
В логе работы сервера БД (в каталоге Data) последние строки содержат сообщения:
[ERROR] Failed to initialize plugins.
[ERROR] Aborting
[ERROR] Plugin 'Aria' registration as a STORAGE ENGINE failed.

Восстановление можно провести в ручном режиме (вкладка - "Ручной режим") или автоматическом режиме (вкладка - "Автоматический режим")

  • Остановите службу MariaDB
  • Удалите файлы логирования СУБД aria_log.* в каталоге Data:
C:\SNC_AZS\MariaDB\data\
  • После выполнения команды, при отсутствии ошибок, запустите службу сервера MariaDB
  • Запустите скрипт MariaLevel0.cmd
C:\SNC_AZS\software\dbase\MariaLevel0.cmd
  • После выполнения скрипта в каталоге запуска появится файл level2.log
18:04
"------Checking MariaDB state------"
"------MariaDB OK------"

Имя_службы: MariaDB
        Тип                : 10  WIN32_OWN_PROCESS  
        Состояние          : 4  RUNNING     #Состояние службы
                                (STOPPABLE, PAUSABLE, ACCEPTS_SHUTDOWN)
        Код_выхода_Win32   : 0  (0x0)
        Код_выхода_службы  : 0  (0x0)
        Контрольная_точка  : 0x0
        Ожидание           : 0x0

5. Если не удалось восстановить

Если операции по восстановлению не дали результата, то необходимо файловый слепок хранилища БД передать разработчикам для детального анализа сбойной ситуации.