Итак, у меня есть тестовый сервер БД, который был настроен в потоке репликации. Над именем произошла оптимизация, которая быстро заполнила пространство в dadadir рабов. Mysql покорно ждал еще места.
Этот datadir - файловая система, используемая ТОЛЬКО как datadir mysql, поэтому больше ничего не нужно было освобождать.
У меня была тестовая таблица innodb на 4 гигабайта, которая не была частью потока репликации, поэтому я решил попробовать кое-что, чтобы проверить, сработает ли она, и, будучи тестовой средой, я не слишком волновался, если что-то пошло не так.
Вот шаги, которые я предпринял
- Покраснел стол, который я собирался переместить
- Установил на него блокировку чтения (хотя в него ничего не записывалось и его не было в потоке репликации)
- Скопировал .frm и .ibd в файловую систему с некоторой запасной комнатой
- Разблокировал стол
- Урезал эту таблицу - это освободило достаточно места для завершения оптимизации, чтобы репликация снова начала пыхтеть.
- Остановить подчинение / отключение MySQL
- Скопируйте файл из tmp обратно в каталог данных
- Перезапустите MySQL
В журнале .err ничего не отображается, все выглядит хорошо. Я подключаюсь и использую mydb; и увидеть таблицу, с которой я возился в выставочных таблицах. Но если я попробую
select * from testtable limit 10;
Я получаю ошибку
ERROR 1146 (42S02): Table 'mydb.testtable' doesn't exist
Из того, что я могу сказать до сих пор, я могу читать из всех других таблиц просто отлично, и репликация началась без каких-либо жалоб.
Могу ли я что-нибудь сделать, чтобы восстановиться после этого? Я могу восстановить его с нуля, если это будет необходимо, но мне было любопытно, что другие думают об этом предприятии в целом. Было ли в серии шагов, которые я предпринял, что-нибудь, что привело бы к безупречным результатам?
Что если бы это был не тестовый сервер, я не мог бы просто «сделать это вживую» и посмотреть, что произойдет? Как лучше всего временно освободить место на рабочем рабе, если мне это понравится?
источник
Table 'X' doesn't exist in engine
. Нужно ли выполнять описанный выше метод для каждой таблицы или есть более эффективные способы исправить это?Я испытал свой Mac, прежде чем продавать другу, просто скопируйте папку XAMPP только на мой жесткий диск. (НЕ УСПЕХ) К сожалению, это доставляло мне неприятности, потому что я попробовал следующие шаги: - Я установил свежий XAMPP и скопировал целые \ httdocs и var \ mysql на мой новый Mac, эти db только с .frm и .ibd, НЕ РАБОТАЕТ, я по-прежнему не могу получить доступ к таблицам внутри PHPMyAdmin ... - Я попытался установить ту же версию xampp и повторить описанные выше шаги, но по-прежнему НЕ РАБОТАЕТ. - решил пойти спать.
(УСПЕХ) - Сегодня утром я принес свой резервный диск и попробовал с Windows 7. - Установите свежую последнюю версию XAMPP для Windows, c: \ xampp - У меня есть один из веб-сайтов (папок) из моей резервной копии \ httdocs и соответствующая папка базы данных внутри \ var \ mysql ГОТОВ в моем Windows 7, я просто хочу попробовать с одним веб-сайтом, а затем попробовать остальные, потому что у меня есть много проектов внутри httdocs \ и \ var \ mysql - я копирую упомянутую папку httdocs \ в windows c: \ xampp \ httdocs и скопируйте \ var \ mysql в c: \ xampp \ mysql \ data
НЕ ПОСЛЕДНИЙ ДАЛЕЕ Я копирую ib_logfile0, ib_logfile1, ibdata1 из моего файла резервной копии в windows xampp c: \ xampp \ mysql \ data
Я обновляю http: // localhost / mywebsite
WOW WOW DONE ... это работает ...
источник