MYSQL
HOME > DB > MYSQL
2019.02.11 / 13:43

mysqldump ibd 복구 - .frm 파일에서 mysql 데이터베이스를 복원

hanulbit
추천 수 76
Answers

누군가에게 유용 할 수 있습니다.

재해 발생 후 frm 파일 만 복구 할 수 있었지만 적어도 다음을 수행하여 FRM 파일에서 테이블 구조를 얻을 수있었습니다.

1 - 새로운 mysql 데이터베이스에 적어도 하나의 컬럼과 이름이 같은 더미 테이블을 frm 파일로 생성한다.

2-stop mysql 서비스

3 복사하여 기존의 frm 파일을 새로 만든 테이블의 frm 파일에 붙여 넣기하면 덮어 쓰기 할 것인지 묻는 메시지가 나타납니다. 모두 다 바꿔.

4 - 시작 mysql 서비스, 그리고 당신의 테이블 구조를 가지고 ...

문안 인사. 임의의

 인스턴스 확인

나는 모든 테이블을 버려서 백업을 받았다. 그러나 나중에 그것은 테이블의 .frm 파일 만 저장한다는 것을 이해합니다. 테이블의 .MYD 및 .MYI 파일을 표시하지 않습니다. 그래서 나는 나와 함께 데이터베이스의 .frm 파일 만 가지고 있으며 또한 mydatabase는 innodb이다. 그러면 데이터베이스의 데이터로 데이터베이스를 가져올 수 있습니까?




나는 .frm 파일에서 테이블 생성 SQL 코드를 생성하는 훌륭한 도구 인 mysqlfrm 을 사용했다. 테이블이 나열되었지만이 불쾌한 테이블을 찾지 못했습니다. 따라서이 도구를 사용하여 테이블을 다시 생성했습니다. 우분투에서는 다음과 같이 설치해야합니다 :

sudo apt install mysql-utilities

그때,

mysqlfrm --diagnostic mysql/db_name/ > db_name.sql

새 데이터베이스를 만든 다음,

mysql -u username -p < db_name.sql

그러나 이렇게하면 표는 제공되지만 데이터는 제공되지 않습니다. 내 경우에는 이것으로 충분했다.




시작하기 전에 WAMP 서비스를 중지하거나 서비스를 시작하라는 메시지가 표시되면 서비스를 다시 시작해야합니다.

이전 서버 인스턴스에서 MySQL 데이터 폴더로 이동하려면 기본적으로 C:\wamp\bin\mysql\mysql5.1.53\data\ 와 유사해야합니다 C:\wamp\bin\mysql\mysql5.1.53\data\ 여기서 mysql5.1.53 은 이전에 설치된 MySQL 데이터베이스의 버전 번호입니다.

이 폴더 안에는 몇 개의 파일과 폴더가 나타납니다. 폴더는 실제 MySQL 데이터베이스이며 우리가 필요로하는 .frm 파일을 포함합니다. 폴더 이름을 데이터베이스 이름으로 인식해야합니다. 이 폴더와 모든 내용은 MySQL 데이터 폴더에 직접 복사 할 수 있습니다. mysql, performance_schema, test 기본 데이터베이스를 무시할 수 있습니다.

지금 서버를 시작했다면 데이터베이스가 선택되었음을 알 수 있지만 데이터베이스는 복사 된 테이블을 전혀 포함하지 않습니다. 데이터베이스의 내용을 가져 ibdata1 데이터 폴더에 다시 ibdata1 파일이 ibdata1 .이 파일은 테이블의 데이터 파일이며 데이터 폴더에 직접 복사해야합니다. 새 파일에 이미 파일이 있어야합니다. 데이터 폴더를 "ibdata1"이라 부르므로 이전 MySQL 데이터 폴더에서 ibdata1.bak 을 복사하기 전에 ibdata1.bak 로 이름을 바꿀 수 있습니다.

일단 이것이 끝나면 모든 WAMP 서비스를 다시 시작하십시오. PhpMyAdmin을 사용하여 데이터베이스가 성공적으로 복원되었는지 확인할 수 있습니다.




같은 이름으로 새 데이터베이스를 만듭니다. .frm .ibd 파일을 xampp / mysql / data / [databasename] /

당신은 ibdata 파일뿐만 아니라 내부에서 찾을 수 있어야합니다

xampp / mysql / data / 이전 ibdata1 파일을 복사하여 붙여 넣기하고 기존 ibdata 파일로 바꿉니다.

주의 : 새 ibdata 파일에서 새로 생성 된 데이터베이스의 내용이 손실 될 수 있습니다. ]