Повреждение базы данных 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 и базу данных вы копируете еще не поврежден. Этот процесс основан на системе, где ОС была повреждена, но ее файлы все еще были доступны.

вот шаги, которым я следовал.

  1. убедитесь, что вы полностью удалили все текущие версии SQL только на новом сервере. Кроме того, убедитесь, что все процессы mysql-server или mariadb-server на новых и старых серверах были остановлены путем запуска:

    сервис остановка mysqld или остановка службы mariadb.

  2. на новом SQL server перейдите в каталог /var/lib/mysql и убедитесь, что в этом каталоге нет файлов вообще. Если в этом каталоге есть файлы, то ваш процесс удаления сервера баз данных с новой машины не работает и, возможно, поврежден. Убедитесь, что он полностью удален с новой машины.

  3. на старом SQL server:

    mkdir /OLDMYSQL-DIR компакт-диск /OLDMYSQL-реж tar CVF mysql-olddirectory.tar/var/lib / mysql gzip mysql-olddirectory.тар!--4-->

  4. убедитесь, что у вас есть sshd работает как на старом, так и на новом серверах. Убедитесь в наличии сетевого подключения между двумя серверами.

  5. на новом SQL server:

    mkdir / NEWMYSQL-DIR

  6. на старом SQL сервер:

    cd / OLDMYSQL-DIR scp mysql-olddirectory.смола.gz @: / NEWMYSQL-DIR

  7. на новом SQL server:

    cd / NEWMYSQL-DIR как gunzip MySQL-это olddirectory.смола.GZ или tar zxvf mysql-olddirectory.смола.gz (если tar zxvf не работает) tar xvf mysql-olddirectory.смола.gz

  8. Теперь у вас должен быть файл каталога "mysql", сидящий в NEWMYSQL-DIR. Сопротивляйся желанию убежать. только команда " cp " без переключателей. Это не сработает. Выполните следующую команду " cp " и убедитесь, что вы используете те же коммутаторы, что и я.

    компакт-диск с MySQL/ cp-rfp * /var/lib/mysql/

  9. Теперь у вас должна быть копия всех ваших старых файлов SQL server на новом сервере с разрешениями в тактичности. На новом SQL server:

    cd / var / lib / mysql/

ОЧЕНЬ ВАЖНЫЙ ШАГ. ДЕЛАТЬ НЕ ПРОПУСТИТЬ

> rm -rfp ib_logfile*
  1. теперь установите 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

  • удалить все и сделать чистую установку

Я знаю, много работы, чтобы сделать это вам не нужно.