Untuk beberapa alasan, ketika saya mencoba untuk membuka tabel saya yang disimpan dalam .frm
dan .ibd
file (apakah pada MySQL atau phpmyadmin) itu memberi saya kesalahan sintaks, atau dikatakan tidak ada.
Saya sudah membaca posting lain yang memiliki masalah yang mirip dengan ini, tapi saya tidak tahu bagaimana memeriksa jika innodb_file_per_table
diaktifkan, dan saya secara keseluruhan hanya benar-benar bingung. Saya juga mengkonversi salinan mysql-bin.000002
file saya ke file txt jadi saya melihat bahwa data dari database saya tidak sepenuhnya hilang.
Basis data dibuat tahun lalu. Saya memiliki 6 mysql-bin.00000
file - file itu, tetapi untuk beberapa alasan .000002
adalah yang terbesar. Saat ini, saya memiliki .ibd
dan .frm
file untuk semua database saya, tapi saya bingung bagaimana saya bisa mengembalikannya kembali ke MySQL, atau setidaknya menjadi sesuatu yang bisa saya baca.
Saya menggunakan WampServer 2.4 dan MySQL 5.6.12 pada Windows 2003 Server. Juga, apakah saya harus mengunduh plugin di InnoDB?
Jawaban:
Saya akhirnya menemukan dan menyelesaikan masalah saya melalui banyak trial and error. Bagi mereka yang tidak memiliki file ibdata1 asli mereka, dan hanya memiliki file .frm dan .ibd, inilah cara saya memulihkan data saya.
Saya harap ini membantu, dan beri tahu saya jika Anda memiliki pertanyaan atau komentar! Juga, periksa http://www.chriscalender.com/?tag=innodb-error-tablespace-id-in-file untuk detail lainnya.
sumber
Got error -1 from storage engine
saat Anda menjalankanIMPORT TABLESPACE
. Tetapi bagi saya MySQL 5.6 bekerja untuk tabel yang dibuat menggunakan MySQL 5.5, jadi semuanya baik;). Jika Anda terjebak dengan 5.5, Anda harus mengikuti instruksi di tautan chriscalender yang Anda ajukan.innodb_file_per_table
mengaktifkan.File data InnoDB utama - biasanya dinamai
ibdata
- sangat penting bagi Anda MySQL untuk dapat memahami file .ibd Anda.Jika Anda perlu memindahkan data antar server menggunakan file biner, Anda harus menghentikan MySQL dengan bersih dan kemudian memindahkan semua file data, termasuk file ibdata , di antara direktori.
Mekanisme yang lebih dapat diandalkan untuk memindahkan data antara server pada Windows adalah dengan menggunakan (
mysqldump
) atau ekspor basis data dari PHPMyAdmin (atau alat serupa).Jika pencatatan biner telah diaktifkan sepanjang waktu server Anda berjalan (berdasarkan komentar, ini mungkin tidak terjadi), Anda juga dapat menggunakan
mysqlbinlog
untuk memulihkan setiap pernyataan SQL yang Anda jalankan di server dari file mysql-bin , dan buat ulang basis data dengan cara itu. Seharusnya ada cap waktu unix di file mysql-bin yang membantu Anda menentukan seberapa jauh mereka pergi.Jika Anda kehilangan file database asli dan yang tersisa hanyalah file .ibd individual, Anda mungkin harus memulihkan data sesuai saran akuzminsky di komentar.
MySQL 5.6 memiliki beberapa fitur baru untuk memindahkan file data InnoDB .ibd ( tablespace yang dapat diangkut ), tetapi ini memerlukan beberapa upaya dan, untuk database yang cukup kecil, akan jauh lebih mudah untuk mentransfer data menggunakan
mysqldump
.sumber
Jawaban wiki dihasilkan dari komentar pertanyaan oleh akuzminsky
Jika Anda melihat
*.ibd
file kemudianinnodb_file_per_table
adalahON
, kalau tidak semua tabel akan diibdata1
.Jika itu memberitahu tabel tidak ada maka tabel tersebut hilang dalam kamus InnoDB. Cobalah untuk membuang semua tabel ke dalam dump sql terpisah (satu tabel - satu file). Tabel yang tidak bisa Anda buang dapat Anda kembalikan dengan toolkit pemulihan TwinDB .
Belum ada paket biner. Anda harus mendapatkan kode sumber dari GitHub dan mengompilasinya. Lihat petunjuk di Pulihkan kamus InnoDB . Cukup mudah:
lalu
sumber