Maison > Article > base de données > Comment résoudre le problème de suppression accidentelle et de restauration de la base de données MySQL
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';
2. Recherchez le nom du fichier binlog
show master logs;#🎜. 🎜#Exécutez ce qui précède Le code, comme indiqué ci-dessous, TS1-bin.000009 est le nom de fichier que nous recherchons 3 Vérifiez le journal binaire. log location
show variables like '%datadir%';#🎜🎜 #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
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.Close7 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!