• MySQL日志管理、备份与恢复


    1、MySQL日志管理

    MySQL 的日志默认保存位置为/usr/local/mysql/data MySQL
    的日志配置文件为/etc/my.cnf,里面有个[mysqld]项。

    在这里插入图片描述

    1.1日志的分类

    1.1.1错误日志

    用来记录当MySQL启动、停止或运行时发生的错误信息,默认已开启

    vim /etc/my.cnf
    log-error=/usr/local/mysql/data/mysql_error.log	
    
    • 1
    • 2

    1.1.2 通用查询日志

    用来记录MySQL的所有连接和语句,默认是关闭的

    vim /etc/my.cnf
    general_log=ON
    general_log_file=/usr/local/mysql/data/mysql_general.log
    
    • 1
    • 2
    • 3

    1.1.3二进制日志

    用来记录所有更新了数据或者已经潜在更新了数据的语句,记录了数据的更改,可用于数据恢复,默认已开启

    vim /etc/my.cnf
    #也可以 log_bin=mysql-bin
    log-bin=mysql-bin				
    
    • 1
    • 2
    • 3

    1.1.4慢查询日志

    用来记录所有执行时间超过long_query_time秒的语句,可以找到哪些查询语句执行时间长,以便于优化,默认是关闭的

    vim /etc/my.cnf
    slow_query_log=ON
    slow_query_log_file=/usr/local/mysql/data/mysql_slow_query.log
    long_query_time=5	
    
    • 1
    • 2
    • 3
    • 4

    1.1.5 配置日志

    1、#修改my.cnf配置文件
     
    #错误日志
    log-error=/usr/local/mysql/data/mysql_error.log	
    #通用查询日志
    general_log=ON
    general_log_file=/usr/local/mysql/data/mysql_general.log
    #二进制日志
    log-bin=mysql-bin	
    #慢查询日志
    slow_query_log=ON
    slow_query_log_file=/usr/local/mysql/data/mysql_slow_query.log
    long_query_time=5
     
    2、 #重新mysql服务
    systemctl restart mysqld.service
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    在这里插入图片描述
    在这里插入图片描述

    1.2日志的查询

    #登入mysql
    mysql -u root -p[密码]
     
    #查看通用查询日志是否开启
    show variables like 'general%';	
     
    #查看二进制日志是否开启
    show variables like 'log_bin%';									
    #查看慢查询日功能是否开启
    show variables like '%slow%';								
    #查看慢查询时间设置
    show variables like 'long_query_time';						
    #在数据库中设置开启慢查询的方法
    set global slow_query_log=ON;		
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    在这里插入图片描述

    2、MySQL完全备份与恢复

    2.1 数据备份的重要性

    • 备份的主要目的是灾难恢复
    • 在生产环境中,数据的安全性至关重要
    • 任何数据的丢失都可能产生严重的后果

    2.2造成数据丢失的原因

    • 程序错误
    • 人为操作错误.
    • 运算错误
    • 磁盘故障
    • 灾难(如火灾、地震)和盗窃

    2.3数据库备份的分类

    2.3.1从物理和逻辑角度分

    物理备份:对数据库操作系统的物理文件(如数据文件、日志文件等)的备份

    物理备份的方法 :

    • 冷备份(脱机备份) :是在关闭数据库的时候进行的;
    • 热备份(联机备份) :数据库处于运行状态,依赖于数据库的日志文件;
    • 温备份:数据库锁定表格(不可写入但可读)的状态下进行备份操作。

    逻辑备份:对数据库逻辑组件(如:表等数据库对象)的备份

    2.4 数据库的备份策略

    在这里插入图片描述

    1)完全备份:每次对数据库进行完整的备份

    • 是对整个数据库、数据库结构和文件结构的备份
    • 保存的是备份完成时刻的数据库
    • 是差异备份与增量备份的基础

    优点:备份与恢复操作简单方便 缺点:数据存在大量的重复、占用大量的备份空间及备份与恢复时间长

    2)差异备份:备份自从上次完全备份之后被修改过的文件

    3)增量备份:只有在上次完全备份或者增量备份后被修改的文件才会被备份

    3、模拟实现一次完全备份,两次增量备份

    mysql -u root -p  //进入数据库
    show databases;   //查看数据库
    
    • 1
    • 2

    请添加图片描述

    create database result;  //创建数据库
    show databases;         //查看数据库
    use result;            //进入数据库
    show tables;          //查看库
    
    • 1
    • 2
    • 3
    • 4

    请添加图片描述

    create table 班级 (姓名 char(4),班级 char(2),学号 int,语文 int,数学 int,英语 int,理综 int);
    //向数据库内添加表,并设置表的格式
    show tables; //查看表是否创建成功
    desc 班级;   //查看创建的表的结构
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    insert into 班级 values ('张三','一班',20170822,110,105,92,235);
    insert into 班级 values ('李四','一班',20170820,95,115,110,260);
    insert into 班级 values ('王五','一班',20170818,95,103,108,270);
    insert into 班级 values ('赵六','一班',20170816,100,109,112,265);
    //根据表的规则向表内添加信息
    select * from 班级;
    //查看表内的全部信息
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这里插入图片描述

    vim /etc/my.cnf
    //进入配置文件
    log-bin=mysql-bin
    //添加此行内容,开启二进制日志
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    systemctl restart mysqld.service
    //重启服务
    mkdir mysql-backup  //创建文件夹
    cd mysql-backup/    //切换到该目录下
    mkdir full bin     //在该目录下继续创建两个子文件夹
    ls                //查看是否创建成功
    mysqldump -u root -pabc123 result 班级 > /root/mysql-backup/full/result_班级-$(date +%Y%m%d).sql
    //将数据库内容备份到full文件夹中
    cd full  //切换到full文件夹
    ls       //查看是否备份成功
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    在这里插入图片描述

    insert into 班级 values ('李宁','二班',20170824,92,98,105,235);
    insert into 班级 values ('陈铭','二班',20170826,111,107,96,204);
    //向表内添加数据
    select * from 班级;
    //查看表内的数据内容
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    cd /usr/local/mysql/data //切换到存放二进制文件目录
    ls //查看二进制文件是否生成
    
    • 1
    • 2

    请添加图片描述

    mysqladmin -u root -pabc123 flush-logs //刷新日志
    ls //查看是否有该二进制文件
    mv -f mysql-bin.000001 /root/mysql-backup/bin/mysql-bin.000001-$(date -d '1 d' +%Y%m%d)
    //移走该二进制文件
    cd /root/mysql-backup/bin/
    //切换到移动后的目录
    ls  //查看是否存在
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这里插入图片描述

    insert into 班级 values ('付杰','二班',20170828,115,118,116,268);
    insert into 班级 values ('郭尚','二班',20170830,111,99,80,259);
    //向表内插入新的数据
    select * from 班级;
    //查看表的的全部数据内容
    
    • 1
    • 2
    • 3
    • 4
    • 5

    请添加图片描述

    mysqladmin -u root -pabc123 flush-logs
    //刷新二进制日志文件
    mv -f mysql-bin.000002 /root/mysql-backup/bin/mysql-bin.000002-$(date -d '2 d' +%Y%m%d)
    //移走二进制日志文件
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    show databases;
    //查看库
    drop database result;
    //删除库
    show databases;
    //查看库是否删除成功
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    create database result;
    //创建新库
    show databases;
    //查看新库是否创建成功
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    mysql -uroot -pabc123 result < /root/mysql-backup/full/result_班级-20230918.sql
    //先完全恢复第一次的内容
    
    • 1
    • 2

    在这里插入图片描述

    use result;
    //进入库
    show tables;
    //查看表是否存在
    select * from 班级;
    //查看表中的全部数据内容
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    mysqlbinlog --no-defaults /root/mysql-backup/bin/mysql-bin.000001-20230918 | mysql -uroot -pabc123
    //第一次增量备份
    mysqlbinlog --no-defaults /root/mysql-backup/bin/mysql-bin.000002-20230918 | mysql -uroot -pabc123
    //第二次增量备份
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    select * from 班级;
    //查看表中信息是否恢复成功
    
    • 1
    • 2

    在这里插入图片描述

  • 相关阅读:
    使用.Net对图片进行裁剪、缩放、与加水印
    Lodash初识
    stm32 Bootloader设计(YModem协议)
    STM32 新建工程
    元宇宙电商NFG是未来的风口吗?
    安达发|印刷包装行业利用APS自动排产系统迎来绿色革命
    服务器防漏扫
    工业物联网网关解决方案openwrt二次开发无线路由WiFi模块选型
    ES6学习系列
    一份谷歌写给 CTO 们的报告 - DORA 2023 版全面解读
  • 原文地址:https://blog.csdn.net/m0_62231324/article/details/133464192