Recommandations d'apprentissage associées : Tutoriel mysql
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.
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.
Heureusement, j'ai vu quelques plans de récupération de bases de données et j'en connais encore un peu.
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_%';复制代码
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复制代码
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;复制代码
# 查看binlog日志内容show binlog events IN 'mysql-bin.000002';复制代码
# 进入存储binlog日志的文件木了,可以通过这条命令查看详情 mysqlbinlog --base64-output=decode-rows -v mysql-bin.000002;复制代码
# 将binlog日志转为txt导出 mysqlbinlog --base64-output=decode-rows -v mysql-bin.000002 > sql.txt复制代码
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;复制代码
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.
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;复制代码
对于线上环境来说,做好每日备份和binlog一起用才是王道。线上一般都是部署在linux上的,所以这里就简单列一下linux的定时备份方法。
yum install crontabs复制代码
/var/spool/cron/root 此文件为crontab定时任务,可通过crontab -e
或者直接修改此文件修改.
crontab -l
查看定时任务.
touch xxx.sh
mysqldump -uroot -p"密码" 数据库名 > /mysql/person_`date +%Y%m%d`.sql复制代码
chmod 777 xxx.sh
crontab -e
每天凌晨2点执行 00 2 * * * /xxx.sh复制代码
完结!
想了解更多编程学习,敬请关注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!