Повреждение базы данных MariaDB: таблица не существует в engine
Я в настройке environement, запускаю OSX с MariaDB 10.0.12-MariaDB Homebrew
Я испортил установку, поэтому я полностью удалил MySQL и MariaDB из моей установки и начал снова.
после завершения установки MariaDB я повторно импортировал свои базы данных (innoDB
) через дамп БД с рабочего сервера. Сработало отлично.
После перезагрузки, на следующий день, я больше не могу получить доступ к базам данных:
Table 'my.table' doesn't exist in engine
что вызывает это и что решение ? Я вижу структуру моей базы данных, но когда я пытаюсь открыть его, он дает мне это сообщение об ошибке.
Я пробовал mysql-upgrade --force
и удаление rm ib_logfile1 ib_logfile0
потеря данных здесь не проблема, проблема в том, что я не могу тратить 30 минут на повторную установку каждой базы данных каждый раз, когда я делаю перезагрузку.
вот несколько журналов:
140730 9:24:13 [Note] Server socket created on IP: '127.0.0.1'.
140730 9:24:14 [Note] Event Scheduler: Loaded 0 events
140730 9:24:14 [Warning] InnoDB: Cannot open table mysql/gtid_slave_pos from the internal data dictionary of InnoDB though the .frm file for the table exists. See http://dev.mysql.com/doc/refman/5.6/en/innodb-troubleshooting.html for how you can resolve the problem.
140730 9:24:14 [Warning] Failed to load slave replication state from table mysql.gtid_slave_pos: 1932: Table 'mysql.gtid_slave_pos' doesn't exist in engine
140730 9:24:14 [Note] /usr/local/Cellar/mariadb/10.0.12/bin/mysqld: ready for connections.
Version: '10.0.12-MariaDB' socket: '/tmp/mysql.sock' port: 3306 Homebrew
140730 16:26:28 [Warning] InnoDB: Cannot open table db/site from the internal data dictionary of InnoDB though the .frm file for the table exists. See http://dev.mysql.com/doc/refman/5.6/en/innodb-troubleshooting.html for how you can resolve the problem.
3 ответов
Что-то удалило ваш файл ibdata1, где InnoDB хранит словарь. Определенно это не MySQL, кто это делает.
Ok люди, я столкнулся с этой проблемой в эти выходные, когда моя среда OpenStack разбилась. Еще один пост об этом в ближайшее время о том, как восстановиться.
Я нашел решение, которое работало для меня с экземпляром SQL Server, работающим под Ver 15.1 Distrib 10.1.21-MariaDB с сервером Fedora 25 в качестве хоста. не слушайте все другие сообщения, которые говорят, что ваша база данных повреждена, если вы полностью скопировали свой старый каталог mariadb-server /var/lib/mysql и базу данных вы копируете еще не поврежден. Этот процесс основан на системе, где ОС была повреждена, но ее файлы все еще были доступны.
вот шаги, которым я следовал.
-
убедитесь, что вы полностью удалили все текущие версии SQL только на новом сервере. Кроме того, убедитесь, что все процессы mysql-server или mariadb-server на новых и старых серверах были остановлены путем запуска:
сервис остановка mysqld или остановка службы mariadb.
на новом SQL server перейдите в каталог /var/lib/mysql и убедитесь, что в этом каталоге нет файлов вообще. Если в этом каталоге есть файлы, то ваш процесс удаления сервера баз данных с новой машины не работает и, возможно, поврежден. Убедитесь, что он полностью удален с новой машины.
-
на старом SQL server:
mkdir /OLDMYSQL-DIR компакт-диск /OLDMYSQL-реж tar CVF mysql-olddirectory.tar/var/lib / mysql gzip mysql-olddirectory.тар!--4-->
убедитесь, что у вас есть sshd работает как на старом, так и на новом серверах. Убедитесь в наличии сетевого подключения между двумя серверами.
-
на новом SQL server:
mkdir / NEWMYSQL-DIR
-
на старом SQL сервер:
cd / OLDMYSQL-DIR scp mysql-olddirectory.смола.gz @: / NEWMYSQL-DIR
-
на новом SQL server:
cd / NEWMYSQL-DIR как gunzip MySQL-это olddirectory.смола.GZ или tar zxvf mysql-olddirectory.смола.gz (если tar zxvf не работает) tar xvf mysql-olddirectory.смола.gz
-
Теперь у вас должен быть файл каталога "mysql", сидящий в NEWMYSQL-DIR. Сопротивляйся желанию убежать. только команда " cp " без переключателей. Это не сработает. Выполните следующую команду " cp " и убедитесь, что вы используете те же коммутаторы, что и я.
компакт-диск с MySQL/ cp-rfp * /var/lib/mysql/
-
Теперь у вас должна быть копия всех ваших старых файлов SQL server на новом сервере с разрешениями в тактичности. На новом SQL server:
cd / var / lib / mysql/
ОЧЕНЬ ВАЖНЫЙ ШАГ. ДЕЛАТЬ НЕ ПРОПУСТИТЬ
> rm -rfp ib_logfile*
- теперь установите mariadb-server или mysql-server на новый SQL server. Если он уже установлен и / или запущен, вы не следовали инструкциям, и эти шаги завершатся ошибкой.
для MARIADB-сервера и DNF:
> dnf install mariadb-server
> service mariadb restart
для MYSQL-сервера и YUM:
> yum install mysql-server
> service mysqld restart
вы можете попробовать:
- резервное копирование папки базы данных из C:\xampp\mysql\data (.кадр. & ibd файлы, соответствующие только вашим именам таблиц)
- переустановите папку XAMPP и recopy DB на C:\xampp\mysql\data
-
изменить мой.ini add
[mysqld] innodb_file_per_table = on
-
затем откройте phpmyadmin (или любой другой просмотрщик БД как Navicat или MySQL Workbench) и запустите
ALTER TABLE tbl_name IMPORT TABLESPACE
для каждой таблицы
Как только вы можете откройте свои таблицы, сделайте полный дамп mysql
- удалить все и сделать чистую установку
Я знаю, много работы, чтобы сделать это вам не нужно.