Maison > base de données > tutoriel mysql > Triste histoire, lorsque la base de données en ligne a été accidentellement supprimée

Triste histoire, lorsque la base de données en ligne a été accidentellement supprimée

coldplay.xixi
Libérer: 2020-09-12 17:59:01
avant
3583 Les gens l'ont consulté

Triste histoire, lorsque la base de données en ligne a été accidentellement supprimée

Recommandations d'apprentissage associées : Tutoriel mysql

Avant-propos

En raison de la récente saison scolaire, notre entreprise, je fais également des affaires liées aux collèges et aux universités, donc je suis assez occupé et je n'ai pas beaucoup de temps pour écrire des articles. Une fois que les gens sont trop occupés, ils ont tendance à faire des erreurs lorsqu'ils sont occupés. Quant à moi, il y a quelques jours à peine, non, un de mes amis a failli supprimer la base de données et s'est enfui alors qu'il exploitait une base de données en ligne il y a quelques jours.

Triste histoire, lorsque la base de données en ligne a été accidentellement supprimée

Notez à l'avance : C'est vraiment mon ami, pas moi. C'est vraiment mon ami, pas moi. C'est vraiment mon ami, pas moi. Cependant, pour la commodité du récit, « mon ami » sera appelé ci-dessous « je ».

Le truc est comme ça, quand j'ai comparé certaines structures de table, j'ai trouvé que les structures de table de cette bibliothèque et d'autres bibliothèques étaient assez différentes, donc j'ai pensé que cet environnement n'était pas utilisé, alors j'ai directement comparé ces tables Une opération d'écrasement a été effectuée, et ces tables se trouvaient être liées aux portefeuilles des étudiants. Puis vers 22 heures du soir, le personnel de première ligne de l'entreprise a signalé au groupe pourquoi l'argent dans le portefeuille était devenu 0,0. Dès que j'ai vu cela, j'ai eu tellement peur que j'ai fait pipi et je me suis demandé si je devais m'enfuir.

Triste histoire, lorsque la base de données en ligne a été accidentellement supprimée

Heureusement, j'ai vu quelques plans de récupération de bases de données et j'en connais encore un peu.

Récupération de données

1. Activez le journal binlog

J'utilise le journal binlog pour récupérer des données Pour utiliser le journal binlog, vous devez d'abord vous assurer que le journal binlog est. activé. Vous pouvez utiliser la commande pour afficher.

show variables like 'log_%';复制代码
Copier après la connexion
Triste histoire, lorsque la base de données en ligne a été accidentellement supprimée

Vous pouvez voir qu'il est à l'état ON, indiquant qu'il est allumé. S'il est à l'état OFF, dans mon. .cnf [mysqld] Après avoir ajouté la configuration, redémarrez le service mysql pour l'activer.

# my.cnf文件
[mysqld]
log-bin=mysql-bin
server-id=1复制代码
Copier après la connexion

2. Vérifiez le journal binlog

Assurez-vous qu'après avoir ouvert le jour du binlog, vous pouvez vérifier l'état du journal binlog via la commande.

# 查看binlog日志的目录show master status;复制代码
Copier après la connexion
Triste histoire, lorsque la base de données en ligne a été accidentellement supprimée
# 查看binlog日志内容show binlog events IN 'mysql-bin.000002';复制代码
Copier après la connexion
Triste histoire, lorsque la base de données en ligne a été accidentellement supprimée
  • Log_name représente le nom du journal binlog
  • Pos représente le point de départ de la pos
  • Event_type représente le type de cette opération
  • Server_id représente l'identifiant de la machine, qui est spécifié par la configuration dans my.cnf
  • End_log_pos représente le point final de pos
  • Info représente la déclaration spécifique
Triste histoire, lorsque la base de données en ligne a été accidentellement supprimée
# 进入存储binlog日志的文件木了,可以通过这条命令查看详情
 mysqlbinlog --base64-output=decode-rows -v mysql-bin.000002;复制代码
Copier après la connexion
Triste histoire, lorsque la base de données en ligne a été accidentellement supprimée
# 将binlog日志转为txt导出
mysqlbinlog --base64-output=decode-rows -v mysql-bin.000002 > sql.txt复制代码
Copier après la connexion

3. Restaurer les données

journal binlog Pour restaurer les données , récupération en ligne de commande couramment utilisée, ou La méthode consiste à copier le journal binlog, à utiliser un outil pour lire le binlog afin de le convertir en fichier .sql, puis à copier tout le SQL qui doit être utilisé et à l'exécuter à nouveau. l'accent est ici mis sur la méthode de récupération en ligne de commande.

La récupération en ligne de commande s'effectue principalement en vérifiant le journal binlog, en confirmant le point de départ et le point final à restaurer, puis en entrant la commande à restaurer. Ou estimez le moment où vous avez commis une erreur et récupérez les données dans un délai donné.

# 通过起始点和结束点恢复    
mysqlbinlog --start-position="582" --stop-position="9414" mysql-bin.000002 | mysql -uroot -proot;复制代码
Copier après la connexion
rrree
Triste histoire, lorsque la base de données en ligne a été accidentellement supprimée
Triste histoire, lorsque la base de données en ligne a été accidentellement supprimée

Comme vous pouvez le voir, après avoir entré la commande de récupération, j'ai effacé Les données de la base de données sont de retour.

4. Problème

Bien que le journal binlog puisse récupérer des données, il existe également des problèmes lorsque le journal binlog continue d'augmenter, il sera automatiquement supprimé, ce qui entraînera la suppression d'une partie de celui-ci. le journal. Les données ne peuvent pas être récupérées.

Cependant, la taille et la durée de stockage du journal binlog peuvent être définies dans MySQL. Cependant, il est toujours recommandé de faire des sauvegardes quotidiennes pour s'assurer que tout se passe bien.

# 设置文件大小,单位是字节,下面换算是100Mset global max_binlog_size=104857600;

# 设置文件保存天数,下面是保存7天,默认值为0,表示"没有自动删除"set global expire_logs_days = 7;复制代码
Copier après la connexion

每日备份

对于线上环境来说,做好每日备份和binlog一起用才是王道。线上一般都是部署在linux上的,所以这里就简单列一下linux的定时备份方法。

1.检查是否安装定时任务,安装crontab

yum install crontabs复制代码
Copier après la connexion

2.设置定时任务

/var/spool/cron/root  此文件为crontab定时任务,可通过crontab -e或者直接修改此文件修改.

crontab -l查看定时任务.

3.创建一个shell脚本

touch xxx.sh

mysqldump -uroot -p"密码" 数据库名 > /mysql/person_`date +%Y%m%d`.sql复制代码
Copier après la connexion

4.修改文件权限

chmod 777 xxx.sh

5.打开定时任务文件

crontab -e

每天凌晨2点执行
00 2 * * * /xxx.sh复制代码
Copier après la connexion

完结!

想了解更多编程学习,敬请关注php培训栏目!

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:juejin.im
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