Связь и интернет Архив Программирование
   
Сделать стартовойСделать закладку            
   ПОИСК  
   
Главная / MySQL / Администрирование баз данных /
8  Perl
8  PHP
8  JavaScript
8  HTML
8  DHTML
8  XML
8  CSS
8  C / C++
8  Pascal и Delphi
8  Турбо Ассемблер
8  MySQL
8  CASE-технологии
8  Алгоритмы
8  Python
8  Обратная связь
8  Гостевая книга
Новости о мире


Предотвращение катастроф и восстановление - Программирование от RIN.RU
Предотвращение катастроф и восстановление



Синтаксис BACKUP TABLE



BACKUP TABLE tbl_name[,tbl_name...] TO "/path/to/backup/directory"


Копирует в каталог резервного копирования тот минимум табличных файлов, который достаточен для восстановления таблицы. На данный момент работает только для таблиц MyISAM. Для таблиц MyISAM копирует файлы ".frm" (определений) и ".MYD" (данных). Индексные файлы могут быть реконструированы по этим двум.


Перед использованием этой команды, пожалуйста, ознакомьтесь с разделом Резервное копирование баз данных.


В процессе резервного копирования будет установлена блокировка чтения отдельно для каждой таблицы на время ее копирования. Если необходимо сделать резервное копирование в виде мгновенного образа нескольких таблиц, необходимо сначала запросить LOCK TABLES установки блокировки чтения для каждой таблицы в группе.


Команда возвращает таблицу со следующими столбцами:


Столбец Значение
Table Имя таблицы
Op Всегда "backup"
Msg_type Одно из значений status, error, info или warning.
Msg_text Само сообщение.



Заметим, что BACKUP TABLE доступна только в версии MySQL 3.23.25 и выше.


Синтаксис RESTORE TABLE



RESTORE TABLE tbl_name[,tbl_name...] FROM "/path/to/backup/directory"


Восстанавливает таблицу(ы) из резервной копии, созданной с помощью BACKUP TABLE. Существующие таблицы не перезаписываются: при попытке восстановления поверх существующей таблицы будет выдана ошибка. Восстановление занимает больше времени, нежели BACKUP - из-за необходимости повторного построения индекса. Чем больше в таблице будет ключей, тем больше времени заберет реконструкция. Эта команда, так же как и BACKUP TABLE, в настоящее время работает только для таблиц MyISAM.


Команда возвращает таблицу со следующими столбцами:


Столбец Значение
Table Имя таблицы
Op Всегда "restore"
Msg_type Одно из значений status, error, info или warning.
Msg_text Само сообщение.



Синтаксис CHECK TABLE



CHECK TABLE tbl_name[,tbl_name...] [option [option...]]


option = QUICK | FAST | MEDIUM | EXTENDED | CHANGED


CHECK TABLE работает только на таблицах MyISAM и InnoDB. На таблицах типа MyISAM команда эквивалентна запуску на таблице myisamchk -m table_name.


Если опция не указана, используется MEDIUM.


Проверяет таблицу(ы) на наличие ошибок. Для таблиц MyISAM обновляется статистика ключей. Команда возвращает таблицу со следующими столбцами:


Столбец Значение
Table Имя таблицы.
Op Всегда "check".
Msg_type Одно из значений status, error, info, или warning.
Msg_text Само сообщение.



Заметим, что по каждой проверяемой таблице может быть выдано много строк информации. Последняя строка будет представлять Msg_type status и, как правило, должна содержать OK. Если выдается что-либо отличное от OK и Not checked, то обычно следует провести ремонт таблицы (см. раздел Использование myisamchk для профилактики таблиц и послеаварийного). Not checked свидетельствует о том, что указанный для таблицы тип (TYPE) не нуждается в проверке.


Различные типы проверки означают следующее:


Тип Действия
QUICK Не сканировать строки для проверки на неправильные связи.
FAST Проверять только таблицы, которые не были корректно закрыты.
CHANGED Проверять только таблицы, которые изменились со времени последней проверки или не были закрыты корректно.
MEDIUM Сканировать строки для проверки того, что уничтоженные связи порядке. При этом также подсчитывается ключевая контрольная сумма для строки и сравнивается с подсчитанной контрольной суммой для ключей.
EXTENDED Выполнить полный просмотр ключа для всех ключей для каждой строки. Успех такой проверки гарантирует 100%-ное отсутствие противоречий в таблице, но на проверку уйдет немало времени!



Для таблиц MyISAM с динамическими размерами при запуске проверки всегда выполняется проверка MEDIUM. Для строк со статическими размерами мы пропускаем сканирование строк для QUICK и FAST, поскольку повреждение строк происходит крайне редко.


Проверочные опции можно сочетать:


CHECK TABLE test_table FAST QUICK;


Эта команда просто вызовет быструю проверку таблицы для выявления того, была ли она закрыта корректно.


Примечание: в некоторых случаях CHECK TABLE изменяет таблицу! Это происходит, если таблица помечена как "поврежденная/corrupted" или "не закрытая корректно/not closed properly", а CHECK TABLE не находит никаких проблем в таблице. В этом случае CHECK TABLE отметит в таблице, что с ней все нормально.


Если таблица повреждена, то, скорее всего, проблема в индексах, а не в данных. Проверки всех типов обеспечивают всестороннюю проверку индексов и тем самым должны обнаруживать большинство ошибок.


Если проверяется таблица, с которой предположительно все нормально, то можно опустить проверочные опции или указать опцию QUICK. Последнюю возможность следует использовать в случае ограничений по времени и тогда, когда можно пойти на риск (очень незначительный), что QUICK пропустит ошибку в файле данных. (В большинстве случаев MySQL должен найти - при нормальной работе - любые ошибки в файле с данными. Если ошибки найдены, то таблица будет отмечена как "поврежденная/corrupted", и в таком случае ее нельзя будет использовать, пока она не будет исправлена.)


FAST и CHANGED главным образом предназначены для использования в сценариях (например, для запуска из cron), если необходимо время от времени проверять таблицы. В большинстве случаев следует отдавать предпочтение FAST перед CHANGED (иначе надо поступать только в случае, когда возникает подозрение, что найдена ошибка в самом коде MyISAM).


Прибегать к EXTENDED следует только тогда, когда после выполнения нормальной проверки для таблицы по-прежнему выдаются странные ошибки при попытке MySQL обновить строку или найти строку по ключу (что очень маловероятно в случае успеха нормальной проверки!).


Некоторые проблемы, о которых сообщается при проверке таблицы, нельзя исправить автоматически:


  • Found row where the auto_increment column has the value 0.
    Это означает, что в таблице есть строка, где индексированный столбец AUTO_INCREMENT содержит значение 0 (строку, в которой столбец
    AUTO_INCREMENT имеет значение 0, можно создать, явно установив столбец в 0 командой UPDATE).
    Это само по себе не является ошибкой, но может вызвать неприятности, если понадобится сделать дамп таблицы или восстановить ее или выполнить над ней ALTER TABLE. В этом случае столбец с атрибутом AUTO_INCREMENT изменит значение в соответствии с правилами для столбцов AUTO_INCREMENT, что может вызвать проблемы, подобные ошибке дублирования ключа.
    Чтобы избавиться от предупреждения, просто выполните команду UPDATE для установки в столбце значения, отличного от 0.




Синтаксис REPAIR TABLE



REPAIR TABLE tbl_name[,tbl_name...] [QUICK] [EXTENDED] [USE_FRM]


REPAIR TABLE работает только на таблицах типа MyISAM и эквивалентна выполнению на таблице myisamchk -r table_name.


При обыкновенной работе запускать эту команду не приходится, но если случится катастрофа, то с помощью REPAIR TABLE практически наверняка удастся вернуть все данные из таблицы MyISAM. Если таблицы сильно повреждены, то следует постараться выяснить, что послужило этому причиной! Обращайтесь к разделам Что делать, если работа MySQL сопровождается постоянными сбоями и Проблемы с таблицами MyISAM.


REPAIR TABLE ремонтирует таблицу, которая, возможно, повреждена. Команда возвращает таблицу со следующими столбцами:


Столбец Значение
Table Имя таблицы
Op Всегда "repair"
Msg_type Одно из значений status, error, info или warning.
Msg_text Само сообщение.



Заметим, что по каждой ремонтируемой таблице может быть выдано много строк информации. Последняя строка будет представлять Msg_type status и, как правило, должна содержать OK. Если выдается что-либо отличное от OK, то
следует попробовать исправить таблицу с помощью myisamchk -o, поскольку в REPAIR TABLE пока реализованы не все опции myisamchk. В скором будущем мы сделаем команду более гибкой.


Если указан QUICK, то MySQL будет пытаться сделать REPAIR только индексного дерева.


Если используется EXTENDED, то MySQL будет создавать индекс строка за строкой вместо создания по одному индексу единоразово с помощью сортировки; такая техника может работать лучше сортировки для ключей фиксированной длины, если речь идет о хорошо сжимаемых ключах типа char() большой длины.


Что касается MySQL 4.0.2, то тут для REPAIR существует режим USE_FRM. Используйте его, если отсутствует файл ".MYI" или поврежден его заголовок. В этом режиме MySQL воссоздаст таблицу, используя информацию из файла ".frm". Этот вид исправления в myisamchk недоступен.


<<<  НазадВперед  >>>
 1  2  3  4  5  6  7 


 8  Комментарии к статье  8 8  Обсудить в чате

8  В тему

Конфигурирование MySQL

Общие проблемы безопасности и система привилегий доступа MySQL

Управление учетными записями пользователей MySQL

Справочник по языку администрирования баз данных

Локализация MySQL и использование национальных алфавитов

Серверные сценарии и утилиты MySQL

Клиентские сценарии и утилиты MySQL

Файлы журналов MySQL

Репликация в MySQL

 
  
  
    Copyright ©  RIN 2003 - 2004      * Обратная связь