좋은 오후에요.
내 Debian 9 서버에서 OS에 액세스할 수 없게 만드는 문제가 발생했습니다. 내 프로젝트에 대한 모든 원시 데이터베이스 파일(/var/lib/mysql)을 추출했지만 불행하게도 엔진 유형이 InnoDB로 설정되었습니다.
어떻게든 데이터베이스를 복구할 수 있는 기회가 있나요? 감사해요.
답변1
전체 내용을 가지고 있다면 현재 내용을 가지고 있는 내용으로 /var/lib/mysql
완전히 바꿔야 할 것입니다 ./var/lib/mysql
mariadb/mysql 옵션에 따라 innodb 데이터의 일부 또는 전체가 전역적이며 /var/lib/mysql/ibdata1
, 및 /var/lib/mysql/ib_logfile
파일에 저장됩니다. 따라서 단순히 복원하는 것만으로 /var/lib/mysql/databasename/table*
는 innodb 데이터를 복원하는 데 충분하지 않습니다.
이미 해당 디렉토리를 복원했거나 사용을 시작한 경우 해당 디렉토리의 현재 현재 내용을 일시적으로 다른 위치로 이동할 수 있습니다. 또는 VM에서 새 시스템을 임시로 시작하거나 /var/lib/mysql
아무것도 중단하지 않고 전체 디렉터리 복원을 테스트할 수 있는 것이 더 좋습니다.
이전 데이터를 저장한 후에 /var/lib/mysql
는 서버를 시작하고 데이터를 추출할 수 있어야 합니다. 권한이 얼마나 잠겨 있는지에 따라 권한을 우회하는 옵션을 사용하여 mariadb를 시작해야 할 수도 있습니다. 하지만 저는 이를 계속 사용하지 않을 것입니다. 대신에 그 시점에서는 mysqldump나 즐겨 사용하는 도구를 사용하여 데이터베이스를 덤프한 다음 이를 프로덕션 데이터베이스로 다시 가져오는 것이 좋습니다.
작업을 뒤로 이동하면서 mysql/mariadb 서비스 계정(일반적으로 mysql/mysql)이 모든 파일을 소유하고 이에 대한 읽기-쓰기 액세스 권한을 갖고 있는지 확인하십시오.