실제 데이터베이스 파일에서 MySQL 데이터베이스를 복원 할 수 있습니까? 다음 파일 형식의 디렉토리가 있습니다.
client.frm
client.MYD
client.MYI
약 20 개의 테이블이 더 있습니다.
나는 일반적으로 mysqldump 또는 유사한 도구를 사용하여 1 SQL 파일의 모든 것을 가져옵니다. 그래서 이러한 유형의 파일을 처리하는 방법은 무엇입니까?
실제 데이터베이스 파일에서 MySQL 데이터베이스를 복원 할 수 있습니까? 다음 파일 형식의 디렉토리가 있습니다.
client.frm
client.MYD
client.MYI
약 20 개의 테이블이 더 있습니다.
나는 일반적으로 mysqldump 또는 유사한 도구를 사용하여 1 SQL 파일의 모든 것을 가져옵니다. 그래서 이러한 유형의 파일을 처리하는 방법은 무엇입니까?
답변:
MySQL MyISAM 테이블은 다음 3 가지 파일의 조합입니다.
데이터베이스 폴더에 복사하여 복원 할 수 있어야합니다 (Linux의 경우 기본 위치는 /var/lib/mysql/
)
서버가 실행 중이 아닌 동안 수행해야합니다.
mysql
실행하는 사용자가 mysqld
액세스 할 수 없었습니다. 을하는 chmod -R mysql:mysql .
MySQL의 데이터 디렉토리에하는 것은 빠르고 쉽게,하지만 내 모든 resoterd의 DB를 가지고있는 것 같았다 왜 그 전에, 어떤 테이블이 조금 더 걸리지 않았다, 알아 냈어.
chown
과 같이 복사 된 파일 이 필요할 수 있습니다 .sudo chown -R mysql:mysql /var/lib/mysql
@Vicent의 답변에서 이미 아래와 같이 MySQL 데이터베이스를 복원했습니다.
1 단계. MySQL 서버 종료
단계 2. 데이터베이스 폴더에 데이터베이스를 복사하십시오 (Linux에서 기본 위치는 / var / lib / mysql입니다). mysql 모드에서 데이터베이스 이름과 데이터베이스 이름을 동일하게 유지하십시오.
sudo cp -rf /mnt/ubuntu_426/var/lib/mysql/database1 /var/lib/mysql/
3 단계 : 폴더 변경 및 자체 모드 변경 :
sudo chown -R mysql:mysql /var/lib/mysql/database1
sudo chmod -R 660 /var/lib/mysql/database1
sudo chown mysql:mysql /var/lib/mysql/database1
sudo chmod 700 /var/lib/mysql/database1
4 단계 : 데이터베이스 폴더에 ibdata1 복사
sudo cp /mnt/ubuntu_426/var/lib/mysql/ibdata1 /var/lib/mysql/
sudo chown mysql:mysql /var/lib/mysql/ibdata1
5 단계 : ib_logfile0 및 ib_logfile1 파일을 데이터베이스 폴더에 복사하십시오.
sudo cp /mnt/ubuntu_426/var/lib/mysql/ib_logfile0 /var/lib/mysql/
sudo cp /mnt/ubuntu_426/var/lib/mysql/ib_logfile1 /var/lib/mysql/
자신을 변경하고 해당 파일의 루트를 변경하십시오.
sudo chown -R mysql:mysql /var/lib/mysql/ib_logfile0
sudo chown -R mysql:mysql /var/lib/mysql/ib_logfile1
또는
sudo chown -R mysql:mysql /var/lib/mysql
6 단계 (선택 사항) : 내 사이트에 파일을 특정 위치에 저장하도록 구성한 다음 해당 위치로 정확하게 복사합니다.
7 단계 : Mysql 서버를 시작하십시오. 모든 것이 돌아와서 즐깁니다.
그게 다야.
자세한 정보는 https://biolinh.wordpress.com/2017/04/01/restoring-mysql-database-from-physical-files-debianubuntu/ 에서 확인하십시오.
동일한 문제가 있지만 위의 지침에 따라 데이터베이스를 성공적으로 복구 할 수 없었습니다.
Ubuntu OS에서만 mysql 데이터베이스 폴더를 복구 할 수있었습니다. 내 문제는 읽을 수없는 mysql 데이터 폴더로 데이터베이스를 복구하는 방법입니다. 그래서 개발 환경을 위해 win7 OS로 다시 전환했습니다.
* 참고 win7에서 실행중인 기존 데이터베이스 서버가 있으며 복구 된 파일에서 검색 할 데이터베이스 파일이 거의 필요하지 않습니다. Ubuntu OS에서 데이터베이스 파일을 성공적으로 복구하려면 이전 데이터베이스 서버의 모든 것을 복구하기 위해 mysql 데이터베이스 서버 (win7 OS의 Ubuntu OS와 동일한 버전)를 새로 설치해야합니다.
복구 된 파일에서 다른 새 mysql 데이터베이스 서버를 동일한 버전으로 만듭니다.
MySQL 서버를 중지
복구 된 폴더를 복사하고 (C : \ ProgramData \ MySQL \ MySQL Server 5.5 \ data)에 붙여 넣으십시오. mysql 데이터베이스가 저장됩니다.
linux mysql installed 폴더에있는 ibdata1 파일을 복사하여 (C : \ ProgramData \ MySQL \ MySQL Server 5.5 \ data)에 붙여 넣습니다. 교체하기 전에 기존을 덮어 쓰거나 백업하십시오.
mysql 서버를 시작하고 데이터베이스 파일을 성공적으로 복구했는지 확인하십시오.
현재 사용중인 mysql 서버에서 복구 된 데이터베이스를 사용하려면 복구 된 데이터베이스를 내보내고 기존 mysql 서버로 가져 오십시오.
아무것도 도움이되지 않기를 바랍니다.
MySql 5.1 (Win7) 사용 DB (InnoDbs)를 재생성하기 위해 다음 dirs (my.ini params)의 모든 내용을 교체했습니다.
datadir="C:/ProgramData/MySQL/MySQL Server 5.1/Data/"
innodb_data_home_dir="C:/MySQL Datafiles/"
그 후 MySql Service를 시작했으며 모두 정상적으로 작동합니다.
필자의 경우 단순히 / var / lib / mysql에서 tc.log를 제거하면 mariadb / mysql을 다시 시작하기에 충분했습니다.