Ekspor InnoDB rusak

Kemarin, hard drive dari server khusus saya rusak. Satu-satunya pilihan yang saya punya adalah menyimpan apa yang saya bisa, sebelum mengganti hard drive dengan yang baru.

Satu-satunya yang bisa saya simpan adalah folder /var/lib/mysql. Sekarang saya memiliki hard drive baru dengan database MySQL baru yang berjalan, tetapi kosong. Saya ingin mengembalikan data dari database yang saya miliki.

Saya mencoba beberapa hal, dan membaca di internet bahwa ekspor InnoDB tidak semudah menyalin semua folder /var/lib/mysql, jadi saya tidak yakin solusi apa yang saya miliki.

Saya mencoba mengganti folder /var/lib/mysql baru dengan yang baru, tetapi sekarang mysqld tidak dapat berjalan. Log kesalahan terlihat seperti ini, namun menambahkan innodb_force_recovery = 1 tidak membantu sama sekali.

Sekarang aku agak tersesat dan kehabisan pilihan. Adakah yang menghadapi hal serupa baru-baru ini?

Terima kasih


person Benjamin Netter    schedule 29.07.2014    source sumber


Jawaban (1)


Ada alat yang dapat mengambil database MySQL dari disk yang rusak https://launchpad.net/undrop-for-innodb .

Saya harap Anda masih memiliki hard drive lama yang terpasang ke server atau setidaknya gambar diambil darinya.

Unduh revisi terakhir dan kompilasi. Anda memerlukan gcc, flex, dan bison sebagai ketergantungan.

Katakanlah Anda telah memasang disk lama (rusak) sebagai /dev/sdb

Pertama, Anda perlu memindai disk dan menemukan halaman InnoDB

./stream_parser -f /dev/sdb

Maka Anda perlu memulihkan kamus InnoDB untuk mengetahui nama tabel -> korespondensi indeks_id. Lihat "Memulihkan kamus InnoDB" untuk detailnya.

Anda juga memerlukan struktur tabel. Ambil dari cadangan lama. (Pilihan lain adalah memulihkan struktur dari file .frm atau dari kamus InnoDB)

Ketika Anda mengetahui struktur tabel dan index_id suatu tabel, Anda dapat mengekstrak catatan tabel dari halaman InnoDB:

./c_parser -6f pages-actor.ibd/FIL_PAGE_INDEX/0000000000002655.page -t actor.sql

actor.sql adalah pernyataan CREATE TABLE

c_parser akan menghasilkan perintah LOAD DATA INFILE untuk memuat kembali dump di MySQL.

person akuzminsky    schedule 29.07.2014