linux学成之路(基础篇)(二十三)MySQL服务(数据库备份——补充)

目录

一、MySQL数据库备份

概述

重要性

造成数据丢失的原因

二、备份类型

一、物理与逻辑角度

一、物理备份

二、逻辑备份

二、数据库备份策略角度

一、完整备份

二、增量备份

三、常见的备份方法

一、物理备份

二、使用专用备份工具

三、通过启用二进制日志增量备份

四、第三方工具备份

注意事项

四、备份

一、完整备份

一、 打包数据库文件备份

位置

备份

还原

二、备份工具备份

备份

还原

二、增量备份

一、特点

二、MySQL二进制日志对备份的意义

三、开启二进制日志备份功能

四、增量恢复

应用场景

方法

一般恢复

基于时间点的恢复

从某个时间点到日志结尾的恢复

从某个时间点到某个时间点的恢复

基于位置的恢复


一、MySQL数据库备份

概述

        数据库备份是指将数据库中的数据、表格、视图、存储过程、触发器等信息备份到另一个地方,以便在数据库丢失或损坏时进行恢复。数据库备份是数据库管理中必不可少的一项工作,通过备份可以保护数据库中的数据和业务

重要性

        备份的主要目的是灾难恢复,备份还可以测试应用,回滚数据修改,查询历史数据,审计等。

造成数据丢失的原因

        人为错误:人为操作失误、误删除、格式化硬盘、不正确的存储操作等都可能导致数据丢失。       

        硬件故障:硬盘故障、电源故障、主板故障、磁带故障等硬件问题可能导致数据丢失。

        软件问题:操作系统故障、应用程序故障、病毒攻击、系统崩溃等软件问题也可能导致数据丢失。

        自然灾害:火灾、水灾、地震等自然灾害可能损坏设备并导致数据丢失。

        清除备份:误清除备份数据,或者备份过程中出现错误也可能导致数据丢失。

二、备份类型

一、物理与逻辑角度

一、物理备份

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

        冷备份    是在关闭数据库的时候进行的
        热备份    数据库处于运行状态,这种备份方法依赖于数据库的日志文件

二、逻辑备份

        对数据库逻辑组件(如表等数据库对象)的备份,表时为逻辑数据库结构(create database、 create table等语句)和内容(insert语句或分割文本文件)的信息。

二、数据库备份策略角度

一、完整备份

        完整备份指的是备份整个数据库的所有信息,包括数据库文件中所有的数据、表、视图、存储过程、触发器等。一般来说,完整备份是备份最全面、可靠的方式,但备份文件体积较大,备份时间也相对较长

二、增量备份

        增量备份指的是在完整备份的基础上,每隔一定时间备份新增的数据或修改的数据。这种备份方式可以节省备份时间和备份文件的空间,但需要配合特定软件或命令进行

三、常见的备份方法

一、物理备份

        物理冷备份时需要在数据库处于关闭状态下,能够较好的保证数据库的完整性。物理冷备份以用于非核心业务,这类业务都允许中断,物理冷备份的特点就是速度快,恢复时也是最为简单的,通过直接打包数据库文件夹(/usr/local/mysql/data)来实现备份。

二、使用专用备份工具

        mysqldump
        mysqlhotcopy

三、通过启用二进制日志增量备份

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

四、第三方工具备份

        Percona XtraBackup是一个免费的MySQL热备份软件,支持在线备份innodb和XtraDB,也可以支持MySQL表备份,

注意事项

        定期备份,指定备份计划,严格遵守
        除了完全备份之外,开启binlog日志功能很重要
        使用统一的、容易理解的备份名称,推荐使用库名或者表名加上时间的命名规则

四、备份

一、完整备份

一、 打包数据库文件备份

位置

        源码包的位置/usr/local/mysql/data/
        rpm包的位置/var/lib/mysql

备份

        在数据库中创建数据表,并写入数据
        停止数据库服务
        创建备份目录
        按照特定格式对数据库目录进行备份    tar  czf  mysql_all-$(date  +%F).tar.gz  /var/lib/mysql/*

还原

        创建还原目录
        模拟元数据丢失
        将解压之后的数据还原值原目录
        登录查看

二、备份工具备份

备份

        工具            mysqldump
        对单个库进行完全备份            mysqldump -u用户名 -p[密码] [选项] --databases [数据库名] > /备份路径/备份文件名
        对多个库进行完全备份            mysqldump -u用户名 -p[密码] [选项] --databases 库名1 [库名2]…… > /备份路径/备份文件名
        对所有库进行完全备份            mysqldump -u用户名 -p[密码] [选项] --opt --all-databases > /备份路径/备份文件名
        对表进行完全备份            mysqldump -u用户名 -p[密码] [选项] 数据库名 表名 > /备份路径/备份文件名
        对表的结构进行备份            mysqldump -u用户名 -p[密码] -d 数据库名 表名 > /备份路径/备份文件名

还原

工具    source        登录mysql 数据库执行source  备份sql脚本路径
            mysql        mysql -u用户名 -p[密码] < 库备份脚本的路径
                             mysql -u用户名 -p[密码] 库名 < 表备份脚本的路径

二、增量备份

        使用完全备份时,备份与恢复的时间过长

        增量备份就是备份自上一次备份之后增加的或改变的文件内容

一、特点

        没有重复数据,备份量不大,时间短
        恢复麻烦,需要上次完全备份及完全备份之后所有的增量备份才能恢复,而且要对所有增量备份进行逐个反推恢复
        MySQL没有提供直接的增量备份办法,可以通过MySQL提供的二进制日志(binary logs(binlog))间接实现增量备份

二、MySQL二进制日志对备份的意义

        二进制日志保存了所有更新或者可能更新数据库的操作。
        二进制日志在启动MySQL服务器后开始记录,并在文件达到max_binlog_size所设置的大小或者接收到flush logs命令后重新创建新的日志文件。

三、开启二进制日志备份功能

        MySQL的配置文件的[mysqld]项中加入 log-bin=文件存放路径/文件前缀,如 log-bin=mysql-bin,然后重启mysqld服务。默认此配置存在。
        使用mysqld --log-bin=文件存放路径/文件前缀 重新启动mysqld服务每周选择服务器负载较轻的时间段,或者用户访问较少的时间段进行备份

四、增量恢复

应用场景

        人为的SQL语句破坏了数据库
        在进行下一次全备之前发生系统故障导致数据库丢失
        在主从架构中,主库数据发生了故障,保证从库数据一致性

方法

一般恢复

    备份的二进制日志内容全部恢复
    格式: mysqldbinlog [--no-defaults] 增量备份文件 | mysql -u用户名 -p密码

基于时间点的恢复

    便于跳过某个发生错误的时间点实现数据恢复
    格式:从日志开头截止到某个时间点的恢复:
    mysqlbinlog [--no-defaults] --stop-datetime=’年-月-日 小时:分钟:秒‘ 二进制日志 | mysql -u用户名 -p密码

从某个时间点到日志结尾的恢复

    mysqlbinlog [--no-defaults] --start-datetime=’年-月-日 小时:分钟:秒‘ 二进制日志 | mysql -u用户名 -p密码

从某个时间点到某个时间点的恢复

    mysqlbinlog [--no-defaults] --start-datetime=’年-月-日 小时:分钟:秒‘ --stop-datetime=’年-月-日 小时:分钟:秒‘ 二进制日志 | mysql -u用户名 -p密码

基于位置的恢复

    可能在同一时间点既有错误的操作也有正确的操作,基于位置进行恢复更加准确
    mysqlbinlog --stop-position=‘操作 id‘ 二进制日志 | mysql -u用户名 -p密码
    mysqlbinlog --start-position=‘操作 id‘ 二进制日志 | mysql -u用户名 -p密码

五、示例        

         添加数据库、表,录入数据

         先进行一次完全备份

         进行一次日志回滚(生成新的二进制日志)

         继续录入新的数据

         进行增量备份

         模拟误操作删除user_info表

         恢复完全备份

         恢复增量备份

         基于时间点的增量备份恢复

        恢复赵六不恢复孙七

        恢复孙七不恢复赵六

          基于位置的恢复        恢复孙七不恢复赵六

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/10716.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Idea 结合docker-compose 发布项目

Idea 结合docker-compose 发布项目 这里写目录标题 Idea 结合docker-compose 发布项目Docker 开启远程访问功能 添加相应端口配置IDEA 链接Docker配置项目 docker-compose.yml本地还需要安装 dockerwin11 安装本地Docker 可能存在问题 Linux内核不是最新 Docker 开启远程访问功…

IP协议详解

IP协议详解 IP首部&#xff08;IPv4&#xff09;IP分片IP分片的概念IP分片的原因IP分片的具体实现 IP首部&#xff08;IPv4&#xff09; IP首部最小是20个字节&#xff0c;最大是60个字节。 第一个4字节 版本号&#xff08;Version&#xff09;&#xff0c;4位&#xff1b;用…

详解Mybatis之自动映射 自定义映射问题

编译软件&#xff1a;IntelliJ IDEA 2019.2.4 x64 操作系统&#xff1a;win10 x64 位 家庭版 Maven版本&#xff1a;apache-maven-3.6.3 Mybatis版本&#xff1a;3.5.6 文章目录 一、Mybatis中的自动映射是什么&#xff1f;二、Mybatis中的自定义映射是什么&#xff1f;三、为什…

工作纪实34-emoji表情包存储异常,修改db的字段类型

线上问题&#xff0c;发现emojo表情写入数据库出现异常 修改mysql字段的字符集 ALTER TABLE customer_cycle_info MODIFY COLUMN customer_sales_remark varchar(500) CHARACTER SET

【node】使用express+gitee搭建图床,并解决防盗链问题

首先创建一个gitee的项目&#xff0c;详细步骤我就不一一说明 注解&#xff1a;大家记得将这个项目开源&#xff0c;还有记得获取自己的私钥&#xff0c;私钥操作如下&#xff1a; node依赖下载&#xff1a; "axios": "cors": "express"…

IOS自动化测试环境搭建教程

目录 一、前言 二、环境依赖 1、环境依赖项 2、环境需求与支持 三、环境配置 1、xcode安装 2、Git安装 3、Homebrew安装&#xff08;用brew来安装依赖&#xff09; 4、npm和nodejs安装 5、libimobiledevice安装 6、idevicesinstaller安装 7、ios-deploy安装 8、Ca…

安卓的播放器对比与选型(vlc,EXOplayer,Ijkplayer,GSYVideoPlayer)详细过程

安卓的播放器对比与选型&#xff08;vlc&#xff0c;EXOplayer&#xff0c;Ijkplayer&#xff0c;GSYVideoPlayer&#xff09;&#x1f4fa;详细过程 前言一、vlc二、EXOplayer三、Ijkplayer四、GSYVideoPlayer&#x1f525;&#x1f525;&#x1f525;五、其他的开源播放器jia…

GPT-AI 使用的技术概览

ChatGPT 使用的技术概览 智心AI-3.5/4模型&#xff0c;联网对话&#xff0c;MJ快速绘画 从去年 OpenAI 发布 ChatGPT 以来&#xff0c;AI 的能力再次惊艳了世人。在这样的一个时间节点&#xff0c;重新去学习相关技术显得很有必要。 ChatGPT 的内容很多&#xff0c;我计划采用…

Spring Boot 2.7.8以后mysql-connector-java与mysql-connector-j

错误信息 如果升级到Spring Boot 2.7.8&#xff0c;可以看到因为找不到mysql-connector-java依赖而出现错误。 配置&#xff1a; <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId>&l…

win11安装appium

node安装 node下载网址: Download | Node.js 安装后对node安装包路径进行配置 npm config set prefix “E:\nodejs\node_global” //设置全局包目录 npm config set cache “E:\nodejs\node_cache” //设置缓存目录npm config list //查看npm配置npm install -g appium //安…

Java面试笔记

JAVA基础知识 语法结构 1.类 2.属性 3.方法 4.静态代码块 构造器 构造函数&#xff0c;构造类的对象&#xff0c;默认隐式&#xff0c;创建对象&#xff0c;先执行父类构造函数&#xff0c;再执行子类构造函数 父类的super必须在第一行 代码块 优先级最高&#xff0c;只…

Modbus TCP/IP之异常响应

文章目录 一、异常响应二、异常码分析2.1 异常码0x012.2 异常码0x022.3 异常码0x032.4 异常码0x04、0x05等 一、异常响应 对于查询报文&#xff0c;存在以下四种处理反馈&#xff1a; 正常接收&#xff0c;正常处理&#xff0c;返回正常响应报文&#xff1b;因为通信错误等原因…

全志F1C200S嵌入式驱动开发(基于usb otg的spi-nor镜像烧入)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 前面既然已经搞定了spi-nor驱动,那么下一步考虑的就是怎么从spi-nor flash上面加载uboot、kernel和rootfs。目前spi-nor就是一块白片,上面肯定什么都没有,那么这个时候,我们要做…

UE5、CesiumForUnreal实现选中区域地形压平效果

文章目录 1.实现目标2.实现过程2.1 Demo说明2.2 实现过程3.参考资料声明:本篇文章是为某位读者朋友定制开发的功能需求,所以放在了特定的专栏里,其他的朋友可以忽略这篇文章哈! 1.实现目标 基于CesiumForUnreal插件的CesiumPolygonRasterOverlay组件实现选中区域地形压平的…

构建自己的ChatGPT:从零开始构建个性化语言模型

&#x1f337;&#x1f341; 博主 libin9iOak带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33…

【力扣每日一题】2023.7.27 删除每行中的最大值

目录 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 代码运行结果&#xff1a; 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 给我们一个矩阵&#xff0c;每次都把每行中的最大元素拿出来删掉&#xff0c;再把每次删除的元素里最大的元素拿出来加到结果里&…

Jetbrains 2023.2教程

IDEA 2023.2 激活演示 Pycharm 2023.2 激活演示 WebStorm 2023.2 激活演示 Clion 2023.2 激活演示 DataGrip 2023.2 PhpStorm 2023.1.4 激活演示&#xff08;2023.2尚未发布&#xff09; RubyMine 2023.2 激活演示 获取方式 仔细看每一个工具演示的图片 本文由 mdnice …

火车头神码ai伪原创【php源码】

大家好&#xff0c;小编来为大家解答以下问题&#xff0c;python中常用的类&#xff0c;python 类的用法&#xff0c;现在让我们一起来看看吧&#xff01; 火车头采集ai伪原创插件截图&#xff1a;

Python - OpenCV实现摄像头人脸识别(亲测版)

要使用Python 3和OpenCV进行摄像头人脸识别&#xff0c;您可以按照以下步骤进行操作&#xff1a; 1.安装OpenCV库 在命令行中输入以下命令&#xff1a; pip install opencv-python2.准备人脸检测器 使用OpenCV的人脸检测器可以检测出图像中的人脸。在Python中&#xff0c;您…

【Terraform学习】TerraformCloud入门介绍(快速入门)

TerraformCloud入门介绍 什么是 TerraformCloud&#xff1f; Terraform Cloud是Hashicorp Terraform的SaaS版本。 免费版功能 免费版功能包括版本控制集成、远程计划和实施远程计划和实施、通知及webhook、全http API驱动、状态管理、模拟计划、私有化模块注册器以及全HTTP界…