Peмoнт БД MySQL нa кacce

1) Подключиться к кассе по ssh
2) stop ukmclient
3) stop mysql
4) Внести параметр в \etc\my.cnf
В секцию [mysqld] добавьте строку

set-variable=innodb_force_recovery=6
5) start mysql
6) сделать дамп базы
mysqldump -uroot -p ukmclient > ukmdump.sql
7) stop mysql
8) удалить (скопировать на всякий случай) \mysql\var
9) из архива в прицепе скопировать новый \mysql\var
10) Закомментировать  set-variable=innodb_force_recovery=6 в \etc\my.cnf
11) start mysql
12) Подключиться к mysql
mysql -uroot -p
13) Создать базу ukmclient
CREATE DATABASE ukmclient;
14) Дать привилегии на базу ukmclient
grant all om ukmclient.* to root identified by 'пароль'
15) Перезапустить mysql
16) Восстановить базу
mysql -uroot -p ukmclient < ukmdump.sql




Диагностика и восстановление базы данных на Linux кассе
для Супермаг УКМ версии 47 sp1 и более новых

Содержание

1. Диагностика БД
2. Ремонт БД на кассе (сервер MySQL работает)
3. Ремонт БД на кассе (сервер MySQL не работает)


1. Диагностика БД

1) Скопируйте на кассу в каталог /tmp файл dbrepair4701+.tgz
Для копирования можно использовать программу WinSCP (www.winscp.net)

Подключитесь к кассе с помощью ssh.
Перейдите в каталог /tmp и распакуйте архив dbrepair46+.tgz с помощью команды
tar xzf dbrepair4701+.tgz

Перейдите в каталог dbrepair4701+

В случае использования кассовой программы ukmclient
отредактируйте файл db.ini заменив строки
export DBNAME=
на
export DBNAME=ukmclient

В случае использования кассовой программы Lillo
отредактируйте файл db.ini заменив строки
export DBNAME=
на
export DBNAME=lillo

2) Остановите кассовую программу.

В случае использования ukmclient для перезапуска кассовой программы выполните команду
    /etc/init.d/ukmclient stop

В случае использования Lillo для перезапуска кассовой программы выполните команду
    /etc/init.d/lillo stop

3) Запустите скрипт dbcheck.sh

Проанализируйте содержимое файла dbcheck.log
В случае, если целостность БД не нарушена, содержимое
файла dbcheck.log должно иметь следующий вид
(названия таблиц и их количество может быть другим)
=========================================================
...
ukmclient.card_stoplist                            OK
ukmclient.card_stoplist_client                     OK
ukmclient.cards                                    OK
ukmclient.certificates                             OK
ukmclient.classif                                  OK
ukmclient.classifclients                           OK
...
=========================================================
Переходите к п.4

В случае, если целостность БД нарушена, содержимое
файла dbcheck.log может иметь следующий вид
=========================================================
...
ukmclient.card_stoplist                            OK
ukmclient.card_stoplist_client                     OK
ukmclient.cards
warning  : Table is marked as crashed
error    : Size of indexfile is: 23375        Should be: 23552
error    : Corrupt
ukmclient.certificates                             OK
ukmclient.classif                                  OK
ukmclient.classifclients                           OK
...
=========================================================
Выполните ремонт БД (см. раздел 2)

4) Запустите кассовую программу

В случае использования ukmclient для перезапуска кассовой программы выполните команду
/etc/init.d/ukmclient start

В случае использования Lillo для перезапуска кассовой программы выполните команду
/etc/init.d/lillo start



2. Ремонт БД на кассе (сервер MySQL работает)

Для ремонта БД, целостность которой нарушена, выполните следующие действия:
1) Остановите кассовую программу (см п.1.2).
2) Запустите скрипт dbrepair.sh и дождитесь окончания его работы
3) Проанализируйте содержимое файла dbrepair.log (см. п 1.3 анализ файла dbcheck.log)
4) Перезапустите кассовую программу (см п.1.4)



3. Ремонт БД на кассе (сервер MySQL не работает)

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

Технология восстановления БД предполагает выполнение следующих шагов:
- запуск MySQL в режиме пропуска ошибок
- создание резервной копии БД в виде SQL скрипта
- пересоздание БД MySQL с использованием "чистой копии" аналогично тому как это
  делается при установке кассы
- создание БД кассы с использованием SQL скрипта полученного в режиме пропуска ошибок

Для восстановления БД выполните следующие действия:
1) Создайте копию каталога БД MySQL
Данная копия не используется в ходе описанной далее процедуры,
но может потребоваться, если при восстановлении возникнут ошибки.

БД находится в каталоге /usr/local/mysql/var

Перейдите в каталог /usr/local/mysql
Выполните следующую команду (обратите внимание, перед выполнеyием данной команды
предполагается, что MySQL сервер не запущен):

tar czf mysql-db.tgz var

При этом резервная копия БД будет сохранена в файле mysql-db.tgz

2) Скопируйте файл /etc/my.cnf в файл /etc/my.cnf.work

Отредактируйте файл /etc/my.cnf
В секцию [mysqld] добавьте строку

set-variable=innodb_force_recovery=6

Запустите сервер MySQL командой
/etc/init.d/mysql start

3) Создайте резервную копию БД в виде SQL скрипта

Запустите на выполнение скрипт dbdump.sh
Дождитесь окончания работы dbdump.sh
В случае успешного завершения работы на экране появится сообщение
SUCCESS: DB dump complete

В случае ошибки на экране появится сообщение
ERROR:   DB dump failed

Для детального анализа проблемы просмотрите файл dbdump.log

4) Пересоздайте БД MySQL

Остановите сервер MySQL командой
/etc/init.d/mysql stop

Восстановите файл /etc/my.cnf из копии /etc/my.cnf.work

Удалите каталог БД /usr/local/mysql/var вместе с содержимым

Перейдите в каталог /usr/local/mysql
Распакуйте архив mysql5-datadir-empty_46+.tgz с помощью команды
tar xzf mysql5-datadir-empty_46+.tgz

Запустите сервер MySQL с помощью команды
/etc/init.d/mysql start

Проверьте результат запуска по log файлу MySQL

5) Восстановите БД кассы из резервной копии созданной в п.3.3
с помощью скрипта dbrestore.sh

Дождитесь окончания работы dbrestore.sh
В случае успешного завершения работы на экране появится сообщение
SUCCESS: DB restore complete

В случае ошибки на экране появится сообщение
ERROR:   DB restore failed

Для детального анализа проблемы просмотрите файл dbrestore.log

6) Запустите кассовую программу

В случае использования ukmclient для перезапуска кассовой программы выполните команду
/etc/init.d/ukmclient start

В случае использования Lillo для перезапуска кассовой программы выполните команду
/etc/init.d/lillo start

Комментариев нет:

Отправить комментарий