Bagaimana untuk menyelesaikan masalah pemadaman dan rollback pangkalan data MySQL secara tidak sengaja

WBOY
Lepaskan: 2023-05-31 17:40:06
ke hadapan
1044 orang telah melayarinya

Suatu ketika saya secara tidak sengaja menggunakan padam dari xxx untuk memadamkan beberapa data penting, saya dapati banyak kaedah di Internet, tetapi semuanya bertaburan.
Ia dibahagikan secara kasar kepada langkah berikut

1 Periksa sama ada binlog dihidupkan

# log_bin是ON,就说明打开了 OFF就是关闭状态,以下操作,只有为 ON 时有效。
show variables like 'log_bin';
Salin selepas log masuk

2 Cari nama fail binlog

show master logs;
Salin selepas log masuk

dan jalankan di atas kod, seperti yang ditunjukkan dalam rajah di bawah TS1-bin .000009 ialah nama fail yang kami cari

Bagaimana untuk menyelesaikan masalah pemadaman dan rollback pangkalan data MySQL secara tidak sengaja

3. Semak lokasi log binlog

show variables like '%datadir%';
Salin selepas log masuk

4. Cari TS1-bin berdasarkan lokasi yang diperolehi di atas .000009 fail

5. Masukkan direktori bin direktori pemasangan mysql dan laksanakan arahan berikut untuk mengeksport fail TS1-bin.000009 ke dalam fail sql mengikut julat masa yang dipadam secara tidak sengaja

mysqlbinlog --base64-output=decode-rows -v --database=数据库名 --start-datetime="2022-06-29 15:35:00" --stop-datetime="2022-06-29 15:45:00" C:/Users/Administrator/Desktop/TS1-bin.000009 > C:/Users/Administrator/Desktop/mysqllog.sql
Salin selepas log masuk

di sini saya saya menyalin fail TS1-bin.000009 ke desktop Kerana laluan storan asal fail mengandungi ruang, pelaksanaan arahan gagal dan laluan tidak boleh dijumpai.
Selepas mendapat fail mysqllog.sql, anda boleh membukanya dengan Notepad, cari kata kunci DELETE, dan cari rekod data yang dipadam

6. Ubah kenyataan DELETE kepada pernyataan INSERT, dan gunakan vbs untuk melaksanakannya di bawah Windows Salin dan simpan kod berikut sebagai: fail deleteToinsert.vbs (mesti fail format .vbs) dalam direktori yang sama dengan mysqllog.sql, kemudian klik dua kali untuk menjalankan, fail mysqllogOK.sql akan dijana, iaitu pernyataan INSERT yang kami mahu

'========================== 
'用VBS实现 MYSQL binglog DELETE转INSERT 
'========================== 
function replaceregex(patern,str,tagstr) 
    dim regex,matches 
    set regex=new regExp 
    regex.pattern=patern 
    regex.IgnoreCase=true 
    regex.global=true 
    matches=regex.replace(str,tagstr) 
    replaceregex=matches 
end function
 
'======Mysql binlog DELETE转INSERT================
'VBS打开文本文件
Set oldStream = CreateObject("ADODB.Stream")
oldStream.CharSet = "utf-8"
oldStream.Open
oldStream.LoadFromFile("mysqllog.sql") 'binLog生成的DELETE原日志文件
oldText = oldStream.ReadText()
    newText=replace(oldText,"### DELETE FROM", ";INSERT INTO")
    newText=replace(newText,"### WHERE", "SELECT")
    newText=replace(newText,"###", "")
    newText=replace(newText,"@1=", "")
    newText=replaceregex("\@[1-9]=",newText, ",")
    newText=replaceregex("\@[1-9][0-9]=",newText, ",")
oldStream.Close
'VBS保存文件
Set newStream = CreateObject("ADODB.Stream")
newStream.Type = 2 'Specify stream type - we want To save text/string data.
newStream.Charset = "utf-8" 'Specify charset For the source text data.
newStream.Open 'Open the stream And write binary data To the object
newStream.WriteText newText
newStream.SaveToFile "mysqllogOK.sql", 2 'DELETE转成INSERT以后的新的SQL文件名
newStream.Close
Salin selepas log masuk

7. Laksanakan selepas mendapat pernyataan INSERT yang sepadan.

Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan masalah pemadaman dan rollback pangkalan data MySQL secara tidak sengaja. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan