MySQL单表ibd文件恢复_MySQL
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: 555Processing table: SYS_INDEXES - total fields: 9 - nullable fields: 5 - minimum header size: 5 - minimum rec size: 29 - maximum rec size: 165Setting SPACE=1 in SYS_TABLE for `test`.`testibd`Check if space id 1 is already usedPage_id: 8, next page_id: 4294967295Record position: 65Checking field lengths for a row (SYS_TABLES): OFFSETS: 16 8 50 3 2 0 0 0 0 0 Db/table: infimumSpace id: 1768842857 (0x696E6669)Next record at offset: 8DRecord position: 8DChecking field lengths for a row (SYS_TABLES): OFFSETS: 16 11 17 24 32 36 40 48 52 52 Db/table: SYS_FOREIGNSpace id: 0 (0x0)Next record at offset: D5Record position: D5Checking field lengths for a row (SYS_TABLES): OFFSETS: 16 16 22 29 37 41 45 53 57 57 Db/table: SYS_FOREIGN_COLSSpace id: 0 (0x0)Next record at offset: 122Record position: 122Checking field lengths for a row (SYS_TABLES): OFFSETS: 16 12 18 25 33 37 41 49 53 53 Db/table: test/testibdSpace id: 2 (0x2)Next record at offset: 74Space id 1 is not used in any of the records in SYS_TABLESPage_id: 8, next page_id: 4294967295Record position: 65Checking field lengths for a row (SYS_TABLES): OFFSETS: 16 8 50 3 2 0 0 0 0 0 Db/table: infimumSpace id: 1768842857 (0x696E6669)Next record at offset: 8DRecord position: 8DChecking field lengths for a row (SYS_TABLES): OFFSETS: 16 11 17 24 32 36 40 48 52 52 Db/table: SYS_FOREIGNSpace id: 0 (0x0)Next record at offset: D5Record position: D5Checking field lengths for a row (SYS_TABLES): OFFSETS: 16 16 22 29 37 41 45 53 57 57 Db/table: SYS_FOREIGN_COLSSpace id: 0 (0x0)Next record at offset: 122Record position: 122Checking field lengths for a row (SYS_TABLES): OFFSETS: 16 12 18 25 33 37 41 49 53 53 Db/table: test/testibdSpace id: 2 (0x2)Updating test/testibd (table_id 17) with id 0x01000000SYS_TABLES is updated successfullyInitializing table definitions...Processing table: SYS_TABLES - total fields: 10 - nullable fields: 6 - minimum header size: 5 - minimum rec size: 21 - maximum rec size: 555Processing table: SYS_INDEXES - total fields: 9 - nullable fields: 5 - minimum header size: 5 - minimum rec size: 29 - maximum rec size: 165Setting SPACE=1 in SYS_INDEXES for TABLE_ID = 17Page_id: 11, next page_id: 4294967295Record position: 65Checking field lengths for a row (SYS_INDEXES): OFFSETS: 15 8 50 7 2 0 0 0 0 TABLE_ID: 3798561113125514496SPACE: 1768842857Next record at offset: 8CRecord position: 8CChecking field lengths for a row (SYS_INDEXES): OFFSETS: 15 8 16 22 29 35 39 43 47 TABLE_ID: 11SPACE: 0Next record at offset: CERecord position: CEChecking field lengths for a row (SYS_INDEXES): OFFSETS: 15 8 16 22 29 36 40 44 48 TABLE_ID: 11SPACE: 0Next record at offset: 111Record position: 111Checking field lengths for a row (SYS_INDEXES): OFFSETS: 15 8 16 22 29 36 40 44 48 TABLE_ID: 11SPACE: 0Next record at offset: 154Record position: 154Checking field lengths for a row (SYS_INDEXES): OFFSETS: 15 8 16 22 29 35 39 43 47 TABLE_ID: 12SPACE: 0Next record at offset: 22CRecord position: 22CChecking field lengths for a row (SYS_INDEXES): OFFSETS: 15 8 16 22 29 44 48 52 56 TABLE_ID: 17SPACE: 2Updating SPACE(0x00000001 , 0x01000000) for TABLE_ID: 17sizeof(s)=4Next record at offset: 74SYS_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 = 0xEECB309Dfixing old checksum of page 8page 8 invalid (fails new style checksum)page 8: new style: calculated = 0x6F0C29B4; recorded = 0x3D02308Cfixing new checksum of page 8page 11 invalid (fails old style checksum)page 11: old style: calculated = 0x3908087C; recorded = 0xF9E8D30Cfixing old checksum of page 11page 11 invalid (fails new style checksum)page 11: new style: calculated = 0xB26CFD77; recorded = 0xDB25D39Dfixing new checksum of page 11
Step 8 : 启动mysql服务
shell> service mysqld3321 start
参考文档:
http://www.chriscalender.com/?p=28
http://www.mysqlperformanceblog.com/2011/05/13/connecting-orphaned-ibd-files/
http://blogs.innodb.com/wp/2012/04/innodb-transportable-tablespaces/
bitsCN.com

핫 AI 도구

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

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

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

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

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

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

뜨거운 주제











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

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

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

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

제목: MySQL에서 테이블 데이터를 보기 위한 명령문 및 특정 코드 예 MySQL은 모든 규모의 애플리케이션에서 널리 사용되는 오픈 소스 관계형 데이터베이스 관리 시스템입니다. MySQL에서 테이블 데이터를 보는 것은 매우 기본적인 작업입니다. 다음에서는 구체적인 문과 코드 예제를 통해 이 작업을 구현하는 방법을 소개합니다. 먼저 MySQL 명령줄 도구를 통해 테이블 데이터를 보기 위한 명령문과 구체적인 코드 예제를 소개합니다. "employees"라는 테이블이 있다고 가정하면 다음은 패스입니다.

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

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

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