系列文章传送门:
【七天入门数据库】第一天 MySQL的安装部署
【七天入门数据库】第二天 数据库理论基础
【七天入门数据库】第三天 MySQL的库表操作
【七天入门数据库】第四天 数据操作语言DML
一、日志管理
(一)日志类型
- 错误日志:记录启动、运行或停止时出现的问题
- 查询日志:记录建立的客户端连接和执行的语句
- 二进制日志:记录所有更改数据的语句。主要用于复制和即时点恢复
- 慢日志:记录所有执行时间超过long_query_time秒的所有查询或不使用索引的查询
- 事务日志:记录InnoDB等支持事务的存储引擎执行事务时产生的日志
默认情况下,所有日志创建于mysqld数据目录中。通过刷新日志,你可以强制 mysqld来关闭和重新打开日志文件(或者在某些情况下切换到一个新的日志)。当你执行一个FLUSH LOGS
语句或执行mysqladmin flush-logs
或mysqladmin refresh
时,出现日志刷新。如果你正使用MySQL复制功能,从复制服务器将维护更多日志文件,被称为接替日志。
日志刷新命令:mysqladmin -u root -p '密码' flush-logs(或者在mysql里输入flush logs)
(二)错误日志
错误日志主要记录如下几种日志:
-
服务器启动和关闭过程中的信息
-
服务器运行过程中的错误信息
-
事件调度器运行一个时间是产生的信息
-
在从服务器上启动从服务器进程是产生的信息
查看错误日志的配置:SHOW GLOBAL VARIABLES LIKE '%log_error%';
(三)通用查询日志
- 启动开关:general_log={ON|OFF}
- 全局日志开关:log={ON|OFF} 该开关打开后,所有日志都会被启用
- 记录类型:log_output={TABLE|FILE|NONE}
- 查看默认配置:SHOW GLOBAL VARIABLES LIKE '%general_log%';
- 查看记录类型:SHOW GLOBAL VARIABLES LIKE '%log_output%';
因此,要启用通用查询日志,需要至少配置general_log=ON,log_output={TABLE|FILE}。而general_log_file如果没有指定,默认名是host_name.log。
(四)慢查询日志
- 开启命令:SET GLOBAL slow_query_log=ON;
- 查看慢查询情况:SHOW GLOBAL VARIABLES LIKE '%slow_query_log%';
- 查看定义的long_query_time时间:SHOW GLOBAL VARIABLES LIKE 'long_query_time';
(五)二进制日志
- 二进制日志启动开关:log-bin [= 文件名]
- 查看二进制日志的工具为:mysqlbinlog
- 日志滚动:超过日志最大尺寸后会进行滚动
- 查看某个二进制日志文件:SHOW BINARY LOGS in 'binlog.000002';
- 查看二进制日志内容:mysql> SHOW BINLOG EVENTS IN 'mysqld-binlog.000002';
- 二进制日志还原数据:mysqlbinlog mysqld-binlog.000002 >/root/temp_date.sql(使用mysqlbinlog读取需要的日志内容,使用标准输入重定向到一个sql文件,然后在mysql服务器上导入即可)
二、MySQL的备份
(一)备份类型
根据服务器状态,可以分为热备份、温备份、冷备份
-
热备份:读、写不受影响;
-
温备份:仅可以执行读操作;
-
冷备份:离线备份;读、写操作均中止;
(二)备份内容
- 数据文件
- 日志文件(比如事务日志,二进制日志)
- 存储过程,存储函数,触发器
- 配置文件(十分重要,各个配置文件都要备份)
- 用于实现数据库备份的脚本,数据库自身清理的Crontab等……
(三)备份工具
mysqldump,是mysql数据库管理系统,自带的逻辑备份工具,支持所有引擎,MyISAM引擎是温备,InnoDB引擎是热备,备份速度中速,还原速度非常非常慢。但是在实现还原的时候,具有很大的操作余地。具有很好的弹性。
mysqlhotcopy 物理备份工具,但只支持MyISAM引擎,基本上属于冷备的范畴,物理备份,速度比较快。mysql5.7已经没有这个命令了,多用于mysql5.5之前。mysqlhotcopy使用lock tables、flush tables和cp或scp来快速备份数据库或单个表,属于裸文件备份(物理备份),只能用于MyISAM引擎的数据库。本质是使用锁表语句,然后cp或scp。
(四)通过备份恢复数据
1、备份:mysqladmin -u root -p '密码' --default-character-set=utf8-mb4 -B 库名 >/root/sql文件名1
2、全量备份恢复:mysql -u root -p '密码' < sql文件名1
3、找增量日志:cp /var/lib/mysql (去找最后一个binlog文件)
4、增量日志转换为sql:mysqlbinlog binlog.000019 > /root/sql文件名2
5、增量恢复:mysql -u root -p '密码' < sql文件名2
都看到这里了,创作不易,大家点个赞走啦!!- ̗̀(๑ᵔ⌔ᵔ๑)