MySQL数据库的备份

文章目录

  • MySQL数据库的备份
    • MySQL备份方法
    • 完全备份
      • 物理备份
        • 备份
      • 逻辑热备完全备份
      • 逻辑热备恢复
        • 恢复库
        • 恢复表
      • 增量备份
        • 备份
        • 增量备份恢复
          • 基于位置进行恢复
          • 基于时间

MySQL数据库的备份

MySQL备份方法

  1. 物理备份
    物理备份涉及直接复制MySQL的数据文件和日志文件。这种方法通常更快,但需要数据库服务器处于关闭状态或使用特殊的复制工具(如Percona XtraBackup)来进行热备份。物理备份适用于大型数据库,因为它可以快速恢复数据,但可能不适用于跨平台恢复。
  2. 逻辑备份
    逻辑备份是通过导出数据库的结构和数据来完成的,通常使用mysqldump工具。这种备份方法生成的是SQL语句,可以用于重建数据库。逻辑备份适用于小型数据库,恢复时需要执行SQL语句来重建数据,可能需要更长的时间。
    备份策略
  3. 完全备份
    完全备份是备份整个数据库,包括所有数据和结构。这是最基本的备份类型,但备份和恢复过程可能需要较长的时间。完全备份是差异备份和增量备份的基础。
  4. 差异备份
    差异备份只备份自上次完全备份以来发生变化的数据。这种备份方法比完全备份快,因为只备份了部分数据。恢复时,需要先恢复最近的一次完全备份,然后应用所有差异备份。
  5. 增量备份
    增量备份只备份自上次完全备份或增量备份以来发生变化的数据。这种方法备份和恢复速度最快,但恢复过程最为复杂,因为需要按顺序应用所有增量备份。

此文主要讲解逻辑备份

完全备份

物理备份

备份

1.关闭MySQL服务器

systemctl stop mysqld.service

2.将MySQL数据库目录下/data/文件夹打包备份至其他磁盘

cd /opt	
tar cvf mysql_all_bak.tar /usr/local/mysql/data

在这里插入图片描述

逻辑热备完全备份

1使用mysqldump命令进行备份

所有库备份

mysqldump -u "你的账户" -p"你的密码" --all-databases > "/备份路径/文件名"
mysqldump -uroot -p123123 --all-databases > /opt/mysql_all_bak.sql

部分库备份

mysqldump -uroot -p123123 --databases "库名1" "库名2" "库名3" ...... >"/备份路径/文件名"

部分表的备份

mysqldump -uroot -p123123 "库名" "表名" >"/备份路径/文件名"

备份所有的库
在这里插入图片描述
备份单独的表

mysqldump -uroot -p123123 glry cd > /opt/cd_bak.sql

在这里插入图片描述

逻辑热备恢复

恢复库

目前数据库表与库如下图所示

在这里插入图片描述
现在删除库glry

drop database glry;

在这里插入图片描述
恢复

mysql -uroot -p123123 </opt/mysql_all_bak.sql

在这里插入图片描述

恢复表

删除表cd

drop table glry.cd

在这里插入图片描述

mysql -uroot -p123123 "库名" < "/备份路径/文件名"
mysql -uroot -p123123 glry < /opt/cd__bak.sql

在这里插入图片描述
cd恢复了

增量备份

备份

首先开启mysql数据库的二进制日志
在mysql配置文件 my.cof里配置
在[mysqld]配置块下添加

log-bin=mysql-bin
binlog_format = MIXED
二进制日志(binlog)有3种不同的记录格式:STATEMENT(基于SQL语句)、ROW(基于行)、MIXED(混合模式),默认格式是STATEMENT

在这里插入图片描述
重启mysql服务
登录数据库,并创建库和表,然后刷新二进制日志文件

create database glcs;
use glcs;
create table 1d(id int,name char(5));
insert into 1d values(1,'tg1');
insert into 1d values(2,'tg2');
insert into 1d values(3,'tg3');
insert into 1d values(4,'tg4');
insert into 1d values(5,'tg5');
insert into 1d values(6,'tg6');
insert into 1d values(7,'tg7');
exit

刷新二进制日志

mysqladmin -uroot -p123123 flush-logs  

在这里插入图片描述

cd /usr/local/mysql/data/
cp -a  mysql-bin.000001  /opt/mysql-bin-$(date -d "-1 day" +%Y%m%d).sql
cd /opt
ls

在这里插入图片描述

增量备份恢复
基于位置进行恢复

首先查看二进制日志

mysqlbinlog --no-defaults --base64-output=decode-rows -v /opt/mysql-bin-20240324.sql

在这里插入图片描述

删除glcs数据库模拟数据丢失
在这里插入图片描述
恢复到创建glcs表但没有创建cd表时
查看二进制日志 可以看到创建glcs的位置在at219至at313
在这里插入图片描述

mysqlbinlog --no-defaults --stop-position= /opt/mysql-bin-20240324.sql|mysql -uroot -p123123

在这里插入图片描述
目的达成

基于时间

在这里插入图片描述
为了恢复到tg4
查看二进制日志
起始时间 240325 17:14:03
创建完tg4是在240325 17:16:34
在这里插入图片描述

mysqlbinlog --no-defaults --start-datetime="2024-03-25 17:14:03" --stop-datetime="2024-03-25 17:16:34" /opt/mysql-bin-20240324.sql | mysql -uroot -p123123

在这里插入图片描述
恢复成功

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

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

相关文章

Javascript中的严格模式 “use strict“

一、为什么使用严格模式&#xff1f; 在普通的 JavaScript 中&#xff0c;写错变量名会创建新的全局变量&#xff0c; 在严格模式中&#xff0c;写错变量名会抛出错误来提醒开发者 二、声明严格模式 通过在脚本或函数的开头添加 “use strict”; 来声明严格模式。"use …

FANUC机器人某个轴编码器损坏时进行单轴零点标定的具体方法

FANUC机器人某个轴编码器损坏时进行单轴零点标定的具体方法 前提: FANUC机器人编码器或其线路有损坏,一般先将机器人移动至零点位置,编码器相关部件更换完毕后,直接进行零点标定即可。但是对于突发的状况,这种方法显然是不行的,比如在生产过程中突然发生碰撞导致编码器相…

暴雨讲堂:AI时代第五代英特尔CPU能做什么?

如果把科技圈比作娱乐圈&#xff0c;那么这两年的顶流一定是AI。2023年&#xff0c;世人见证了ChatGPT在全球范围内的大火&#xff0c;以生成式AI为代表的新一轮人工智能应用问世&#xff0c;改变了人工智能&#xff08;AI&#xff09;技术与应用的发展轨迹&#xff0c;并开始在…

Rancher(v2.6.3)——Rancher部署Nacos(单机版)

Rancher部署Nacos详细说明文档&#xff1a;https://gitee.com/WilliamWangmy/snail-knowledge/blob/master/Rancher/Rancher%E4%BD%BF%E7%94%A8%E6%96%87%E6%A1%A3.md#5rancher%E9%83%A8%E7%BD%B2nacos ps&#xff1a;如果觉得作者写的还行&#xff0c;能够满足您的需求&#x…

Android AIDL编译 程序包 .aidl 不存在

错误: 程序包 aidl 不存在 本文仅针对 AGP 8.0 android gradle plugin 以上 buildFeatures {aidl true } 在模块gradle android { }中增加. 详见: https://developer.android.com/build/releases/past-releases/agp-8-0-0-release-notes?hlzh-cn#default-changes

什么是进程

目录 一. 进程的概念二. 进程的组成三. 进程的特征四. 进程的状态与转换4.1 进程的状态4.2 进程状态的转换4.3 进程的组织方式 五. 进程控制5.1 进程控制5.2 进程创建 六. 进程之间的通信6.1 共享存储6.2 消息传递 \quad 一. 进程的概念 \quad 思考:操作系统是这些进程的管理者…

面试算法-110-课程表

题目 你这个学期必须选修 numCourses 门课程&#xff0c;记为 0 到 numCourses - 1 。 在选修某些课程之前需要一些先修课程。 先修课程按数组 prerequisites 给出&#xff0c;其中 prerequisites[i] [ai, bi] &#xff0c;表示如果要学习课程 ai 则 必须 先学习课程 bi 。 …

【分布式websocket】表情怎么做?自制表情包和Unicode表情符号区别?表情编解码?【20期】

前言 表情包是聊天系统中一个比较常见的功能。常见的表情表分为两种是类型。 一种是Unicode表情&#xff0c;另外一种是图片表情。我们这篇文章两种都会涉及。 图片类表情包会涉及到编解码。不会将发送消息的图片的url地址也一并存入数据库中。 文章将会从表情分类。表情编解码…

添加网址到主页

基于localStorage的网址收藏夹-CSDN博客 为了通过安卓菜单添加网址到主页中&#xff0c;调试了几个小时&#xff0c;主要踩了几个坑。 1.localStorage 通过域名隔离&#xff0c;需要加载主页才能读写。 2.WebView 可以不显示&#xff0c;但是 JS 代码要放在 window.onload 中…

oracle19c单机版补丁19.3.0.0升级到19.22.0.0

oracle19c单机版补丁升级到19.22.0.0 一、获取补丁包 查看之前的版本 column product format A30 column version format A15 column version_full format A20 column status format A15 select * from product_component_version;二、备份opatch和数据库文件 su - oracle …

封装-练习

T2、以面向对象的思想&#xff0c;编写自定义类描述IT从业者。设定属性包括&#xff1a;姓名&#xff0c;年龄&#xff0c;技术方向&#xff0c;工作年限&#xff1b;方法包括&#xff1a;工作。 要求&#xff1a; 设置属性的私有访问权限&#xff0c;通过公有的get,set方法实现…

AD域的使用

一&#xff0c;部署共享网络驱动器 1/根目录下创建共享资料库-共享 2/用户-首选项-windows设置-网络驱动器-新建-映射驱动器 3/创建-共享路径-驱动器号(可固定/可随机) 4/更新策略:gpupdate /force 5/客户端查看 首先我们打开服务器此电脑 建立一个文件夹 右击文件夹点击属…

node整理学习(二)

模块化的概念 一、什么是模块化 模块化是指解决一个复杂问题时&#xff0c;自顶向下逐层把系统划分成若干模块的过程&#xff0c;模块是可组合、分解和更换的单元 二、模块化的好处 1、提高了代码的复用性 2、提高了代码的可维护性 3、可以实现按需加载 三、模块化规范 …

Avalonia(11.0.2)+.NET6 打包设置发布包的版本号

Avalonia11.0.2+.NET6 打包设置发布包的版本号 系统版本如何打包设置打包的版本号本文是对上一篇打包文章的补充,后台好多人私信我说打包的版本号如何设置,今天出个补充说明 Avalonia(11.0.2)+.NET6 打包运行到银河麒麟V10桌面系统 系统版本 如何打包 Avalonia(11.0.2)+.NET…

MVC与MVVM:两种前端架构模式对比

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

pytest教程-19-pytest.ini配置文件

领取资料&#xff0c;咨询答疑&#xff0c;请➕wei: June__Go 上一小节我们学习了pytest内置fixture的使用方法&#xff0c;本小节我们讲解一下pytest.ini文件的配置方法。 pytest配置文件可以改变pytest的运行方式&#xff0c;它是一个固定的文件pytest.ini文件&#xff0c…

OpenGL学习笔记【4】——创建窗口,给窗口添加渲染颜色

一、前三章节的前情回顾 章节一&#xff1a;上下文(Context) OpenGL学习笔记【1】——简介-CSDN博客 章节一讲述了OpenGL在渲染的时候需要一个Context来记录了OpenGL渲染需要的所有信息和状态&#xff0c;可以把上下文理解成一个大的结构体&#xff0c;它里面记录了当前绘制使…

C#.NET 与 Python 交互

若你要用.NET和Python交互&#xff0c;那么你可以使用两种技术&#xff1a;IronPython 和 Python.NET 。 但两者的基础实现和目标场景都不同&#xff0c;因此如何使用它们也有所不同。 IrconPython简称 IPy , Python.NET 也叫 pythonnet 或 Python for .NET &#xff0c;下面分…

基于Java校园跑腿管理系统设计与实现(源码+部署文档)

博主介绍&#xff1a; ✌至今服务客户已经1000、专注于Java技术领域、项目定制、技术答疑、开发工具、毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精彩专栏 推荐订阅 &#x1f447;&#x1f3fb; 不然下次找不到 Java项目精品实…

《SQL必知必会第五版》第十五章(插入数据)挑战题

1. 使用 INSERT 和指定的列&#xff0c;将你自己添加到 Customers 表中。明确列出要添加哪几列&#xff0c;且仅需列出你需要的列。 INSERT INTO Customers(cust_id,cust_name,cust_address,cust_city,cust_state,cust_zip,cust_country,cust_contact,cust_email) VALUES(…