데이터 베이스 MySQL 튜토리얼 MySQL单表ibd文件恢复方法详解_MySQL

MySQL单表ibd文件恢复方法详解_MySQL

Jun 01, 2016 pm 01:23 PM
새로운

bitsCN.com 前言:
随着innodb的普及,innobackup也成为了主流备份方式。物理备份对于新建slave,全库恢复的需求都能从容应对。
但当面临单表数据误删,或者单表误drop的情况,如果使用物理全备进行恢复呢?
下文将进行详细分析。
恢复过程中需要用到的工具,percona data recover tool : https://launchpad.net/percona-innodb-recovery-tool

情况一:误删部分数据,需要用最近一次备份覆盖
来自同一台机器的ibd恢复覆盖,且备份后table没有被recreate过。
这种情况是最简单的,备份时的ibd文件(后称老ibd)中的space id和index id 与 新ibd的space id 和index id一致。
且和ibdata文件中的space id和index id一致。因此,物理文件可以直接覆盖做恢复。
以下是详细步骤

Step -1 : 物理备份
innobackupex --defaults-file=/usr/local/mysql3321/my.cnf --socket=/xfs/mysql3321/mysql.sock --user=root --password=password /xfs/backup/
Step 0 : apply log
innobackupex --apply-log --defaults-file=/usr/local/mysql3321/my.cnf /xfs/backup/2012-10-17_11-29-20/
Step 1 : 备份现在的ibd文件(可选)
cp -a testibd.ibd testibd.bak
Step 2 : 舍弃现在ibd文件
mysql> alter table testibd discard tablespace
Step 3 : 复制备份ibd文件
shell> cp /xfs/backup/2012-10-17_11-29-20/test/testibd.ibd /xfs/mysql3321/test/
shell> chown mysql:mysql /xfs/mysql3321/test/testibd.ibd
Step 4 : 导入ibd文件
mysql> alter table testibd import tablespace

情况二:误删 table,表结构已经被drop了
这种情况稍复杂,不过恢复过程还是比较容易操作的。由于table被drop后的space id会留空因此备份文件的space id不会被占用。
我们只需要重建表结构,然后把ibdata中该表的space id还原,物理文件可以直接覆盖做恢复了。

Step 1 : 重建表
mysql> create table testibd (UserID int);
Step 2 : 关闭mysql服务(必须)
shell> service mysqld3321 stop
Step 3: 准备ibd文件 apply log
shell> innobackupex --apply-log --defaults-file=/usr/local/mysql3321/my.cnf /xfs/backup/2012-10-17_11-29-20/
Step 4 : 备份现在的ibd文件(可选)
cp -a testibd.ibd testibd.bak
Step 5 : 复制备份ibd文件
shell> cp -a /xfs/backup/2012-10-17_11-29-20/test/testibd.ibd /xfs/mysql3321/test/
shell> chown mysql:mysql /xfs/mysql3321/test/testibd.ibd
Step 6 : 使用percona recovery tool 修改ibdata
shell> /root/install/percona-data-recovery-tool-for-innodb-0.5/ibdconnect -o /xfs/mysql3321/ibdata1 -f /xfs/mysql3321/test/testibd.ibd -d test -t testibd

Initializing table definitions...
Processing table: SYS_TABLES
- total fields: 10
- nullable fields: 6
- minimum header size: 5
- minimum rec size: 21
- maximum rec size: 555
Processing table: SYS_INDEXES
- total fields: 9
- nullable fields: 5
- minimum header size: 5
- minimum rec size: 29
- maximum rec size: 165
Setting SPACE=1 in SYS_TABLE for `test`.`testibd`
Check if space id 1 is already used
Page_id: 8, next page_id: 4294967295
Record position: 65
Checking field lengths for a row (SYS_TABLES): OFFSETS: 16 8 50 3 2 0 0 0 0 0
Db/table: infimum
Space id: 1768842857 (0x696E6669)
Next record at offset: 8D
Record position: 8D
Checking field lengths for a row (SYS_TABLES): OFFSETS: 16 11 17 24 32 36 40 48 52 52
Db/table: SYS_FOREIGN
Space id: 0 (0x0)
Next record at offset: D5
Record position: D5
Checking field lengths for a row (SYS_TABLES): OFFSETS: 16 16 22 29 37 41 45 53 57 57
Db/table: SYS_FOREIGN_COLS
Space id: 0 (0x0)
Next record at offset: 122
Record position: 122
Checking field lengths for a row (SYS_TABLES): OFFSETS: 16 12 18 25 33 37 41 49 53 53
Db/table: test/testibd
Space id: 2 (0x2)
Next record at offset: 74
Space id 1 is not used in any of the records in SYS_TABLES
Page_id: 8, next page_id: 4294967295
Record position: 65
Checking field lengths for a row (SYS_TABLES): OFFSETS: 16 8 50 3 2 0 0 0 0 0
Db/table: infimum
Space id: 1768842857 (0x696E6669)
Next record at offset: 8D
Record position: 8D
Checking field lengths for a row (SYS_TABLES): OFFSETS: 16 11 17 24 32 36 40 48 52 52
Db/table: SYS_FOREIGN
Space id: 0 (0x0)
Next record at offset: D5
Record position: D5
Checking field lengths for a row (SYS_TABLES): OFFSETS: 16 16 22 29 37 41 45 53 57 57
Db/table: SYS_FOREIGN_COLS
Space id: 0 (0x0)
Next record at offset: 122
Record position: 122
Checking field lengths for a row (SYS_TABLES): OFFSETS: 16 12 18 25 33 37 41 49 53 53
Db/table: test/testibd
Space id: 2 (0x2)
Updating test/testibd (table_id 17) with id 0x01000000
SYS_TABLES is updated successfully
Initializing table definitions...
Processing table: SYS_TABLES
- total fields: 10
- nullable fields: 6
- minimum header size: 5
- minimum rec size: 21
- maximum rec size: 555
Processing table: SYS_INDEXES
- total fields: 9
- nullable fields: 5
- minimum header size: 5
- minimum rec size: 29
- maximum rec size: 165
Setting SPACE=1 in SYS_INDEXES for TABLE_ID = 17
Page_id: 11, next page_id: 4294967295
Record position: 65
Checking field lengths for a row (SYS_INDEXES): OFFSETS: 15 8 50 7 2 0 0 0 0
TABLE_ID: 3798561113125514496
SPACE: 1768842857
Next record at offset: 8C
Record position: 8C
Checking field lengths for a row (SYS_INDEXES): OFFSETS: 15 8 16 22 29 35 39 43 47
TABLE_ID: 11
SPACE: 0
Next record at offset: CE
Record position: CE
Checking field lengths for a row (SYS_INDEXES): OFFSETS: 15 8 16 22 29 36 40 44 48
TABLE_ID: 11
SPACE: 0
Next record at offset: 111
Record position: 111
Checking field lengths for a row (SYS_INDEXES): OFFSETS: 15 8 16 22 29 36 40 44 48
TABLE_ID: 11
SPACE: 0
Next record at offset: 154
Record position: 154
Checking field lengths for a row (SYS_INDEXES): OFFSETS: 15 8 16 22 29 35 39 43 47
TABLE_ID: 12
SPACE: 0
Next record at offset: 22C
Record position: 22C
Checking field lengths for a row (SYS_INDEXES): OFFSETS: 15 8 16 22 29 44 48 52 56
TABLE_ID: 17
SPACE: 2
Updating SPACE(0x00000001 , 0x01000000) for TABLE_ID: 17
sizeof(s)=4
Next record at offset: 74
SYS_INDEXES is updated successfully

Step 7 : 使用percona recovery tool 重新checksum ibdata
重复执行以下命令,直到程序没有输出为止。
shell> /root/install/percona-data-recovery-tool-for-innodb-0.5/innochecksum -f /xfs/mysql3321/ibdata1

page 8 invalid (fails old style checksum)
page 8: old style: calculated = 0xF4AD74CB; recorded = 0xEECB309D
fixing old checksum of page 8
page 8 invalid (fails new style checksum)
page 8: new style: calculated = 0x6F0C29B4; recorded = 0x3D02308C
fixing new checksum of page 8
page 11 invalid (fails old style checksum)
page 11: old style: calculated = 0x3908087C; recorded = 0xF9E8D30C
fixing old checksum of page 11
page 11 invalid (fails new style checksum)
page 11: new style: calculated = 0xB26CFD77; recorded = 0xDB25D39D
fixing new checksum of page 11

Step 8 : 启动mysql服务
shell> service mysqld3321 startbitsCN.com

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Lightning Simulator에서 새 시뮬레이터를 만드는 방법 - Lightning Simulator에서 새 시뮬레이터를 만드는 방법 Lightning Simulator에서 새 시뮬레이터를 만드는 방법 - Lightning Simulator에서 새 시뮬레이터를 만드는 방법 Mar 05, 2024 pm 03:04 PM

최근 번개 시뮬레이터 소프트웨어를 다운로드하고 접속한 일부 사용자가 편집자에게 번개 시뮬레이터에서 새 시뮬레이터를 만드는 방법을 문의했습니다. 다음 내용에서는 번개 시뮬레이터에서 새 시뮬레이터를 만드는 방법을 살펴보겠습니다. . 번개 시뮬레이터 소프트웨어를 찾아보세요. Thunderbolt 멀티 오프너를 열려면 두 번 클릭하세요. 새로 만들기/시뮬레이터 복사를 클릭합니다. 새 시뮬레이터를 클릭합니다. 새로운 시뮬레이터를 얻을 수 있습니다. 번개 시뮬레이터 소프트웨어를 찾아 두 번 클릭하여 번개 다중 열기를 열고 새로 만들기/시뮬레이터 복사를 클릭하고 새 시뮬레이터를 클릭하면 새 시뮬레이터가 제공됩니다.

컴퓨터에서 새 Word 문서를 만드는 방법 컴퓨터에서 새 Word 문서를 만드는 방법 Dec 27, 2023 pm 10:05 PM

새 워드 문서를 만드는 방법은 여러 가지가 있습니다. 바탕 화면을 마우스 오른쪽 버튼으로 클릭하고 새 문서 문서(New Doc Document)나 Docx 문서(Docx Document)를 클릭하면 됩니다. 컴퓨터를 사용하여 새 단어 문서를 만드는 방법: win11: 1. 먼저 "새로 만들기"를 마우스 오른쪽 버튼으로 클릭합니다. 2. 그런 다음 "docx 또는 doc" 파일을 선택합니다. 3. 드디어 생성이 완료됩니다. win10: 1. 마우스 오른쪽 버튼을 클릭하고 "새로 만들기"를 선택합니다. 2. 그런 다음 두 문서 중 하나를 선택합니다. 3. 드디어 생성이 완료되었습니다. win7: 1. 먼저 마우스 오른쪽 버튼을 클릭하고 "새로 만들기"를 선택합니다. 2. 그런 다음 단어 문서를 선택하십시오. 3. 드디어 새로운 창조가 완성됩니다.

Win10 디스크에 새 스팬 볼륨의 회색 버전을 만드는 방법 Win10 디스크에 새 스팬 볼륨의 회색 버전을 만드는 방법 Jul 02, 2023 am 08:13 AM

Win10 디스크에 새로 생성된 스팬 볼륨이 회색으로 표시되면 어떻게 해야 합니까? 때로는 하드 디스크에 사용되지 않은 공간이 여러 개 있을 수 있습니다. 이를 병합하여 논리 볼륨에 넣어 여러 하드 디스크의 공간을 보다 효율적으로 사용할 수 있습니다. 그러나 일부 네티즌들은 새로운 스팬 볼륨을 생성할 때 win10 시스템에 문제가 있다고 말했습니다. 그들은 디스크의 새로운 스팬 볼륨이 회색으로 표시되지 않은 것을 발견했습니다. 새로운 스팬 볼륨을 생성하는 방법은 무엇입니까? 아래 편집기는 새로운 교차 영역 볼륨을 생성하는 올바른 방법을 알려줍니다. Win10 디스크에 스팬 볼륨을 생성하기 위한 회색 솔루션 단계 먼저 아래 그림과 같이 두 하드 디스크의 공간은 동일한 볼륨을 사용할 수 있으며 스팬 볼륨을 생성하면 됩니다. 그러면 스팬 볼륨이 회색으로 표시되지 않는 이유는 다음 요인 때문일 수 있습니다. 1. 스팬 볼륨이 포함된 경우

Enterprise WeChat에서 새로운 월간 보고서를 생성하는 자세한 방법 Enterprise WeChat에서 새로운 월간 보고서를 생성하는 자세한 방법 Mar 25, 2024 pm 05:36 PM

1. 기업 위챗을 개설하세요. 2. 좌측의 [앱] 아이콘 버튼을 클릭하세요. 3. [보고서], [새로 만들기], [월별 보고서] 옵션을 클릭하세요. 4. 그러면 이번 달의 업무 등을 입력해야 한다는 것을 알 수 있습니다. 5. 이번 달 작업 내용을 입력하고, 기타 항목을 작성하거나 작성하지 않을 수 있으며, [제출] 버튼을 클릭하세요. 6. 마지막으로 월별 보고서의 세부정보를 확인할 수 있습니다.

Win10 우클릭 시 '새로 만들기' 옵션이 없는 문제 해결 Win10 우클릭 시 '새로 만들기' 옵션이 없는 문제 해결 Jan 05, 2024 am 09:45 AM

win10 시스템을 사용할 때 일부 친구들은 데스크탑에서 마우스 오른쪽 버튼을 클릭할 때 오른쪽 클릭 메뉴에 새로운 옵션이 없다는 것을 발견했습니다. 실제로는 레지스트리를 통해 마우스 오른쪽 버튼 클릭 옵션을 추가하기만 하면 됩니다. 새 항목을 만듭니다. Windows 10을 마우스 오른쪽 버튼으로 클릭할 때 새 옵션이 없는 경우 수행할 작업: 1. 키 조합 + 실행 열기를 누르고 Enter 키를 누른 후 확인을 클릭하여 레지스트리 편집기를 엽니다. 2. 그런 다음 폴더를 확장합니다. 3. 그런 다음 폴더를 찾으십시오. 해당 폴더가 없으면 폴더를 마우스 오른쪽 버튼으로 클릭하고 이름을 지정하십시오. 4. 새 폴더에서 파일을 연 후 이 숫자 데이터를 다음으로 변경합니다. 5. 그런 다음 컴퓨터를 다시 시작하여 문제를 해결하십시오.

Realme 휴대폰에서 폴더를 만드는 단계별 가이드 Realme 휴대폰에서 폴더를 만드는 단계별 가이드 Mar 23, 2024 pm 03:51 PM

Realme 휴대폰에서 폴더를 만드는 단계별 가이드 일상 생활에서 우리는 휴대폰을 사용하여 사진, 비디오, 문서 등 다양한 파일을 저장합니다. 하지만 시간이 지날수록 휴대폰에 저장되는 파일의 개수가 늘어나 휴대폰의 메모리가 부족해지거나 파일 관리에 어려움을 겪을 수 있습니다. 파일을 보다 잘 정리하고 휴대폰 사용의 효율성을 높이기 위해 휴대폰 폴더 설정이 특히 중요해졌습니다. Realme Mobile은 강력한 시스템과 다양한 기능을 갖춘 인기 스마트폰 브랜드입니다. Realme 휴대폰에 폴더를 만들면 사용자가 파일을 더 잘 정리하는 데 도움이 됩니다.

Win11 새 문서 튜토리얼 Win11 새 문서 튜토리얼 Dec 30, 2023 pm 07:59 PM

win11에서는 새 문서를 생성하여 기사나 메모를 추가할 수 있지만 일부 친구는 win11에서 새 문서를 만드는 방법을 모릅니다. 실제로는 빈 공간을 마우스 오른쪽 버튼으로 클릭하면 됩니다. win11에서 새 문서를 생성하는 방법: 1. 바탕 화면이나 탐색기의 빈 공간을 마우스 오른쪽 버튼으로 클릭하고 "새로 만들기"를 선택합니다. 2. 그런 다음 "텍스트 문서"를 선택합니다. 3. 새 생성이 완료되면 새로 생성된 문서를 볼 수 있습니다. 텍스트 문서를 만들었습니다. 4. "doc/docx 문서"를 "생성"하도록 선택할 수도 있습니다. 5. 생성이 완료되면 문서를 두 번 클릭하여 엽니다.

Feige Customer Service Workbench에서 새 하위 계정을 만드는 방법 - Feige Customer Service Workbench에서 새 하위 계정을 만드는 방법 Feige Customer Service Workbench에서 새 하위 계정을 만드는 방법 - Feige Customer Service Workbench에서 새 하위 계정을 만드는 방법 Mar 04, 2024 pm 04:58 PM

많은 사람들이 작업할 때 Feige Customer Service Workbench를 사용하는데, Feige Customer Service Workbench에서 새 하위 계정을 만드는 방법을 알고 계시나요? 아래에서 편집자가 Feige Customer Service Workbench에서 새 하위 계정을 만드는 방법을 알려드리겠습니다. 관심이 있으신가요? 아래를 살펴보겠습니다. 1. 먼저 메인페이지에 접속하여 좌측 스토어를 클릭한 후, 스토어 관리 옵션을 선택하세요. 2. 그런 다음 드롭다운 옵션에서 하위 계정 관리 옵션을 클릭합니다. 3. 마지막으로 Account Management Office에서 새 서브 계정 생성을 클릭하세요.

See all articles