Cara mengembalikan salah satu database MySQL saya dari .myd
, .myi
, .frm
file?
Cara mengembalikan salah satu database MySQL saya dari .myd
, .myi
, .frm
file?
Jawaban:
Jika ini adalah tabel MyISAM, maka memasukkan file .FRM, .MYD, dan .MYI ke direktori database (mis., /var/lib/mysql/dbname
) Akan membuat tabel itu tersedia. Tidak harus database yang sama dengan asalnya, server yang sama, versi MySQL yang sama, atau arsitektur yang sama. Anda juga mungkin perlu mengubah kepemilikan untuk folder tersebut (misalnya, chown -R mysql:mysql /var/lib/mysql/dbname
)
Perhatikan bahwa izin ( GRANT
, dll.) Adalah bagian dari mysql
database. Jadi mereka tidak akan dipulihkan bersama dengan tabel; Anda mungkin perlu menjalankan GRANT
pernyataan yang sesuai untuk membuat pengguna, memberikan akses, dll. (Memulihkan mysql
basis data dimungkinkan, tetapi Anda harus berhati-hati dengan versi MySQL dan setiap menjalankan mysql_upgrade
utilitas yang diperlukan.)
Sebenarnya, Anda mungkin hanya perlu .FRM (struktur tabel) dan .MYD (data tabel), tetapi Anda harus memperbaiki tabel untuk membangun kembali .MYI (indeks).
Satu-satunya kendala adalah bahwa jika Anda menurunkan versi, sebaiknya Anda memeriksa catatan rilis (dan mungkin menjalankan tabel perbaikan). Versi MySQL yang lebih baru menambahkan fitur, tentu saja.
[Meskipun harus jelas, jika Anda mencampur dan mencocokkan tabel, integritas hubungan antara tabel tersebut adalah masalah Anda; MySQL tidak akan peduli, tetapi aplikasi Anda dan pengguna Anda mungkin. Juga, metode ini tidak bekerja sama sekali untuk tabel InnoDB. Hanya MyISAM, tetapi mengingat file yang Anda miliki, Anda memiliki MyISAM]
check table sometable;
dan kemudian menjalankan perbaikan (hanya jika diperlukan): repair table sometable;
Saya baru saja menemukan solusi untuk ini. Saya menggunakan MySQL 5.1 atau 5.6 pada Windows 7.
Tidak perlu menemukan file .MYI dan .MYD untuk pemulihan ini.
innodb_force_recovery = 4
level (tidak yakin itu diperlukan dalam kasus ini). Untunglah!
ibdata1
InnoDB, bukan MyISAM.
Satu hal yang perlu diperhatikan:
File .FRM memiliki struktur tabel di dalamnya, dan khusus untuk versi MySQL Anda.
File .MYD TIDAK spesifik untuk versi, setidaknya bukan versi minor.
File .MYI spesifik, tetapi dapat ditinggalkan dan dibuat kembali dengan REPAIR TABLE
seperti jawaban lainnya.
Inti dari jawaban ini adalah untuk memberi tahu Anda bahwa jika Anda memiliki skema penumpahan tabel Anda, maka Anda dapat menggunakannya untuk menghasilkan struktur tabel, lalu ganti file .MYD tersebut dengan cadangan Anda, hapus file MYI, dan perbaiki mereka semua. Dengan cara ini Anda dapat mengembalikan cadangan ke versi MySQL lain, atau memindahkan basis data Anda sama sekali tanpa menggunakan mysqldump
. Saya menemukan ini sangat membantu ketika memindahkan basis data besar.
Sederhana! Buat basis data dummy (mis. Abc)
Salin semua file .myd, .myi, .frm ini ke mysql \ data \ abc dimana mysql \ data \ adalah tempat penyimpanan .myd, .myi, .frm untuk semua basis data.
Lalu pergi ke phpMyadmin, pergi ke db abc dan Anda menemukan database Anda.
Saya pikir .myi Anda dapat memperbaiki dari dalam mysql.
Jika Anda melihat jenis pesan kesalahan ini dari MySQL: Database gagal menjalankan query (query) 1016: Tidak dapat membuka file: 'sometable.MYI'. (errno: 145) Kesalahan Msg: 1034: File kunci untuk tabel salah: 'kadang-kadang'. Cobalah untuk memperbaikinya maka Anda mungkin memiliki tabel rusak atau rusak.
Anda dapat memeriksa dan memperbaiki tabel dari prompt mysql seperti ini:
check table sometable;
+------------------+-------+----------+----------------------------+
| Table | Op | Msg_type | Msg_text |
+------------------+-------+----------+----------------------------+
| yourdb.sometable | check | warning | Table is marked as crashed |
| yourdb.sometable | check | status | OK |
+------------------+-------+----------+----------------------------+
repair table sometable;
+------------------+--------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+------------------+--------+----------+----------+
| yourdb.sometable | repair | status | OK |
+------------------+--------+----------+----------+
dan sekarang meja Anda harus baik-baik saja:
check table sometable;
+------------------+-------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+------------------+-------+----------+----------+
| yourdb.sometable | check | status | OK |
+------------------+-------+----------+----------+
Saya menemukan solusi untuk mengkonversi file ke .sql
file (Anda kemudian dapat mengimpor .sql
file ke server dan memulihkan database), tanpa perlu mengakses /var
direktori, oleh karena itu Anda tidak perlu menjadi admin server untuk melakukan ini.
Itu memang membutuhkan XAMPP atau MAMP yang diinstal pada komputer Anda.
C:\XAMPP
), dan sub-direktori mysql\data
. Jalan penuh seharusnyaC:\XAMPP\mysql\data
Di dalam Anda akan melihat folder dari database lain yang telah Anda buat. Salin & Tempel folder yang penuh .myd
, .myi
dan .frm
file ke sana. Path ke folder itu seharusnya
C:\XAMPP\mysql\data\foldername\.mydfiles
Kemudian kunjungi localhost/phpmyadmin
di browser. Pilih database yang baru saja Anda tempelkan ke mysql\data
folder, dan klik Ekspor di bilah navigasi. Pilih ekspor sebagai .sql
file. Maka akan muncul menanyakan di mana menyimpan file
Dan itu dia! Anda (seharusnya) sekarang memiliki .sql
file yang berisi database yang awalnya .myd
, .myi
dan .frm
file. Anda kemudian dapat mengimpornya ke server lain melalui phpMyAdmin dengan membuat database baru dan menekan 'Impor' di bilah navigasi, kemudian ikuti langkah-langkah untuk mengimpornya
Anda dapat menyalin file ke direktori subdirektori bernama folder data selama itu adalah versi yang sama persis dari mySQL dan Anda telah mempertahankan semua file terkait di direktori itu. Jika Anda tidak memiliki semua file, saya yakin Anda akan memiliki masalah.
http://forums.devshed.com/mysql-help-4/mysql-installation-problems-197509.html
Dikatakan untuk mengganti nama file ib_ *. Saya telah melakukannya dan itu memberi saya kembali db.
Deskripsi di atas tidak cukup untuk membuat hal-hal bekerja untuk saya (mungkin padat atau malas) jadi saya membuat skrip ini setelah saya menemukan jawaban untuk membantu saya di masa depan. Semoga ini bisa membantu orang lain
vim fixperms.sh
#!/bin/sh
for D in `find . -type d`
do
echo $D;
chown -R mysql:mysql $D;
chmod -R 660 $D;
chown mysql:mysql $D;
chmod 700 $D;
done
echo Dont forget to restart mysql: /etc/init.d/mysqld restart;
Bagi mereka yang memiliki Windows XP dan MySQL server 5.5 diinstal - lokasi untuk database adalah C: \ Documents and Settings \ All Users \ Data Aplikasi \ MySQL \ MySQL Server 5.5 \ data, kecuali jika Anda mengubah lokasi dalam instalasi MySql Workbench GUI.