programing

.frm 파일에서 mysql 데이터베이스 복원

linuxpc 2023. 9. 8. 21:13
반응형

.frm 파일에서 mysql 데이터베이스 복원

저는 지원을 받기 위해 매주 모든 테이블을 버리고 있습니다.하지만 나중에 알고 보니 테이블의 .frm 파일만 저장하고 있습니다.안 나와요.MYD랑.테이블의 MYI 파일입니다.그래서 데이터베이스의 .frm 파일만 가지고 있고 데이터베이스도 nodb에 있습니다.그래서 데이터베이스에 있는 데이터로 데이터베이스를 받을 수 있습니까?

합니다. 합니다, .y를 베끼는 것만으로는 합니다..frm에 저장할 을스에야다도 복사해야 합니다.ib_logfiles그리고.ibdata파일을 데이터 폴더에 저장합니다.했습니다를 했습니다..frm파일을 복사하고 서버를 재시작하면 데이터베이스가 복원됩니다.

위의 파일을 복사한 후 다음 명령을 실행합니다.

sudochown -Rmysql:mysql /var/lib/mysql

위 명령어는 mysql 아래의 파일 소유자를 변경하고 폴더를 MySql 사용자로 변경합니다.이 mysql을 합니다..frm그리고.ibdata파일

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

재해가 발생한 후에야 frm 파일을 복구할 수 있었습니다. 최소한 다음과 같은 작업을 통해 FRM 파일에서 테이블 구조를 얻을 수 있었습니다.

1- 새 mysql 데이터베이스에 frm 파일이 있는 SAME NAME과 적어도 하나의 열이 있는 일부 더미 테이블을 만듭니다.

2-stop mysql 서비스

3- 이전 frm 파일을 새로 만든 테이블의 frm 파일에 복사하여 붙여넣습니다. 각 파일에 대해 덮어쓸지 여부를 묻습니다. 모두 교체합니다.

4-start mysql 서비스, 그리고 당신은 당신의 테이블 구조를 가지고 있습니다.

안부 전해요.아무 친구나

여기서도 이 질문에 답했습니다: https://dba.stackexchange.com/a/42932/24122

저는 최근에 이와 같은 문제를 겪었습니다.저는 Mac을 사용하고 있기 때문에 데이터베이스를 MySQL 덤프에 내보낼 수 있는 지점으로 복원하기 위해 MAMP를 사용했습니다.

당신은 그것에 대한 전체 블로그 게시물을 여기서 읽을 수 있습니다: http://www.quora.com/Jordan-Ryan/Web-Dev/How-to-Recover-innoDB-MySQL-files-using-MAMP-on-a-Mac

다음이 있어야 합니다.

-ibdata1

-ib_logfile0

-ib_logfile1

-.mysql_database 폴더의 FRM 파일

- 파괴하고자 하는 MAMP / MAMP Pro 신규 설치(필요시)

  1. SSH를 웹 서버(개발, 프로덕션, 차이 없음)에 넣고 mysql 폴더(Linux의 Plesk 설치의 경우 내 것은 /var/lib/mysql에 있음)를 찾습니다.
  2. mysql 폴더 압축
  3. MyISAM이든 innoDB이든 모든 mySQL 데이터베이스를 포함해야 하는 mySQL 폴더의 아카이브를 다운로드합니다(이 파일을 scp하거나 필요한 경우 다운로드 가능한 디렉토리로 이동할 수 있음).
  4. MAMP 설치(Mac, Apache, MySQL, PHP)
  5. /Applications/MAMP/db/mysql/로 이동합니다.
  6. zip 아카이브에 백업/응용프로그램/MAMP/db/mysql(만일의 경우)
  7. 프로덕션 서버에서 mysql 폴더의 아카이브에 포함된 모든 폴더 및 파일 복사(mt Plesk 환경의 경우 덮어쓰지 않음):

    -/응용프로그램/MAMP/db/mysql/mysql/mysql/

    -/응용프로그램/MAMP/db/mysql/mysql_upgrade_info

    -/응용프로그램/MAMP/db/mysql/performance_schema

  8. 그리고 voila, 당신은 이제 phpMyAdmin에서 데이터베이스에 접근할 수 있을 것입니다, 정말 다행입니다!

그러나 아직 완료되지 않았습니다. 이제 이러한 파일을 프로덕션 환경에 복원하려면 mysq 덤프를 수행해야 하며, 대형 데이터베이스의 경우 phpmyadmin 인터페이스가 시간 초과됩니다.다음 단계를 따릅니다.

http://nickhardeman.com/308/export-import-large-database-using-mamp-with-terminal/

참고를 위해 아래에 복사하였습니다.기본 MAMP 설치 시 암호는 "root"입니다.

Terminal을 사용하여 MAMP용 mysqldump를 실행하는 방법

MAMP에서 데이터베이스 내보내기[1]

1단계: 새 터미널 창을 엽니다.

2단계: 터미널 cd/applications/MAMP/library/bin에 다음 행을 입력하여 MAMP 설치로 이동합니다. Enter 키를 누릅니다.

3단계 : dump 명령 쓰기 ./mysqldump -u [USERNAME] -p [DATA_BASNAME] > [PATH_TO_FILE] 엔터키를 누릅니다.

예:

./mysqldump -u root -p wp_database > /Applications/MAMP/htdocs/symposium10_wp/wp_db_onezero.sql

빠른 팁: 폴더로 빠르게 이동하려면 폴더를 터미널 창으로 끌면 폴더의 위치가 기록됩니다.누가 이걸 보여줬을 때 정말 좋은 날이었어요.

4단계:이 텍스트 줄은 Enter password를 누른 후에 표시됩니다. 그래서 추측하고, 암호를 입력하고, 문자가 나타나지 않지만 거기에 있다는 것을 명심하십시오. Enter 키를 누릅니다.

5단계: 파일을 저장한 위치를 확인합니다. 파일이 있는 경우 SUCCESS 이제 데이터베이스를 가져올 수 있습니다. 데이터베이스에 대한 개요는 다음에 설명합니다.

이제 mysql 데이터베이스를 내보냈으니 프로덕션 환경에서 가져올 수 있습니다.

는 했습니다.mysqlfrm.파일에서입니다.frm 파일로부터 테이블 생성 sql 코드를 생성하는 훌륭한 도구입니다.테이블이 나열되어 있는데도 이 고약한 테이블을 찾을 수 없습니다.그래서 이 도구를 사용해 테이블을 재생했습니다.해야 합니다.

sudo apt install mysql-utilities

그리고나서,

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

새 데이터베이스를 만든 다음 사용할 수 있습니다.

mysql -u username -p < db_name.sql

그러나 이렇게 하면 표는 제공되지만 데이터는 제공되지 않습니다.저 같은 경우는 이 정도면 충분했습니다.

네! 가능합니다.

긴 접근 방식이지만 모든 데이터를 사용하여 얻을 수 있습니다..frm물론, 당신은 다른 파일들이 필요합니다.mysql/data디렉토리 입니다.

나의 문제

어느날 하드디스크가 고장나서 부팅 블루스크린 오류가 발생했습니다.여러 대의 기계를 연결해 보았지만 작동이 되지 않았습니다.부팅 오류이기 때문에 파일이 걱정되었고, 보조 하드디스크로 시도해보고 폴더와 파일을 복구하려고 했습니다. xampp 전체도 했습니다.c:/xampp혹시 모르니 최근 데이터베이스에 대한 정보가 없었기 때문에 데이터베이스를 어떻게 검색해야 할지 정말 고민했습니다.데이터베이스에는 고객의 프로젝트 관리 및 개인 문서가 많이 있습니다.

StackOverflow 주석에 나열된 메소드 중 적어도 저에게는 작동하지 않습니다.는박다데다emtoe를는ger2박데kelsgom.frm파일. 많은 사람들로부터 여러 접근 방식을 접했지만 구현할 때 모든 것이 좌절되고 오류가 발생했습니다.만약 대부분의 사람들이 (그들의 의견에 근거하여) 그것을 작동시킨다면, 제가 놓치고 있는 것은 무엇일까요?

너무 절박해서 창까지 다시 설치해서 소프트웨어를 모두 잃고 다시 시도했습니다.하지만 여전히 같은 오류가 있습니다.

더스틴 데이비스 덕분에

저는 그의 블로그에서 해결책을 찾았고, 그가 했던 것과 정확히 같은 방법으로 해결할 수 있었습니다.더스틴 데이비스(https://dustindavis.me/restoring-mysql-innodb-files-on-windows/) )에게 공을 돌리겠습니다.당신은 여기서 그의 블로그로 뛰어들어 그의 방법을 시도해 볼 수 있습니다. 꽤 명확하고 쉽게 따라 할 수 있습니다.

하지만 제가 그의 접근법을 시도하면서 발견한 것이 있는데, 그는 블로그에서 설명하지 않았고, 저는 제가 어떻게 했는지, 독자 분이 무엇을 찾아야 하는지 최선을 다해 설명할 것입니다.

Follow this exactly

중요: 동일한 버전의 XAMPP를 설치해야 합니다.이전 XAMPP에서 새 버전으로 복사 붙여넣을 수 없습니다.그러면 다음과 같은 결과가 나옵니다.__config아니면__tracking실수.

How to check your XAMPP version

  1. Go to your xampp folder (you're backed up xampp).
  2. 열기readme_en.txtxampp의 루트 디렉토리에 있는 파일.
  3. 위에 있는 버전을 보시면 됩니다.###### ApacheFriends XAMPP Version X.X.XX ######

Files require to restore

xampp(old folder)/mysql/data/

ibdata1
ib_logfile0
ib_logfile1
<databasename>/*.frm
<databasename>/*.ibd

Step 1

  1. After installing the same version of xampp.
  2. Do not start the apache or myql

Step 2

  • 가.mysql/data폴더를 열고 교체합니다.ibdata1,ib_logfile0,그리고.ib_logfile1
  • 이제 복사 붙여넣기database폴더를 이전 xampp 백업에서 새로 설치된 xampp 폴더로c:/xampp/mysql/data/함유하고 있는.frm그리고..ibdfiles(파일), 확실하지 않은 경우 하나의 데이터베이스로 시도해 봅니다.

Step 3

  • 에 가다c:/xampp/mysql/bin찾아보세요my.cn.
  • 열기my.cn줄을 지어 찾다#skip-innodb그리고 그 아래에 다음과 같은 선을 찾으세요.innodb_log_file_size=5M로 바꾸다170M.innodb_log_file_size=170M. 로그 파일 크기이며, 잘 모르실 경우 다음으로 설정하십시오.170

Step 4

  • 이제 파일을 엽니다.mysql_start.bat(윈도우즈 배치 파일) 에 있는c:/xampp/디렉토리 입니다.

  • 더하다–innodb_force_recovery=6후에... --console

     ....
    
     mysql\bin\mysqld --defaults-file=mysql\bin\my.ini --standalone --console -–innodb_force_recovery=6
     if errorlevel 1 goto error
     goto finish
    

Step 5

  • Now Start your Apache and Mysql.
  • 너의 것으로 가PHPMyAdmin데이터베이스와 테이블을 확인합니다.오류가 발생하지 않으면 올바른 방향으로 가는 것입니다.
  • Stop the Apache and Mysql and copy-paste the rest of the databases.

I just copy pasted the database folders to data folder in MySQL, i.e. If you have a database called alto then find the folder alto in your MySQL -> Data folder in your backup and copy the entire alto folder and past it to newly installed MySQL -> data folder, restart the MySQL and this works perfect.

모든 파일을 복사하고 /var/lib/mysql로 바꾼 후 파일 소유자를 다음으로 변경해야 합니다.mysql 이것은 mariadb에게 매우 중요합니다.서비스를 다시 시작하지 못했습니다.

chown -R mysql:mysql /var/lib/mysql/*

and

chmod -R 700 /var/lib/mysql/*

After much trial and error I was able to get this working based on user359187 answer and this blog post.

나의 늙은이가 되기 위해.frm그리고..ibd파일을 복사하고 MySQL 소유권을 할당한 후 새 MySQL 데이터베이스로 전송했습니다. 제게 있어서 핵심은 MySQL에 로그인하고 새 데이터베이스에 연결한 다음 테이블스페이스를 가져와 MySQL이 작업을 수행하도록 하는 것이었습니다.

mysql> connect test;
mysql> ALTER TABLE t1 IMPORT TABLESPACE;

한 된 를 하여 를 를 하여 를 된 .frm그리고..ibd파일

테이블마다 Alter 명령어를 따로 실행해야 했지만 이렇게 작동했고 테이블과 데이터를 복구할 수 있었습니다.

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

합니다. 이 는 으로 에서는 MySQL 로 합니다 합니다 로 으로 에서는 C:\wamp\bin\mysql\mysql5.1.53\data\mysql5.1.53는 이전에 설치된 MySQL 데이터베이스의 버전 번호가 될 것입니다.

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

지금 서버를 시작한 경우, 데이터베이스가 선택되는 것을 볼 수 있지만, 데이터베이스에는 복사된 테이블이 없습니다.의을면터에이야다다ae이en의에을d면터kneourefp,edsaibdata1테이블의 입니다. 폴더에 하십시오. 에 ". 을 ", ", "로 수 . 이것을 직접 데이터 폴더에 복사합니다. 당신은 새로운 데이터 폴더에 이미 "ibdata1"이라고 불리는 파일을 가지고 있어야 합니다. 그래서 당신은 이것의 이름을 다음으로 바꾸기를 원할 수 있습니다.ibdata1.bak에를 ibdata1이전 MySQL 데이터 폴더에서.

이 작업이 완료되면 모든 WAMP 서비스를 다시 시작합니다.PhpMyAdmin을 사용하여 데이터베이스가 성공적으로 복원되었는지 확인할 수 있습니다.

.frm.ibd 파일을 xampp/messages/data/[messagesname]/로 복사하는 동일한 이름의 새 데이터베이스를 만듭니다.

당신은 내부에 있는 ibdata 파일도 필요할 것입니다.

xampp/paste/data/이전 ibdata1 파일 붙여넣기 파일에 복사하여 기존 ibdata 파일로 대체

[파일명: 신규 ibdata 파일에 생성된 데이터베이스의 내용을 분실할 수 있습니다.]

언급URL : https://stackoverflow.com/questions/10934745/restore-the-mysql-database-from-frm-files

반응형