gpt4 book ai didi

mysql - 从 .idb 文件或 mysqldump UTF-16 文件恢复 innodb 表

转载 作者:行者123 更新时间:2023-11-30 21:30:50 37 4
gpt4 key购买 nike

我最近从 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.2GB) 及其匹配的 .frm 文件。服务器 ib_log 文件只有 48 MB,所以我假设我需要的所有信息都在 IBD 文件中。

我已经尝试创建一个新的 mysql 实例,创建一个具有相同列的表,丢弃表空间,然后用 2.2GB 的副本覆盖 .idb 文件,但是当我尝试命令“导入表空间”时,我得到以下信息错误:

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

虽然我可以导入生成的 UTF-8 SQL 备份,但 blob 数据是损坏的(尽管其他列 file_id、chunk_id 都正常)。我似乎无法找到一种方法将 UTF-16 SQL 备份转换为 UTF-8 而不会搞砸 blob 列,不确定 Powershell 在将 mysqldump UTF-8 转换为 UTF-16 时是否搞砸了 blob 列写入磁盘时。

我似乎可以通过 IDB 文件或 UTF-16 mysqldump 文件恢复此表吗?

谢谢,乔希

最佳答案

您好,使用 Notepad++ 通过文本编辑器打开 mysqldump 文件并搜索表名。创建语句后,您可以找到所需的记录。在插入语句中。将它们复制并粘贴到数据库中新创建的表对象。

关于mysql - 从 .idb 文件或 mysqldump UTF-16 文件恢复 innodb 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56261187/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com