当前位置: 首页 > news >正文

MySQL基础(四)数据库备份

目录

前言

一、概述

1.数据备份的重要性

2.造成数据丢失的原因

二、备份类型

(一)、物理与逻辑角度

1.物理备份

2.逻辑备份

(二)、数据库备份策略角度

1.完整备份

2.增量备份

三、常见的备份方法

四、备份(重点)

(一)、完整备份

1.打包数据库文件备份

2.备份工具备份

(二)、增量备份

1.特点

2.二进制日志

3.增量恢复

总结



前言

在一些对数据可靠性要求很高的行业,若发生意外停机或数据丢失,其损失是十分惨重的。由此可见对重要的文件内容进行备份就显得尤为重要。

一、概述

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

1.数据备份的重要性

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

2.造成数据丢失的原因

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

二、备份类型

(一)、物理与逻辑角度

1.物理备份

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


冷备份
    是在关闭数据库的时候进行的


热备份
    数据库处于运行状态,这种备份方法依赖于数据库的日志文件

2.逻辑备份

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

(二)、数据库备份策略角度

1.完整备份

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

2.增量备份

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

三、常见的备份方法

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


使用专用备份工具
    mysqldump
    mysqlhotcopy


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


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


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

四、备份(重点)

(一)、完整备份

1.打包数据库文件备份

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

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

 

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

 

2.备份工具备份

备份
    工具
        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[密码] 库名 < 表备份脚本的路径

以单个数据库备份还原为例

-p后加密码会显示 [Warning] ,但不影响操作

或者在mysql里有source命令

以表的结构备份还原为例 

 

(二)、增量备份

使用完全备份时,备份与恢复的时间过长
增量备份就是备份自上一次备份之后增加的或改变的文件内容

1.特点


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

2.二进制日志

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

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

流程

vim /etc/my.cnf(rpm安装)插入

server-id=1

log-bin=musql-bin

systemctl restart mysqld

mysql -uroot -p123456

use class

select *from yi;

 insert into yi values(3,'sun',24),(4,'qin',24);

mysqladmin -uroot -p123456 flush-logs

mysqlbinlog  -v   /var/lib/mysql/mysql-bin.000001

 ls /var/lib/mysql

insert into yi values(5,'zhao',25),(6,'qian',25);

mysqladmin -uroot -p123456 flush-logs

mysqlbinlog  -v   /var/lib/mysql/mysql-bin.000002

 ls  /var/lib/mysql

  

delete from yi where id=1; 

mysqladmin -uroot -p123456 flush-logs

mysqlbinlog  -v   /var/lib/mysql/mysql-bin.000003

3.增量恢复

应用场景
    人为的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基础(四)数据库备份

目录 前言 一、概述 1.数据备份的重要性 2.造成数据丢失的原因 二、备份类型 &#xff08;一&#xff09;、物理与逻辑角度 1.物理备份 2.逻辑备份 &#xff08;二&#xff09;、数据库备份策略角度 1.完整备份 2.增量备份 三、常见的备份方法 四、备份&#xff08…...

子类化QThread来实现多线程,moveToThread函数的作用

子类化QThread来实现多线程&#xff0c; QThread只有run函数是在新线程里的&#xff0c;其他所有函数都在QThread生成的线程里。正确启动线程的方法是调用QThread::start()来启动。 一、步骤 子类化 QThread&#xff1b;重写run&#xff0c;将耗时的事件放到此函数执行&#…...

经典面试题(力扣,接雨水)

接雨水 方法一思路测试代码复杂度测试结果 方法二思路测试代码复杂度测试结果 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 示例1&#xff1a; 输入&#xff1a;height [0,1,0,2,1,0,1,3,2,1,2,1]…...

2023年深圳杯数学建模C题无人机协同避障航迹规划

2023年深圳杯数学建模 C题 无人机协同避障航迹规划 原题再现&#xff1a; 平面上A、B两个无人机站分别位于半径为500 m的障碍圆两边直径的延长线上&#xff0c;A站距离圆心1 km&#xff0c;B站距离圆心3.5 km。两架无人机分别从A、B两站同时出发&#xff0c;以恒定速率10 m/s…...

PostgreSQL--实现数据库备份恢复详细教学

前言 这是我在这个网站整理的笔记&#xff0c;关注我&#xff0c;接下来还会持续更新。 作者&#xff1a;RodmaChen PostgreSQL--实现数据库备份恢复详细教学 一. 数据库备份二. 数据库恢复三. 存留问题 数据库备份恢复功能是每个产品所需的&#xff0c;以下是简单的脚本案例&a…...

JDK工具之jstack说明

JDK工具之jstack说明 前言什么是jstack&#xff1f;如何使用jstack&#xff1f;获取Java进程的PID分析jstack输出 常用的jstack命令选项jstack的应用场景结论 前言 作为Java开发人员&#xff0c;在开发和维护复杂的Java应用程序时&#xff0c;我们经常会遇到各种各样的问题&am…...

34 | 牛顿迭代法

文章目录 牛顿迭代法一、原理二、Python实现三、练习题四、总结牛顿迭代法 一、原理 牛顿迭代法(Newton’s Method)是一种用于寻找方程的实根的数值方法。其基本思想是通过一系列逼近来求解方程的根。对于方程 f ( x ) = 0 f(x) = 0 f(x...

ChatGPT如何帮助学生学习

​ 一些教育工作者担心学生可能使用ChatGPT作弊。因为这个AI工具能写报告和计算机代码&#xff0c;画出复杂图表……甚至已经有许多学校把ChatGPT屏蔽。 研究发现&#xff0c;学生作弊的主要原因是想考得好。是否作弊与作业和考试的打分方式有关&#xff0c;所以这与技术的便…...

easyexcel导出excel-50行代码搞定大量数据导出

文章目录 一、写在前面二、使用步骤定义导出的数据实体导出 一、写在前面 场景&#xff1a; 当数据量导出过大时如果一次从数据库取出所有数据会导致内存飙升导致系统奔溃&#xff0c;所以我们采取循环读取和循环写入。 准备: mave导入&#xff1a;easyexcel:3.0.5 二、使用…...

OpenAI宣布安卓版ChatGPT正式上线;一站式 LLM底层技术原理入门指南

&#x1f989; AI新闻 &#x1f680; OpenAI宣布安卓版ChatGPT正式上线 摘要&#xff1a;OpenAI今日宣布&#xff0c;安卓版ChatGPT已正式上线&#xff0c;目前美国、印度、孟加拉国和巴西四国的安卓用户已可在谷歌Play商店下载&#xff0c;并计划在下周拓展到更多地区。Chat…...

Rust vs Go:常用语法对比(二)

21. Swap values 交换变量a和b的值 a, b b, a package mainimport "fmt"func main() { a : 3 b : 10 a, b b, a fmt.Println(a) fmt.Println(b)} 103 fn main() { let a 3; let b 10; let (a, b) (b, a); println!("a: {a}, b: {b}", aa,…...

对于Vue3的一些思考

看完 Vue Hooks: 让Vue开发更简单与高效 - 掘金 一些小心得 vue3&#xff1a; 组合式API&#xff08;是利用架构&#xff0c;强制达到拆分目的&#xff09; 达到解耦的目的。对于vue3来说 每个模块的每个逻辑都是 一个一个独立的方法。通过 方法方法整体业务 代码风格&#…...

Bean的生命周期 - spring

前言 本篇介绍了Bean的生命周期&#xff0c;认识PostConstruct注释&#xff0c;PreDestroy注释&#xff0c;如有错误&#xff0c;请在评论区指正&#xff0c;让我们一起交流&#xff0c;共同进步&#xff01; 文章目录 前言1. spring生命周期2. Bean的生命周期3. 为什么先设置…...

入门Linux基本指令(2)

这篇文章主要提供一些对文件操作的Linux基本指令&#xff0c;希望对大家有所帮助&#xff0c;三连支持&#xff01; 目录 cp指令(复制) mv指令(剪切) nano指令 cat指令(打印文件内容) > 输出重定向 >> 追加重定向 < 输入重定向 more指令 less指令(推荐) …...

【C++】【自用】选择题 刷题总结

文章目录 【类和对象】1. 构造、拷贝构造的调用2. 静态成员变量3. 初始化列表4. 成员函数&#xff1a;运算符重载5. 友元函数、友元类55. 特殊类设计 【细节题】1. 构造 析构 new \ deletet、new[] \ delete[] 【类和对象】 1. 构造、拷贝构造的调用 #include using namespace…...

SkyWalking链路追踪-Collector(收集器)

Collector&#xff08;收集器&#xff09; SkyWalking的Collector&#xff08;收集器&#xff09;是SkyWalking链路追踪的核心组件之一。它负责接收来自各个Agent的追踪数据&#xff0c;并将其存储到数据存储器&#xff08;如数据库&#xff09;中。具体来说&#xff0c;Colle…...

typescript自动编译文件实时更新

npm install -g typescripttsc --init 生成tsconfig.json配置文件 tsc -w 在监听模式下运行&#xff0c;当文件发生改变的时候自动编译...

qt6.5 download for kali/ubuntu ,windows (以及配置选项选择)

download and sign in qt官网 sign in onlion Install 1 2 3 4 5...

【JS 原型链】

JavaScript 原型链是一个重要的概念&#xff0c;它是 JavaScript 语言实现面向对象编程的核心。在 JavaScript 中&#xff0c;每个对象都有一个与之关联的原型&#xff0c;并且该对象继承了原型中的属性和方法。这些原型组成了一个原型链&#xff0c;可以通过该链追溯到顶层的 …...

harmonyOS 开发之UI开发(ArkTS声明式开发范式)概述

UI开发&#xff08;ArkTS声明式开发范式&#xff09;概述 基于ArkTS的声明式开发范式的方舟开发框架是一套开发极简、高性能、支持跨设备的UI开发框架&#xff0c;提供了构建OpenHarmony应用UI所必需的能力&#xff0c;主要包括&#xff1a; ArkTS ArkTS是UI开发语言&#xff…...

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表&#xff1f;1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

centos 7 部署awstats 网站访问检测

一、基础环境准备&#xff08;两种安装方式都要做&#xff09; bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats&#xff0…...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指&#xff1a;像函数调用/返回一样轻量地完成任务切换。 举例说明&#xff1a; 当你在程序中写一个函数调用&#xff1a; funcA() 然后 funcA 执行完后返回&…...

ESP32读取DHT11温湿度数据

芯片&#xff1a;ESP32 环境&#xff1a;Arduino 一、安装DHT11传感器库 红框的库&#xff0c;别安装错了 二、代码 注意&#xff0c;DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

【机器视觉】单目测距——运动结构恢复

ps&#xff1a;图是随便找的&#xff0c;为了凑个封面 前言 在前面对光流法进行进一步改进&#xff0c;希望将2D光流推广至3D场景流时&#xff0c;发现2D转3D过程中存在尺度歧义问题&#xff0c;需要补全摄像头拍摄图像中缺失的深度信息&#xff0c;否则解空间不收敛&#xf…...

ffmpeg(四):滤镜命令

FFmpeg 的滤镜命令是用于音视频处理中的强大工具&#xff0c;可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下&#xff1a; ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜&#xff1a; ffmpeg…...

Ascend NPU上适配Step-Audio模型

1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统&#xff0c;支持多语言对话&#xff08;如 中文&#xff0c;英文&#xff0c;日语&#xff09;&#xff0c;语音情感&#xff08;如 开心&#xff0c;悲伤&#xff09;&#x…...

均衡后的SNRSINR

本文主要摘自参考文献中的前两篇&#xff0c;相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程&#xff0c;其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt​ 根发送天线&#xff0c; n r n_r nr​ 根接收天线的 MIMO 系…...

2023赣州旅游投资集团

单选题 1.“不登高山&#xff0c;不知天之高也&#xff1b;不临深溪&#xff0c;不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...