【七天入门数据库】第五天 MySQL的备份恢复

系列文章传送门:

【七天入门数据库】第一天 MySQL的安装部署

【七天入门数据库】第二天 数据库理论基础

【七天入门数据库】第三天 MySQL的库表操作

【七天入门数据库】第四天 数据操作语言DML

一、日志管理

(一)日志类型

  • 错误日志:记录启动、运行或停止时出现的问题
  • 查询日志:记录建立的客户端连接和执行的语句
  • 二进制日志:记录所有更改数据的语句。主要用于复制和即时点恢复
  • 慢日志:记录所有执行时间超过long_query_time秒的所有查询或不使用索引的查询
  • 事务日志:记录InnoDB等支持事务的存储引擎执行事务时产生的日志

       默认情况下,所有日志创建于mysqld数据目录中。通过刷新日志,你可以强制 mysqld来关闭和重新打开日志文件(或者在某些情况下切换到一个新的日志)。当你执行一个FLUSH LOGS语句或执行mysqladmin flush-logsmysqladmin 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

都看到这里了,创作不易,大家点个赞走啦!!- ̗̀(๑ᵔ⌔ᵔ๑)

你可能感兴趣的:(七天入门数据库,数据库,mysql)