数据库原理与应用 第 10 章 · 上机四
课程第 10 章上机四 错误日志在哪让它重开一个开了没有把它开起来看它记了什么换一个再删全删重来救回误删的数据连起来 版式
第 10 章 数据库备份还原和日志管理 · 上机四

错误日志与二进制日志

八道题把前两种日志开、看、删走一遍,最后用备份加日志把误删的数据救回来。
已完成 0 / 8
本 次 上 机 题 目
  1. 01它天生就开着,也关不掉
  2. 02mysqladmin flush-logs
  3. 03没开的时候连查都查不了
  4. 04这台终端给了一条捷径
  5. 05改几条数据再用 mysqlbinlog 打开
  6. 06FLUSH LOGS 换新,PURGE 删旧
  7. 07RESET MASTER 一个不留
  8. 08备份加日志,回到误删前一刻
  9. 再走一遍完整的救援
01
第 10 章 · 上机四

它天生就开着,也关不掉

show 出文件名,直接用 type 打开看。

Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
这台终端一开始停在命令提示符上。mysqldump 只能在这儿敲,SQL 要先 mysql -u root -p123456 进去。root 的口令是 123456。
mysql>

重 点

服务起不来的时候,第一件事就是看这个文件的最后几行。

知道更多

真机上这个文件有几百上千行,这里只留了启动那几句。

02
第 10 章 · 上机四

mysqladmin flush-logs

旧的改名成 err-old 留着,新的从头开始写。

Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
这台终端一开始停在命令提示符上。mysqldump 只能在这儿敲,SQL 要先 mysql -u root -p123456 进去。root 的口令是 123456。
mysql>

重 点

旧的没被删掉,只是改了名字,真的不要了再手动删。

知道更多更正

课件第 38 页写成 flush -logs,中间那个空格是多的,第 48 页写对了。

03
第 10 章 · 上机四

没开的时候连查都查不了

log_bin 是 OFF,show binary logs 直接报 1381。

Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
这台终端一开始停在命令提示符上。mysqldump 只能在这儿敲,SQL 要先 mysql -u root -p123456 进去。root 的口令是 123456。
mysql>

重 点

log_bin 是只读的,SET GLOBAL 改不了,真机要写 my.ini 再重启服务。

练一练

四种日志里哪一种必须改配置文件才能开?
  1. A通用日志
  2. B慢查询日志
  3. C二进制日志
答案 C

另外两种一句 set global 就行,只有它要重启。

04
第 10 章 · 上机四

这台终端给了一条捷径

真机要改配置重启,这里一条命令就开了。

Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
这台终端一开始停在命令提示符上。mysqldump 只能在这儿敲,SQL 要先 mysql -u root -p123456 进去。root 的口令是 123456。
mysql>

重 点

开起来之后有了第一个日志文件,编号从 000001 开始。

知道更多

enable-binlog 是这台终端自己加的,真机的 mysqladmin 没有这个参数。

05
第 10 章 · 上机四

改几条数据再用 mysqlbinlog 打开

SELECT 不记,改数据的语句才记。

Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
这台终端一开始停在命令提示符上。mysqldump 只能在这儿敲,SQL 要先 mysql -u root -p123456 进去。root 的口令是 123456。
mysql>

重 点

刚才那句 SELECT 不在里面,二进制日志只记改数据的语句。

记牢它每条前面三样

  1. # at 位置
  2. 时间
  3. 语句原文

想一想

为什么 SELECT 不用记?

06
第 10 章 · 上机四

FLUSH LOGS 换新,PURGE 删旧

换三次就有四个文件,再按编号和按时间各删一次。

Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
这台终端一开始停在命令提示符上。mysqldump 只能在这儿敲,SQL 要先 mysql -u root -p123456 进去。root 的口令是 123456。
mysql>

重 点

TO 删的是编号比它小的那几个,它自己留着。

知道更多更正

课件第 41 页语法里的 og_name 少一个字母,应该是 log_name。

07
第 10 章 · 上机四

RESET MASTER 一个不留

编号回到 000001,之前的日志全没了。

Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
这台终端一开始停在命令提示符上。mysqldump 只能在这儿敲,SQL 要先 mysql -u root -p123456 进去。root 的口令是 123456。
mysql>

重 点

备份加日志才能恢复到误删前一刻,日志删干净了备份也就只能救到备份那一刻。

想一想

什么时候才该用 reset master?

08
第 10 章 · 上机四

备份加日志,回到误删前一刻

早上备一份,中午插一行,下午手抖删库,最后全救回来。

Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
这台终端一开始停在命令提示符上。mysqldump 只能在这儿敲,SQL 要先 mysql -u root -p123456 进去。root 的口令是 123456。
mysql>

重 点

先看 mysqlbinlog 打出来的 DROP 那一句在 # at 几,把这个数填进 --stop-position。

知道更多

填大了就把 DROP DATABASE 也重放一遍,等于白救,填的是那一句的起点。

记牢它两步

  1. 先还原备份
  2. 再重放到出事前
第 10 章 · 上机四

再走一遍完整的救援

这次自己看位置,自己决定停在哪儿。

Welcome to the MySQL monitor. Commands end with ;
Server version: 8.0.36 MySQL Community Server - GPL
这台终端一开始停在命令提示符上。mysqldump 只能在这儿敲,SQL 要先 mysql -u root -p123456 进去。root 的口令是 123456。
mysql>

重 点

只还原备份,那句 UPDATE 就没了。自己用 --stop-position 把它追回来。

想一想

该停在哪一个位置?

保山学院·人工智能教研室·曹鼎鼎