数据库—数据库备份(三十四)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

目录

前言

一、概述

二、数据备份的重要性

三、造成数据丢失的原因

四、备份类型

4.1物理与逻辑角度

4.2数据库备份策略角度

五、常见的备份方法

5.1 物理备份

5.2 使用专用备份工具

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

5.4 第三方工具备份

六、备份

6.1 完整备份

6.1.1 打包数据库文件备份

 6.1.2 备份工具备份

6.2 增量备份

MySQL企业备份案例

 总结



前言

       数据库备份是指将数据库的数据和结构复制到其他存储介质或位置的过程。数据库备份是数据库管理的重要任务,它可以提供数据的保护和恢复功能,并在发生数据丢失、系统故障、灾害等情况下可以迅速还原数据库。


提示:以下是本篇文章正文内容,下面案例可供参考

一、概述

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

二、数据备份的重要性

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

三、造成数据丢失的原因

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

四、备份类型

4.1物理与逻辑角度

物理备份对数据库操作系统的物理文件(如数据文件、日志文件等)的备份
 冷备份 是在关闭数据库的时候进行的
 热备份 数据库处于运行状态,这种备份方法依赖于数据库的日志文件
 逻辑备份对数据库逻辑组件(如表等数据库对象)的备份,表时为逻辑数据库结构(create database、 create table等语句)和内容(insert语句或分割文本文件)的信息

4.2数据库备份策略角度

 完整备份
        完整备份指的是备份整个数据库的所有信息,包括数据库文件中所有的数据、表、视图、存储过程、触发器等。一般来说,完整备份是备份最全面、可靠的方式,但备份文件体积较大,备份时间也相对较长
 增量备份 增量备份指的是在完整备份的基础上,每隔一定时间备份新增的数据或修改的数据。这种备份方式可以节省备份时间和备份文件的空间,但需要配合特定软件或命令进行

五、常见的备份方法

5.1 物理备份

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

5.2 使用专用备份工具

        mysqldump
        mysqlhotcopy

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

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

5.4 第三方工具备份

         Percona XtraBackup是一个免费的MySQL热备份软件,支持在线备份innodb和XtraDB,也可以支持MySQL表备份。
    注意事项
        定期备份,指定备份计划,严格遵守
        除了完全备份之外,开启binlog日志功能很重要
        使用统一的、容易理解的备份名称,推荐使用库名或者表名加上时间的命名规则

六、备份

6.1 完整备份

6.1.1 打包数据库文件备份

    位置
        源码包的位置/usr/local/mysql/data/
        rpm包的位置/var/lib/mysql
    备份
        在数据库中创建数据表,并写入数据
        停止数据库服务
        创建备份目录
        按照特定格式对数据库目录进行备份
            tar  czf  mysql_all-$(date  +%F).tar.gz  /var/lib/mysql/*
    还原
        创建还原目录
        模拟元数据丢失
        将解压之后的数据还原至原目录
        登录查看

创建数据表并写入数据 

 停止数据库服务

对数据库目录进行压缩归档备份

 还原:创建目录

 移动到/bak 

 将包解压到/restore

 还原到原目录

 启动服务,查看

 6.1.2 备份工具备份

 1. 备份
        工具
            mysqldump
        对单个库进行完全备份
            mysqldump -u用户名 -p[密码] [选项] --databases [数据库名] > /备份路径/备份文件名


        对多个库进行完全备份
            mysqldump -u用户名 -p[密码] [选项] --databases 库名1 [库名2]…… > /备份路径/备份文件名


        对所有库进行完全备份
            mysqldump -u用户名 -p[密码] [选项] --opt --all-databases > /备份路径/备份文件名


        对表进行完全备份
            mysqldump -u用户名 -p[密码] [选项] 数据库名 表名 > /备份路径/备份文件名


        对表的结构进行备份
            mysqldump -u用户名 -p[密码] -d 数据库名 表名 > /备份路径/备份文件名


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

 进入数据库,删除库test

 还原

 进入数据库,删除表massage

 还原

6.2 增量备份

    使用完全备份时,备份与恢复的时间过长
    增量备份就是备份自上一次备份之后增加的或改变的文件内容
    特点 :
        没有重复数据,备份量不大,时间短
        恢复麻烦,需要上次完全备份及完全备份之后所有的增量备份才能恢复,而且要对所有增量备份进行逐个反推恢复
        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密码

 一般恢复 :

 第一次完全备份  第一次日志回滚

 查看表的内容

新增数据

 删除表

恢复第一次表的备份

  查看

 恢复增量

MySQL企业备份案例

需求描述:

北京移电通信公司的用户信息数据库为client,用户资费数据表为user_info

请为该公司每周进行完全备份

每天为该公司进行增量备份

· 新增加的用户信息如表所示

安装mysql(yum 方式)

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

 先进行一次完全备份

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

 继续录入新的数据

进行增量备份

模拟误操作删除user_info表

 恢复完全备份

 恢复增量备份

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

 

 基于位置的恢复


 总结

       数据库备份的重要性在于保护数据免遭丢失、误删、病毒攻击、硬件故障、自然灾害等风险。所以,我们在以后的生产、生活中要及时做数据备份,防止造成数据的丢失。

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

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

相关文章

C#再windowForm窗体中绘画扇形并给其填充颜色

C#再windowForm窗体中绘画扇形并给其填充颜色 Graphics graphics this.CreateGraphics();graphics.SmoothingMode SmoothingMode.AntiAlias;int width this.Width;int height this.Height;h this.Height;w this.Width;Rectangle rct new Rectangle(0 - h / 6, 0 - h / 6…

【Ansible】自动化部署工具-----Ansible

自动化部署工具-Ansible 1.Ansible概述2.ansible环境安装部署2.1 command模块2.2 shell模块2.3 cron模块2.4 user模块2.5 group模块2.6 copy模块2.7 file模块2.8 hostname模块2.9 ping模块2.10 yum模块2.11 service/systemd模块2.12 script模块2.13 mount模块2.14 archive模块2…

PostgreSQL中如何配置Huge page的数量

在了解如在PG中如何配置大页之前&#xff0c;我们先要对大页进行一定的了解&#xff0c;为什么要配置大页&#xff0c;配置大页的好处有哪些。 我们日常的操作系统中&#xff0c;程序不直接使用内存&#xff0c;而是使用虚拟内存地址来处理内存分配&#xff0c;避免计算的复杂…

【Docker】初识Docker以及Docker安装与阿里云镜像配置

目录 一、初识Docker 二、安装Docker 三、Docker架构 四、配置Docker镜像加速器 一、初识Docker Docker是一个开源的应用容器引擎&#xff0c;诞生于2013年&#xff0c;基于Go语言实现&#xff0c;dotCloud公司出品&#xff0c;Docker开源让开发者打包他们的应用以及依赖包到…

使用frp中的xtcp映射穿透指定服务实现不依赖公网ip网速的内网穿透p2p

使用frp中的xtcp映射穿透指定服务实现不依赖公网ip网速的内网穿透p2p 管理员Ubuntu配置公网服务端frps配置service自启(可选) 配置内网服务端frpc配置service自启(可选) 使用者配置service自启(可选) 效果 通过frp实现内网client访问另外一个内网服务器 管理员 1&#xff09;…

vmware磁盘组使用率100%处理

今天在外办事时&#xff0c;有客户发过来一个截图&#xff0c;问vmware 磁盘组空间使用率100%咋办&#xff1f;如下图&#xff1a; 直接回复&#xff1a; 1、首先删除iso文件等 2、若不存在ISO文件等&#xff0c;找个最不重要的虚拟机直接删除&#xff0c;删除后稍等就会释放…

订单30分钟未支付自动取消怎么实现?

目录 了解需求方案 1&#xff1a;数据库轮询方案 2&#xff1a;JDK 的延迟队列方案 3&#xff1a;时间轮算法方案 4&#xff1a;redis 缓存方案 5&#xff1a;使用消息队列 了解需求 在开发中&#xff0c;往往会遇到一些关于延时任务的需求。最全面的Java面试网站 例如 生…

ESP32(MicroPython) 四足机器人(一)

最近决定研究一下四足机器人&#xff0c;但市面上的产品&#xff0c;要么性价比低&#xff0c;要么性能达不到要求。本人就另外买了零件&#xff0c;安装到之前的一个麦克纳姆轮底盘的底板上。&#xff08;轮子作为装饰&#xff0c;使用铜柱固定&#xff09; 舵机使用MG996R&a…

使用TensorFlow训练深度学习模型实战(下)

大家好&#xff0c;本文接TensorFlow训练深度学习模型的上半部分继续进行讲述&#xff0c;下面将介绍有关定义深度学习模型、训练模型和评估模型的内容。 定义深度学习模型 数据准备完成后&#xff0c;下一步是使用TensorFlow搭建神经网络模型&#xff0c;搭建模型有两个选项…

x86架构ubuntu22用docker部署zsnes

0. 环境 x86 ubuntu22 1. 安装docker $ sudo apt remove docker docker-engine docker $ sudo apt update $ sudo apt install -y apt-transport-https ca-certificates curl software-properties-common$ curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg …

JDK17 中的新特性初步了解

1. Switch 语句的增强 jdk12 &#xff0c;switch语句不用写break了&#xff0c;直接写箭头和对应的值。 jdk 17中&#xff0c; 加了一个逗号&#xff0c;用于匹配多对一。 如果要在每个case里写逻辑&#xff0c;可以写在花括号里。 在返回值的前面加上yield的关键字。 也可以对…

多线程案例 | 单例模式、阻塞队列、定时器、线程池

多线程案例 1、案例一&#xff1a;线程安全的单例模式 单例模式 单例模式是设计模式的一种 什么是设计模式&#xff1f; 设计模式好比象棋中的 “棋谱”&#xff0c;红方当头炮&#xff0c;黑方马来跳&#xff0c;针对红方的一些走法&#xff0c;黑方应招的时候有一些固定的…

ScheduledThreadPoolExecutor 及 ThreadPoolExecutor的基本使用及说明

关于作者&#xff1a;CSDN内容合伙人、技术专家&#xff0c; 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 &#xff0c;擅长java后端、移动开发、人工智能等&#xff0c;希望大家多多支持。 目录 一、导读二、概览2.1 为什么不推荐使用Executors去创建线程池 三、…

python进阶书籍的推荐 知乎,python入门后如何进阶

本篇文章给大家谈谈python进阶书籍的推荐 知乎&#xff0c;以及python入门后如何进阶&#xff0c;希望对各位有所帮助&#xff0c;不要忘了收藏本站喔。 1、Python应该怎么学_python应该怎么学 想要学习Python&#xff0c;需要掌握的内容还是比较多的&#xff0c;对于自学的同…

【MySQL】索引特性

​&#x1f320; 作者&#xff1a;阿亮joy. &#x1f386;专栏&#xff1a;《零基础入门MySQL》 &#x1f387; 座右铭&#xff1a;每个优秀的人都有一段沉默的时光&#xff0c;那段时光是付出了很多努力却得不到结果的日子&#xff0c;我们把它叫做扎根 目录 &#x1f449;没…

重大更新|Sui主网即将上线流动性质押,助力资产再流通

Sui社区一直提议官方上线流动质押功能&#xff0c;现在通过SIP过程&#xff0c;已经升级该协议以实现这一功能。 Sui使用委托权益证明机制&#xff08;DPoS&#xff09;来选择和奖励负责运营网络的验证节点。为了保障网络安全&#xff0c;验证节点通过质押SUI token获得质押奖…

抖音短视频矩阵系统源码:SEO优化开发解析

抖音短视频矩阵系统源码是一个基于抖音短视频平台的应用程序。它允许用户上传和观看短视频&#xff0c;以及与其他用户交互。SEO优化开发解析是指对该系统进行搜索引擎优化的开发解析。 一、 在进行SEO优化开发解析时&#xff0c;可以考虑以下几点&#xff1a; 关键词优化&…

前端调用合约如何避免出现transaction fail

前言&#xff1a; 作为开发&#xff0c;你一定经历过调用合约的时候发现 gas fee 超出限制&#xff0c;但是不知道报了什么错。这个时候一般都是触发了require错误合约校验。对于用户来说他不理解为什么一笔交易会花费如此大的gas&#xff0c;那我们作为开发如何尽量避免这种情…

Jvm的一些技巧

反编译字节码文件 找到对应的class文件所在的目录&#xff0c;使用javap -v -p 命令 查询运行中某个Java进程的Jvm参数 【案例】查询 MethodAreaDemo 这个类运行过程中&#xff0c;初始的元空间大小 MetaspaceSize jps 查询 Java 进程的进程ID ![在这里插入图片描述](https…

新零售行业如何做会员管理和会员营销

蚓链数字化营销系统全渠道会员管理解决方案&#xff0c;线上线下统一管理&#xff0c;打造私域流量&#xff0c;微信、门店会员全渠道管理&#xff0c;打通私域流量池&#xff0c;实现裂变营销&#xff1a; 开启新零售之路&#xff0c;必然要摒弃原有的管理模式&#xff0c;大…