• Mysql 备份与恢复


    日志

    MySQL 的日志默认保存位置为 /usr/local/mysql/data

    常见的日志

    • 错误日志:mysql本身启动,停止,运行期间发生的错误信息
    • 一般查询日志
    • 二进制日志:用于基于日志形式的数据恢复。用于主从复制,实现主从同步,记录的内容是:数据库中执行的sql语句
    • 中继日志:用于数据库主从同步,将主库发来的bin log保存在本地,然后从库进行回放。
    • 重做日志:确保日志的持久性,防止在发生故障,脏页未写入磁盘。重启数据库会进行 redo log 执行重做,达到事务一致性
    • 回滚日志 :保证数据的原子性,记录事务发生之前的一个版本,用于回滚,innodb事务可重复和读取已提交隔离级别就是通过mvcc+undo实现
    • 慢查询日志:记录执行时间过长的sql语句,时间默认值为10s,可以配置,只记录执行成功,超过设置时间的sql语句,都会被存在到慢查询日志中。
      还可以提醒优化,对于查询慢的语句进行操作(比如是网络问题,还是未添加索引等)
    • 普通日志:记录数据库的操作明细,默认关闭,开启后会降低数据库的性能

    配置文件位置:vim /etc/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     #设置超过5秒执行的语句被记录,缺省时为10秒

    重启MySQL服务后,日志文件会生成在这里;二进制文件每刷新一次,便会生成一个文件

    查看日志状态

    • 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;         #在数据库中设置开启慢查询的方法

    备份类型

    数据库备份可以物理备份和逻辑备份

    物理备份是对数据库操作系统的物理文件(如数据文件、日志文件等)的备份,这种类型的备份适用于在出现问题的时候需要快速恢复的大型重要数据库。

    物理备份

    物理备份又可以分为冷备份(脱机备份)、热备份(连接备份)、温备份

    冷备份(脱机备份)

    是在关闭数据库的时候进行的备份,可以直接(tar)

    热备份(连接备份)

    数据库处于运行状态,依赖数据库的日志文件(第三方工具:mysqlhotcopy)

    温备份

    数据库锁定表格(不可写入但可读)的状态下进行备份操作。(mysqldump备份)

    逻辑备份

    逻辑备份是对数据库逻辑组件的备份.表示为逻辑数据库结构
    这种类型的备份适用于可以编辑数据值或表结构  

    从数据库的备份策略角度来看,备份又可以分为完全备份,差异备份和增量备份

    • 完全备份

    每次对数据进行完整备份,即对整个数据库、数据库结构和文件结构的备份,保存的是备份完成时刻的数据库,是差异备份与增量备份的基础完全备份的备份,与恢复操作都非常便便,但是是数据存在大量的重复并且会占用大量的磁盘空间,备份的时间也很长

    备份恢复操作简单;但占用的磁盘空间和资源会很多

    • 差异备份

    备份那些自从上次完全备份之后被修改过的所有文件,备份的时间 节点是从上次完整备份起 ,备份数据量会越来越大。 恢复数据时只需要恢复上次的完全备份与最佳的一次差异备份

    复时只需要恢复全备文件和就近一次备份文件;但是数据也会越来越多,有重复数据

    • 增量备份

    只有那些在上次完全备份或者增量备份后被修改的文件才会被备份以 上次完整备份或上次增量备份的时间为时间点 ,仅备份期间内的数据变化,因而备份的数据量小,占用空间小,备份速度快。但恢复时, 需要从上一次的完整备份开始到最后一次增量备份之间的所有增量依次恢复,如中间某次的备份数据损坏,将导致数据的丢失

    没有重复的备份数据,所需时间短

    但数据恢复比较麻烦,中间任何一个备份的数据都不能损坏,不然导致数据丢失

    备份流程如下表:

    备份方式完全备份差异备份增量备份
    完全备份的状态表1、表2表1、表2、表1、表2
    第一次添加内容表3表3表3
    备份内容表1、表2、表3表3表3
    第二次添加内容表4表4表4
    部分内容表1、表2、表3、表4表3、表4表4

    备份方法

    物理冷备

    备份时数据库处于关闭状态,直接打包数据库文件(tar)
    备份速度快,恢复时也是最简单的

    专用备份工具 mysqldump 或 mysqlhotcopy 

    mysqldump 常用的逻辑备份工具(使用较多)
    mysqlhotcopy 仅拥有备份 MyISAM 和 ARCHIVE 表(使用较少)

    启用二进制日志进行增量备份

    进行增量备份,需要刷新二进制日志

    MySQL支持增量备份,进行增量备份时必须启用二进制日志。二进制日志文件为用户提供复制,对执行备份点后进行的数据库更改所需的信息进行恢复。如果进行增量备份(包含自上次完全备份或增量备份以来发生的数据修改),需要刷新二进制日志

    第三方工具备份

    免费的MySQL 热备份软件 Percona XtraBackup mysqlbackup

    实验

    冷备份

    创建一个库、再创建一个表并插入一些数据

    查看并退出;

    检查xz软件是否安装、数据库的所有目录在 /usr/local/mysql/

    备份所有数据库文件,添加压缩包在当前目录下

    并移动到opt目录下

    将原有data目录数据库移走

    在opt目录下解压 

    再恢复到原来目录中 恢复成功

    完全备份

    查看备份文件 过滤出有用的信息

    备份kkyy并删除它

    source 恢复

    温备份

  • 相关阅读:
    企业运维实践-还不会部署高可用的kubernetes集群?使用kubeadm方式安装高可用k8s集群v1.23.7
    Go基础语法:变量和常量
    MSF后渗透总结
    win11 通过防火墙设置-开通本地端口
    从零开始搭建 Hexo 个人博客
    决策树,sql考题,30个经典sql题目
    Defects4j数据集安装及使用
    数据库的基本概念以及MySQL基本操作
    SCA Nacos 服务注册和配置中心(二)
    CSS3 就可以写出一个苹果官方渐变颜色文字效果,真的太逼真了!
  • 原文地址:https://blog.csdn.net/khvbjhb/article/details/132558403