восстановить таблицу innodb из файла .idb или mysqldump UTF-16 - PullRequest
1 голос
/ 22 мая 2019

Я недавно удалил строки из таблицы innodb, которые мне теперь нужно восстановить!

Таблица имеет следующую структуру:

CREATE TABLE `myDatabase`.`myTable` (
  `file_id` int(11) NOT NULL, 
  `chunk_id` int(11) NOT NULL, 
  `filedata` longblob, 
PRIMARY KEY `PRIMARY` (`file_id`,`chunk_id`)
) ENGINE=InnoDB;

У меня есть 2 резервные копии, доступные мне;

необработанный файл IBD (2,2 ГБ) и соответствующий ему файл .frm.Файл ib_log сервера занимает всего 48 МБ, поэтому я предполагаю, что вся необходимая информация находится в файле IBD.

Я попытался создать новый экземпляр mysql, создать таблицу с такими же столбцами, отброситьзатем табличное пространство перезаписывает файл .idb с копией 2,2 ГБ, однако, когда я пытаюсь выполнить команду «ИМПОРТ табличного пространства», я получаю следующую ошибку:

ERROR 1815 (HY000): Internal error: Cannot reset LSNs in table `myDatabase`.`myTable` : Data structure corruption

Я не уверен, где я могу восстановить таблицус этой ошибкой - в моих исследованиях, похоже, об этом ничего особенного нет.

У меня есть еще одна резервная копия, она была сделана с использованием mysqldump, однако Powershell был использован для создания резервной копии, что привело крезервная копия UTF-16 LE, а не UTF-8 (mysqldump выводит UTF-8, но Powershell преобразует в UTF-16 LE при записи на диск).

При попытке импортировать этот файл SQL я получаюошибка "набор символов не поддерживается", поэтому я использовал Powershell для преобразования файла SQL в UTF-8 с помощью следующей команды:

Get-Content file.foo -Encoding Unicode | Set-Content -Encoding UTF8 newfile.foo

Хотя я могу импВ результирующей резервной копии SQL UTF-8 данные BLOB-объектов прерываются (хотя остальные столбцы file_id, chunk_id в порядке).Кажется, я не могу найти способ преобразовать резервную копию SQL UTF-16 в UTF-8, не повредив столбец BLOB-объектов, не уверен, что Powershell испортил столбец BLOB-объектов при преобразовании mysqldump UTF-8 в UTF-16.при записи на диск.

Представляется ли вероятным, что я смогу восстановить эту таблицу с помощью файла IDB или файла mysqldump UTF-16?

Спасибо, Джош

1 Ответ

0 голосов
/ 22 мая 2019

Привет, откройте файл mysqldump с помощью текстового редактора, используйте notepad ++ и найдите имя таблицы. После создания вы можете найти нужные записи. В заявлении вставки. Скопируйте и вставьте их во вновь созданный объект таблицы в базе данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...