8(499)-709-97-83
Работаем с 8:00 до 19:00

Лечение FreePBX Fatal Error таблицы asteriskcdrdb

  • 30 апреля 2015

Мы часто стали наблюдать проблему, когда необходимо проверить таблицу CEL, т.е. просмотреть более подробные параметры вызовов(подключение и разрывы голосовых каналов) в Asterisk CDR Reports, но тут может возникнуть FATAL ERROR. В этой статье мы расскажем, как вылечить таблицу cel и расскажем, как восстанавливаются таблицы и базы данных в MySQL.

Ошибка выглядит примерно так:

А лечится это довольно просто, при условии, что вы используете БД MySQL (на PostgreSQL думаю так же не сложно, но мы не тестировали)

Немного теории.

В MySQL есть две команды: myisamchk и mysqlcheck. Утилитки myisamchk и mysqlcheck можно использовать для получения информации о таблицах рабочей базы данных, для их проверки и исправления или же оптимизации. Отличие mysqlcheck от myisamchk состоит в том, что утилита mysqlcheck должна использоваться при работающем сервере mysqld, в то время как myisamchk - при остановленном. Т.е. используя mysqlcheck теперь не надо прерывать работу базы данных.

Для восстановления таблицы cel, принадлежащей базе данных asteriskcdrdb, необходимо использовать команду:

# mysqlcheck --repair asteriskcdrdb cel -uroot -p

В общем виде команда выглядит так:

# mysqlcheck --repair db_name table_name -u username -p

Где db_name - имя восстанавливаемой базы данных, table_name - имя восстанавливаемой таблицы.

Если хотите проверить и восстановить (в случае необходимости) все базы данных и таблицы, то следует применить следующую команду:

# mysqlcheck --repair  --all-databases --auto-repair -u username -p

Что означают указанные ключи:

  • --repair, -r - может исправить почти все, за исключением уникальных ключей, имеющих дубликаты
  • --all-databases, -A - проверить все базы данных
  • --auto-repair - если проверенная таблица повреждена, автоматически восстановить ее. Исправления будут произведены после проверки всех таблиц, если были обнаружены повреждения

Расскажем и про утилитку myisamchk. Для начала, базы данных необходимо проверить на ошибки. Быстрая проверка осуществляется командой:

# myisamchk --fast --silent /path/to/yourdatabase/*/*.MYI

Далее необходимо вылечить найденные ошибки. Делается это командой:

# myisamchk --recover /path/to/yourdatabase/*/*.MYI

А если все плохо, то необходимо использовать команду:

# myisamchk --safe-recover /path/to/yourdatabase/*/*.MYI
Ч

то означают указанные ключи:

  • --force, -f - выполнять перезапуск myisamchk, если myisamchk найдет в ней хоть одну ошибку
  • --silent, -s - молчаливый режим. Выдавать сообщения только при возникновении ошибок
  • --recover, -r -  при указании этой опции можно исправить практически все, кроме уникальных ключей, в которых есть повторения (ошибка, вероятность которой мизерна для таблиц ISAM/MyISAM)
  • --safe-recover, -o - используется старый метод восстановления (читаются подряд все строки и обновляются все деревья индексов на основе найденных строк); такой алгоритм работает на порядок медленнее -r, но метод справляется с несколькими редкими случаями, непосильными для -r

После использования данных команд, FreePBX будет корректно выводить данные из таблицы cel.

 
Powered by SEO CMS ver.: 23.1 TOP 2 (opencartadmin.com)