Apakah mungkin untuk mengembalikan database MySQL dari file database fisik. Saya memiliki direktori yang memiliki jenis file berikut:
client.frm
client.MYD
client.MYI
tetapi untuk sekitar 20 tabel lagi.
Saya biasanya menggunakan mysqldump atau alat serupa untuk mendapatkan semuanya dalam 1 file SQL jadi apa cara untuk menangani jenis file ini?
Jawaban:
Tabel MySQL MyISAM adalah kombinasi dari tiga file:
Anda harus dapat memulihkan dengan menyalinnya di folder database Anda (Di linux, lokasi defaultnya adalah
/var/lib/mysql/
)Anda harus melakukannya saat server tidak berjalan.
sumber
mysql
pengguna yang menjalankanmysqld
proses tidak dapat mengaksesnya. Melakukanchmod -R mysql:mysql .
pada direktori data mysql cepat dan mudah, tetapi mencari tahu, sebelum itu, mengapa semua DB resoterd saya sepertinya tidak memiliki tabel membutuhkan waktu lebih lama.chown
menyalin file seperti ini:sudo chown -R mysql:mysql /var/lib/mysql
Dari jawaban @Vicent, saya sudah mengembalikan database MySQL seperti di bawah ini:
Langkah 1. Matikan server Mysql
Langkah 2. Salin database di folder database Anda (di linux, lokasi defaultnya adalah / var / lib / mysql). Pertahankan nama database yang sama, dan nama database yang sama dalam mode mysql.
Langkah 3: Ubah milik sendiri dan ubah mode folder:
Langkah 4: Salin ibdata1 di folder database Anda
Langkah 5: Salin file ib_logfile0 dan ib_logfile1 di folder database Anda.
Ingat ubah milik sendiri dan ubah root dari file-file itu:
atau
Langkah 6 (Opsional): Situs saya memiliki konfigurasi untuk menyimpan file di lokasi tertentu, lalu saya menyalinnya ke lokasi yang sesuai.
Langkah 7: Mulai server Mysql Anda. Semuanya kembali dan nikmati.
Hanya itu saja.
Lihat info lebih lanjut di: https://biolinh.wordpress.com/2017/04/01/restoring-mysql-database-from-physical-files-debianubuntu/
sumber
Jika Anda memulihkan folder, jangan lupa untuk memasukkan file ke mysql: mysql
chown -R mysql:mysql /var/lib/mysql-data
jika tidak, Anda akan mendapatkan kesalahan saat mencoba menjatuhkan database atau menambah kolom baru dll ..
dan mulai ulang MySQL
sumber
Saya memiliki masalah yang sama tetapi tidak berhasil memulihkan database, berdasarkan petunjuk di atas.
Saya hanya dapat memulihkan folder database mysql dari OS Ubuntu saya. Masalah saya adalah bagaimana memulihkan database saya dengan folder data mysql yang tidak dapat dibaca. Jadi saya beralih kembali ke OS win7 untuk lingkungan pengembangan.
* CATATAN Saya memiliki server database yang berjalan di win7 dan saya hanya perlu beberapa file database untuk mengambil dari file yang dipulihkan. Untuk berhasil memulihkan file database dari OS Ubuntu, saya perlu menginstal server database mysql baru (versi yang sama dari OS Ubuntu di OS win7 saya) untuk memulihkan semua yang ada di server database lama.
Buat server database mysql baru versi yang sama dari file yang dipulihkan.
Hentikan server mysql
salin folder yang dipulihkan dan tempel di (C: \ ProgramData \ MySQL \ MySQL Server 5.5 \ data) database mysql disimpan.
salin file ibdata1 yang terletak di folder terinstal mysql linux dan tempelkan di (C: \ ProgramData \ MySQL \ MySQL Server 5.5 \ data). Cukup timpa yang ada atau buat cadangan sebelum mengganti.
mulai server mysql dan periksa apakah Anda telah berhasil memulihkan file database.
Untuk menggunakan database yang dipulihkan di server mysql saya yang saat ini digunakan, cukup ekspor database yang dipulihkan dan impor ke server mysql saya yang ada.
Semoga ini akan membantu, karena tidak ada yang berhasil untuk saya.
sumber
Dengan MySql 5.1 (Win7). Untuk membuat ulang DB (InnoDbs) saya telah mengganti semua konten dari dirs berikut (my.ini params):
Setelah itu saya memulai Layanan MySql dan semuanya berfungsi dengan baik.
sumber
Ya itu! Cukup tambahkan ke folder database Anda (tergantung pada OS) dan jalankan perintah seperti "MySQL Fix Permissions". Ini disimpan kembali database. Lihat juga bahwa izin yang benar ditetapkan pada file juga.
sumber
Saya pernah menyalin file-file ini ke folder penyimpanan database untuk database mysql yang berfungsi, memulai db dan menunggu untuk "memperbaiki" file, lalu mengekstraknya dengan mysqldump.
sumber
Saya mengalami ini mencoba untuk menghidupkan kembali Docker Container yang tidak sengaja terhapus (MySQL oraclelinux) dari volume buruh pelabuhan yang untungnya tidak dihapus yang memiliki data DB dalam file fisik.
Jadi, yang ingin saya lakukan adalah mengubah data dari file fisik menjadi file yang
.sql
dapat diimpor untuk membuat ulang container dengan DB dan datanya.Saya mencoba solusi biolin , tetapi mengalami beberapa
[InnoDB] Multiple files found for the same tablespace ID
kesalahan, setelah restart. Saya menyadari bahwa melakukan operasi luka terbuka pada folder / file tertentu cukup rumit.Solusi yang berhasil untuk saya adalah untuk sementara waktu mengubah
datadir=
masukmy.cnf
ke folder yang tersedia dan memulai ulang server MySQL. Itu melakukan pekerjaan dengan sempurna!sumber
Dalam kasus saya, cukup menghapus tc.log di / var / lib / mysql sudah cukup untuk memulai mariadb / mysql lagi.
sumber