"tbl_name.frm" table definition (table) file "tbl_name. MYD " Файл даних "tbl_name. індекс-файл MYI" Кожен із цих трьох типів файлів може страждати від різних форм пошкодження, але найчастіше проблема виникає у файлах даних та індексних файлах. myisamchk створює ". Для роботи файлу MYD" (data) він працює шляхом видалення старого ". MYD і перейменуйте новий файл на оригінальне ім'я, щоб завершити фазу відновлення. Якщо ви використовуєте --швидко, myisamchk не створює тимчасового ". MYD" — просто припускаю". MYD" файл правильний і створює лише новий індексний файл, не торкаючись". MYD", що безпечно, бо myisamchk автоматично визначає". MYD" файл пошкоджений, і в цьому випадку слід припинити ремонт. Ви також можете дати myisamchk два — швидкі варіанти. У цьому випадку myisamchk не відмовляється від деяких помилок (наприклад, повторюваних клавіш), а натомість намагається змінити ". MYD" для їх вирішення. Зазвичай це корисно лише якщо ви реалізуєте звичайне виправлення на занадто малому вільному місці на диску, використовуючи два --швидкі опції. У такому випадку варто хоча б зробити резервну копію перед запуском myisamchk. 1. Як перевірити помилки в таблиці Щоб перевірити таблицю, скористайтеся наступною командою: myisamchk tbl_name Це фіксує 99,99% усіх помилок. Те, чого він не може з'ясувати, — це те, що пошкодження пов'язане лише з файлами даних (що трапляється рідко). Якщо хочете перевірити таблицю, зазвичай слід запускати myisamchk без цієї опції або використовувати будь-яку з -s чи ---беззвучних опцій. myisamchk -e tbl_name Він виконує повністю ретельну перевірку даних (-e означає «розширена перевірка»). Він виконує перевірку читання по клавіші на кожному рядку, щоб переконатися, що вони вказують на правильний рядок. Це може зайняти багато часу на великому столі з багатьма клавішами. Myisamchk зазвичай зупиняється після того, як знаходить першу помилку. Якщо хочете більше інформації, можете додати опцію --verbose(-v). Це дозволяє myisamchk тривати до максимуму 20 помилок. У загальному використанні достатньо простого myisamchk (без аргументів, окрім назви таблиці). myisamchk -e -i tbl_name Як і попередня команда, але опція -i підказує myisamchk також вивести деякі статистичні дані. 2. Як відремонтувати стіл Симптомом пошкодженої таблиці зазвичай є несподіваний розрив запиту, і ви можете побачити, наприклад, такі помилки: "tbl_name.frm" заблоковано і не може бути змінене. Не вдається знайти файл "tbl_name. MYI"(Errcode :### )。 Отримайте помилку ### від процесора таблиці (у цьому випадку помилка 135 є винятком). Несподіваний кінець файлу. Файли записів були знищені. У таких випадках потрібно підготувати стіл. Myisamchk зазвичай виявляє і виправляє більшість проблем. Процес ремонту складається з до 4 етапів, описаних нижче. Перед початком слід зафіксувати дозволи на каталог бази даних і контрольний список файлів, щоб переконатися, що вони читаються користувачами Unix, які працюють на mysqld (і вам, оскільки вам потрібен доступ до файлу, який ви перевіряєте). Якщо він відмовляється змінювати файл, вони також мають бути доступні для запису на вашу адресу. Етап 1: Перевірте свій стіл Біжи myisamchk *. MYI або (myisamchk -e *. MYI, якщо маєш більше часу). Використовуйте опцію -s (тиша), щоб вимкнути зайву інформацію.
Формат файлу, який MySQL використовує для зберігання даних, був ретельно протестований, але завжди існують зовнішні умови, які можуть призвести до пошкодження таблиць баз даних: Процес mysqld зупиняється за один запис; Несподіване вимкнення комп'ютера (наприклад, якщо комп'ютер втрачає живлення); апаратна помилка. У цьому розділі описано, як перевіряти та обробляти пошкодження даних у базі даних MySQL. Якщо ваш стіл сильно пошкоджений, спробуйте з'ясувати чому! Див. G.1 Налагодження сервера MySQL. Під час відновлення після збоїв важливо розуміти, що кожна таблиця в базі даних tbl_name відповідає трьом файлам у каталозі бази даних |