Maison > base de données > tutoriel mysql > le corps du texte

Comment résoudre le problème de suppression accidentelle et de restauration de la base de données MySQL

WBOY
Libérer: 2023-05-31 17:40:06
avant
1049 Les gens l'ont consulté

Une fois, j'ai accidentellement utilisé delete from xxx pour supprimer plusieurs données importantes. J'ai trouvé de nombreuses méthodes sur Internet, mais elles étaient toutes dispersées. Je prévois d'enregistrer le processus de récupération des données.
est grossièrement divisé en les étapes suivantes

1 Vérifiez si le binlog est activé

# log_bin是ON,就说明打开了 OFF就是关闭状态,以下操作,只有为 ON 时有效。
show variables like 'log_bin';
Copier après la connexion

2. Recherchez le nom du fichier binlog

show master logs;
Copier après la connexion
#🎜. 🎜#Exécutez ce qui précède Le code, comme indiqué ci-dessous, TS1-bin.000009 est le nom de fichier que nous recherchons

Comment résoudre le problème de suppression accidentelle et de restauration de la base de données MySQL

3 Vérifiez le journal binaire. log location

show variables like '%datadir%';
Copier après la connexion
#🎜🎜 #4 Selon l'emplacement obtenu ci-dessus, recherchez le fichier TS1-bin.000009

5. commande suivante pour supprimer le fichier de TS1-bin en fonction de la plage horaire de la suppression accidentelle. Le fichier .000009 est exporté dans un fichier SQL

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
Copier après la connexion

Ici, j'ai copié le fichier TS1-bin.000009 dans. le bureau. Étant donné que le chemin de stockage d'origine du fichier comportait des espaces, l'exécution de la commande a échoué et le chemin n'a pas pu être trouvé.

Après avoir obtenu le fichier mysqllog.sql, vous pouvez l'ouvrir avec le Bloc-notes, rechercher le mot-clé DELETE et trouver l'enregistrement des données supprimées


6 Changez l'instruction DELETE en instruction INSERT. , et utilisez vbs sous Windows Pour implémenter, copiez et enregistrez le code suivant sous : fichier deleteToinsert.vbs (doit être un fichier au format .vbs) dans le même répertoire que mysqllog.sql, puis double-cliquez pour exécuter, le fichier mysqllogOK.sql Le fichier sera généré, qui est l'instruction INSERT que nous voulons #🎜🎜 #

'========================== 
'用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
Copier après la connexion
7 Exécuter après avoir obtenu l'instruction INSERT correspondante.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal