Bagaimana cara mengembalikan database mysql yang terhapus?

Jika Anda bertindak cepat, ada kemungkinan besar untuk mendapatkan kembali database Anda. Peluangnya lebih tinggi untuk InnoDB, atau MyISAM bukan nol, tapi dekat

Masalahnya adalah ketika MySQL mengeksekusi DROP TABLE atau DROP DATABASE (yang pada dasarnya sama) InnoDB tidak menghapus datanya. Halaman dengan data masih ada di disk

Bergantung pada pengaturan innodb_file_per_table, proses pemulihannya berbeda. Jika innodb_file_per_table MATI (default hingga 5. 5) maka tabel yang dijatuhkan tetap di ibdata1. Jika innodb_file_per_table AKTIF (default pada 5. 5) maka meja yang dijatuhkan berada di masing-masing. file ibd. MySQL menghapus file ini saat menjatuhkan tabel

Hal pertama yang harus dilakukan adalah menghentikan kemungkinan penulisan sehingga tabel Anda tidak ditimpa. Jika innodb_file_per_table MATI cukup untuk menghentikan MySQL (kill -9 bahkan lebih baik, tetapi pastikan Anda membunuh safe_mysqld terlebih dahulu). Jika innodb_file_per_table AKTIF maka umount partisi tempat MySQL menyimpan datanya. Jika datadir ada di partisi root, saya sarankan untuk mematikan server atau setidaknya mengambil gambar disk. Biarkan saya ulangi, tujuannya adalah untuk mencegah penimpaan tabel yang dijatuhkan oleh MySQL atau sistem operasi

Ada alat yang memungkinkan untuk bekerja dengan halaman InnoDB pada level rendah, perangkat pemulihan data TwinDB. Saya akan menggunakannya untuk mengilustrasikan pemulihan undrop

Anda perlu mengambil media dengan tabel yang dijatuhkan (baik ibdata1 atau gambar disk) dan menemukan halaman InnoDB di dalamnya. alat stream_parser dari toolkit melakukannya

./stream_parser -f /path/to/disk/image

Ini akan memindai file, menemukan halaman InnoDB dan mengurutkannya berdasarkan jenis dan index_id. index_id adalah pengidentifikasi yang digunakan InnoDB untuk merujuk ke indeks. Tabel disimpan dalam indeks PRIMARY. Untuk menemukan index_id apa tabel Anda yang dijatuhkan, Anda perlu memulihkan kamus InnoDB

Kamus InnoDB disimpan dalam file ibdat1. Anda perlu memindai file ibdata1 dengan cara yang sama seperti di atas

./stream_parser -f /var/lib/mysql/ibdata1
_

Sekarang Anda perlu mendapatkan catatan dari tabel kamus InnoDB SYS_TABLES dan SYS_INDEXES (misalkan tabel Anda sakila. aktor)

./c_parser -4Df pages-ibdata1/FIL_PAGE_INDEX/0000000000000001.page -t dictionary/SYS_TABLES.sql | grep sakila/actor
000000000B28  2A000001430D4D  SYS_TABLES  "sakila/actor"  158  4  1 0   0   ""  0

158 adalah table_id, ingat itu

./c_parser -4Df pages-ibdata1/FIL_PAGE_INDEX/0000000000000003.page -t dictionary/SYS_INDEXES.sql | grep 158
000000000B28    2A000001430BCA  SYS_INDEXES     158     376     "PRIMARY"       1       3       0       4294967295
000000000B28    2A000001430C3C  SYS_INDEXES     158     377     "idx\_actor\_last\_name"        1       0       0       4294967295

Jadi, index_id dari tabel Anda yang dijatuhkan (sakila. aktor) adalah 376

Sekarang Anda dapat mengambil catatan dari tabel yang dijatuhkan dari InnoDB index_id 376. Anda harus memiliki struktur tabel dari tabel yang dijatuhkan, tepatnya pernyataan CREATE TABLE yang digunakan untuk membuat tabel tersebut. Di mana Anda bisa mendapatkannya? . Dimungkinkan juga untuk memulihkan struktur dari kamus InnoDB, tetapi saya tidak akan membahasnya dalam jawaban ini. Anggap saja Anda memilikinya

./c_parser -6f pages-ibdata1/FIL_PAGE_INDEX/0000000000000376.page -t actor.sql > dump.tsv 2> load_cmd.sql
_

c_parser mengeluarkan catatan sebagai dump yang dipisahkan tab ke stdout. Dump dapat dimuat dengan perintah LOAD DATA. c_parser mencetaknya ke stderr

Ya, menghapus database MySQL dimungkinkan, meskipun itu tidak mudah. Bahkan jika Anda adalah pengguna yang teliti dan terus-menerus membuat cadangan, Anda mungkin mengalami masalah saat memulihkan basis data

Basis data dapat rusak atau terhapus segera setelah pencadangan. Tapi itu akan sangat tidak mungkin. Biasanya, cadangan hanya memungkinkan untuk mengembalikan sebagian data, dan sisanya hilang sama sekali. Dan jumlah informasi yang hilang akan tergantung pada downtime. Oleh karena itu, Anda pasti perlu bergegas memulihkan database MySQL yang terhapus dan mencegah kerugian

Langkah pertama untuk memulihkan data yang dihapus dari database MySQL

Terlepas dari kenyataan bahwa mencadangkan tidak banyak menghemat, ada baiknya memulai pemulihan MySQL sesegera mungkin. Lagi pula, ini adalah metode paling sederhana dan gratis, dan tidak menggunakannya akan menjadi bodoh

Untuk mencegah data apa pun dari kerusakan, pertama-tama letakkan di server baru. Di sini Anda dapat dengan aman melihat baris, kolom, dll yang diinginkan. Anda dapat melihat bahwa cadangan akan memiliki apa yang Anda butuhkan, lalu ambil dan salin informasi ini ke server lama. Dengan cara ini, Anda mengamankan database yang ada dan pada saat yang sama mengembalikan informasi yang hilang

Jika Anda tidak berhasil mengambil informasi dengan cara sederhana ini, maka Anda harus menggunakan metode selanjutnya

Langkah selanjutnya untuk mengembalikan database yang terhapus

Metode ini memerlukan fungsi log biner yang telah diaktifkan sebelumnya; . Dalam hal ini, dimungkinkan untuk memulihkan pernyataan yang sesuai dan menjalankannya kembali di database

Anda dapat memeriksa fungsi ini menggunakan perintah MySQL

tampilkan variabel seperti 'log_bin';

jika Anda menemukan log yang diperlukan di sana, mulailah mengekstraksi pernyataan

Start extracting statement

Untuk mengambil data, perintahnya adalah

The command to retrieve data

Jika Anda tidak mengaktifkan opsi log biner sebelumnya, maka metode berikut dan paling efisien akan membantu Anda

Cara memulihkan database dengan MySQL Recovery

Pemulihan MySQL dari DiskInternals akan mengambil database Anda tanpa kerumitan. Aplikasi ini mengembalikan database dari database MyISAM dan InnoDB yang ada. Aplikasi ini ada dalam dua versi. uji coba gratis (dilengkapi dengan semua fungsi kecuali untuk ekspor, sehingga Anda dapat memverifikasi kualitas layanan) dan versi fitur lengkap berbayar tanpa batasan apa pun. Semua data yang ditemukan selama pemindaian dapat dilihat dan dievaluasi oleh Anda secara gratis. DiskInternals Pemulihan MySQL mendukung NTFS, HFS, Ext2/3/4, ReiserFS, ReFS, UFS, FAT, RomFS (pembaca), XFS, dan Reiser4. Untuk membantu pengguna yang paling tidak berpengalaman sekalipun, aplikasi ini memiliki Wisaya Pemulihan bawaan untuk memandu Anda melalui proses itu. Terkadang, lebih mudah mengunduh aplikasi ini dan dengan mudah mengembalikan database yang hilang daripada mencoba melakukannya secara manual tanpa hasil. Ini dibuktikan dengan lebih dari satu pengguna yang pernah berada dalam situasi ini

Bagaimana cara memulihkan database SQL yang dihapus?

Buka Microsoft SQL Server Management Studio. Di bilah navigasi kiri, klik kanan pada Database lalu klik Pulihkan Database. Di bagian Sumber, pilih Perangkat dan klik tombol dengan tiga titik. Di jendela sembulan yang terbuka, klik Tambah dan telusuri file cadangan Anda

Bisakah Anda memulihkan database yang dihapus?

Baris yang dihapus dapat dipulihkan oleh LSN (Log Sequence Numbers), hanya jika waktu penghapusan data diketahui . LSN adalah pengidentifikasi unik yang disertakan dengan setiap catatan Log Transaksi SQL Server.

Apakah MySQL memiliki tempat sampah daur ulang?

Tempat sampah daur ulang . Hal ini memungkinkan pemulihan database yang mudah dihapus secara keliru. Database disimpan di sini selama 30 hari. Setelah 30 hari, mereka akan dihapus secara permanen. You can access this by clicking the MySQL Recycle Bin button on the top left of the page. This allows for easy restoration of databases that are mistakenly deleted. Databases are stored here for 30 days. After 30 days, they are permanently deleted.

Bagaimana cara memulihkan database saya?

Di Object Explorer, sambungkan ke instance SQL Server Database Engine, lalu perluas instance tersebut
Klik kanan Database dan pilih Restore Database
Di halaman Umum, gunakan bagian Sumber untuk menentukan sumber dan lokasi kumpulan cadangan yang akan dipulihkan