방법: MySQL에서 데이터 복구(HDD에 파일만 남음)

방법: MySQL에서 데이터 복구(HDD에 파일만 남음)

결국 데비안 가상 서버를 etch에서 lenny로 업그레이드한 후. (전체 내용을 보려면 여기를 읽어보세요:데비안: etch에서 lenny로 업그레이드가 실패합니다)

이제 MySQL DB에서 데이터(모든 테이블 포함)가 손실되었습니다. 파일은 여전히 ​​하드 드라이브에 존재하며 phpMyAdmin(PMA라고도 함)은 여전히 ​​모든 데이터베이스 이름을 표시하지만 테이블은 표시하지 않습니다. 'mysql' 및 ''information_schema' 데이터베이스에는 여전히 테이블이 있습니다. 그러나 예를 들어 'mysql.user'에 액세스하면 다음 오류가 발생합니다.

#1017 - Can't find file: './mysql/user.frm' (errno: 13) 

물론 (아무리1337 PEBKAC않습니다) mySQL 덤프 파일이 없습니다. (F 단어를 여러 번 사용)

파일 구조에서 손실된 데이터를 복원할 수 있는 도구를 아는 사람이 있습니까?

레이어 8 문제에 대한 도움을 주셔서 미리 감사드립니다.

답변1

파일이 있으면 데이터를 볼 수 있어야 합니다(innodb 테이블 제외). 이 오류는 일반적으로 권한 문제가 있을 때 발생합니다. /var/lib/mysql 파일을 mysql:mysql로 ​​변경하고 문제가 해결되는지 확인하세요.
chown -R mysql:mysql /var/lib/mysql

답변2

가장 먼저 해야 할 일: 당황하지 마세요. 대부분의 경우 모든 것이 손실되지 않았으므로 무슨 일이 일어났는지 알아내기만 하면 됩니다.

  • 업그레이드 중에 MySQL 데이터 디렉터리 경로가 변경되었습니까? (그렇지 않다고 생각합니다. 내 기억이 도움이 된다면 Etch와 Lenny는 모두 기본적으로 /var/lib/mysql에서 항목을 제공합니다. 하지만 이전에 경로를 직접 변경했다면 무슨 일이 일어났을 수도 있습니다.)

  • /var/lib/mysql에 CD를 넣으면 디렉토리를 찾을 수 있습니까?mysql그리고 파일user.frm그 밑에? 할 수 없다면 find / -iname 'user.frm'뭔가를 반환합니까?

  • 아래에 주목할 가치가 있습니까?/var/로그, 특히 아래/var/log/mysql?

다른 모든 방법이 실패하면 다른 컴퓨터(또는 가상 머신)에 다른 Debian 설치를 설정하고 거기에 Debian Etch를 설치한 다음 MySQL 데이터 디렉터리를 복사하여 작동하는지 확인하세요. 그런 다음 적절한 실행mysqldump그리고 그것을 새로운 Lenny에게 복원하세요.

편집하다:좋아, 이건 단지 권한 문제였을 뿐이야. 다른 사람에게 도움이 될 수 있도록 답변을 여기에 남겨 두겠습니다.

답변3

음, 몇 가지 사항:

먼저 현재 보유하고 있는 파일을 백업하세요. 일부 작업은 수정될 수 있으므로 지금보다 상황이 더 나빠지는 것을 원하지 않습니다.

현재 데이터 디렉토리에 파일이 있다고 가정하겠습니다 mysql/user.frm. 그렇다면 문제는 새 버전의 MySQL이 데이터를 잘못된 위치에서 찾고 있다는 것입니다. 확인해 보세요문서my.cnf, 특히 에 대한 부분입니다 DATADIR. 이전 파일 세트를 가리키도록 기본 datadir을 변경할 수 있습니다. 그런 다음 명령을 실행하여 mysql_upgrade테이블을 확인하고 테이블 구조를 업그레이드할 수 있습니다. 문서를 참조하세요.

mysql/user.frm데이터 디렉터리에 파일 이 없으면 문제가 발생한 것입니다. 설치를 수동으로 다시 완료해야 합니다(재설치가 아닌 설치 후 단계만 완료). 이렇게하려면 프로그램을 실행하십시오.mysql_install_db. 그러면 사용자 테이블이 복원됩니다. 모든 인증 정보가 손실된다는 점에 유의하세요(user.frm이 존재하지 않기 때문에 이미 사라진 것으로 확인).

해당 경로 중 하나를 선택하기 전까지는 더 이상 도움을 드릴 수 없다는 점을 고려하여 지금은 그대로 두겠습니다. 어떤 것을 선택하셨는지 알려주시면 계속해서 최선을 다해 도와드리겠습니다.

답변4

이것은 생성될 수 있는 인덱스 파일입니다.MySQL 수리

mysql 파일을 백업하고 phpmyadmin에 쿼리를 입력합니다.

REPAIR TABLE tbl_name [, tbl_name] USE_FRM;

MySQL이 이를 복구해 줄 것입니다.

관련 정보