Reputation: 587
I was working on my Mac when it crashed, the HDD got corrupted and cant be repaired unless formating, so i recovered my DB data from OS X, i got all the folder , and now im trying to restore it in a windows computer while i repair the Mac. I have tried several post here that says tha i just have to copy all the files to the data folder in the new MySQL instalment on windows , i already tried copying the db folder with the frm files and the ind files, then i copied the ibdata1 file and restarted the service but even so it didn't work , the i read that i had to copy also the ib_logfile0 and ib_logfile1 and so i did, but then the service didnt want to run.When i restore the original log it works but i can only see the tables in mysqlworkbench but i can't make querys to them because the log says that the tables doesnt exist even that i can see them.
Im using mysql 5.6 on windows 7 and mysqlworkbench.
Currently i have the *.frm files , the *.ibd files, the ibdata1, the ib_logfiles0 and 1 , that i rescued from my os x hdd, i copied all of them to the windows mysql installment and so the mysql service wont start. Heres the current log when i try to start the service.
FROM CARLOSDESKTOP.err:
2014-02-11 13:27:10 7108 Note Plugin 'FEDERATED' is disabled.
2014-02-11 13:27:10 3a8 InnoDB: Warning: Using innodb_additional_mem_pool_size is DEPRECATED. This option may be removed in future releases, together with the option innodb_use_sys_malloc and with the InnoDB's internal memory allocator.
2014-02-11 13:27:10 7108 Note InnoDB: Using atomics to ref count buffer pool pages
2014-02-11 13:27:10 7108 Note InnoDB: The InnoDB memory heap is disabled
2014-02-11 13:27:10 7108 Note InnoDB: Mutexes and rw_locks use Windows interlocked functions
2014-02-11 13:27:10 7108 Note InnoDB: Compressed tables use zlib 1.2.3
2014-02-11 13:27:10 7108 Note InnoDB: Not using CPU crc32 instructions
2014-02-11 13:27:10 7108 Note InnoDB: Initializing buffer pool, size = 8.0M
2014-02-11 13:27:10 7108 Note InnoDB: Completed initialization of buffer pool
2014-02-11 13:27:10 7108 Note InnoDB: Highest supported file format is Barracuda.
2014-02-11 13:27:12 - Server start done.
2014-02-11 13:27:12 - Status check of service 'MySQL56' returned start pending
2014-02-11 13:47:27 - Status check of service 'MySQL56' returned stopped
FROM CARLOSDESKTOP.err:
2014-02-11 13:27:12 7108 Note InnoDB: The log sequence numbers 8610473 and 8610473 in ibdata files do not match the log sequence number 13883013 in the ib_logfiles!
2014-02-11 13:27:12 7108 Note InnoDB: Database was not shutdown normally!
2014-02-11 13:27:12 7108 Note InnoDB: Starting crash recovery.
2014-02-11 13:27:12 7108 Note InnoDB: Reading tablespace information from the .ibd files...
2014-02-11 13:27:13 7108 ERROR InnoDB: space header page consists of zero bytes in tablespace .\demo\record.ibd (table demo/record)
2014-02-11 13:27:13 7108 Note InnoDB: Page size:1024 Pages to analyze:64
2014-02-11 13:27:13 7108 Note InnoDB: Page size: 1024, Possible space_id count:0
2014-02-11 13:27:13 7108 Note InnoDB: Page size:2048 Pages to analyze:64
2014-02-11 13:27:13 7108 Note InnoDB: Page size: 2048, Possible space_id count:0
2014-02-11 13:27:13 7108 Note InnoDB: Page size:4096 Pages to analyze:32
2014-02-11 13:27:13 7108 Note InnoDB: Page size: 4096, Possible space_id count:0
2014-02-11 13:27:13 7108 Note InnoDB: Page size:8192 Pages to analyze:16
2014-02-11 13:27:13 7108 Note InnoDB: Page size: 8192, Possible space_id count:0
2014-02-11 13:27:13 7108 Note InnoDB: Page size:16384 Pages to analyze:8
2014-02-11 13:27:13 7108 Note InnoDB: Page size: 16384, Possible space_id count:0
InnoDB: Error: could not open single-table tablespace file .\demo\record.ibd
InnoDB: We do not continue the crash recovery, because the table may become
InnoDB: corrupt if we cannot apply the log records in the InnoDB log to it.
InnoDB: To fix the problem and start mysqld:
InnoDB: 1) If there is a permission problem in the file and mysqld cannot
InnoDB: open the file, you should modify the permissions.
InnoDB: 2) If the table is not needed, or you can restore it from a backup,
InnoDB: then you can remove the .ibd file, and InnoDB will do a normal
InnoDB: crash recovery and ignore that table.
InnoDB: 3) If the file system or the disk is broken, and you cannot remove
InnoDB: the .ibd file, you can set innodb_force_recovery > 0 in my.cnf
InnoDB: and force InnoDB to continue crash recovery here.
2014-02-11 13:47:28 - Status check of service 'MySQL56' returned stopped
2014-02-11 13:47:28 - Starting server...
2014-02-11 13:48:29 - Status check of service 'MySQL56' returned start pending
2014-02-11 13:48:29 - Server start done.
2014-02-11 13:48:30 - Status check of service 'MySQL56' returned start pending
Upvotes: 1
Views: 5428
Reputation: 717
Process 1
brew install [email protected]
brew services stop mysql
or brew services stop mariadb
ibdata1 file copy from backup mysql folder and paste and replace it inside new installed mysql folder's ibdata1 (usr/local/var/mysql) or mamp/xampp mysql folder location.
ib_logfile0 and ib_logfile1 no need to replace first. If above process don't work, copy this file from backup mysql folder and replace. (In my case, i did not replace)
Now copy 1 database for test (for example : testdb) from backup mysql folder and paste it inside new installed mysql folder. In testdb must have .frm and .ibd file.
Restart mysql/mariadb (brew services start mysql) or (brew services start mariadb)
Process 2
mysqlfrm --diagnostic /BACKUP/mysql/testdb > /RESTORE/testdb.sql
mysql >> mysql -u root -p
SHOW DATABASES
;
USE newtestdb
;ALTER TABLE tablename DISCARD TABLESPACE;
if you check newtestbd .ibd file will disapear. testdb
folder and paste it in newtestdb
.Upvotes: 2
Reputation: 2258
To restore the database from backup (I hope the backup was taken properly) you need at least these files
If you see tables in Workbench then you copied .ibd and .frm files only. ibdata1 looks empty because this is where InnoDB keeps tables dictionary.
Upvotes: 2