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

(四)Mysql 数据库备份恢复全攻略

一、数据库备份

  1. 数据库备份目的和数据库故障类型

    • 目的
      • 当发生故障时,将损失降到最低。
      • 保证能够快速从备份数据中恢复,确保数据稳定运行。
    • 故障类型
      • 程序错误:Mysql 服务器端程序故障无法使用。
      • 人为误操作:权限过大误删除数据。
      • 运算错误:数据增删改查询 sql 语句错误。
      • 磁盘故障:磁盘物理损坏存储数据无法读取。
      • 不可抗力自然灾害:地震、海啸、山洪、台风、火灾等。
  2. 物理逻辑角度备份

    • 物理备份
      • 冷备份:停止数据库服务,对数据存储位置进行备份,如/usr/local/mysql/data/
      • 热备份:两地三中心数据备份,包括主从复制、主主复制、MHA、MGR 等方式。
      • 温和备份:禁止写入数据允许读取,对数据库进行备份,最大限度保证数据的完整性。
    • 数据库备份策略
      • 完整备份:第一次使用备份时间长、速度慢、占用空间大。
      • 差异备份:在做完整备份后,对产生的数据使用差异备份,速度快、占用空间小。
    • 增量备份:针对数据库日志文件进行备份。
  3. 备份常见的方式

    • 冷备份:可以使用tarcp等命令。
    • 专用工具:MysqldumpMysqlhotcopy等。
    • 第三方工具:PXBXtrabackupinnobackupexxbstream等。
    • 二进制日志:方便将数据恢复到指定的日志或者指定时间范围内。

二、Mysql 数据库备份恢复

  1. Mysql 数据库冷备份

    • 停止数据库服务,使用命令[root@centos01 ~]# systemctl stop mysqld
    • 备份数据,使用命令[root@centos01 ~]# tar zcf /opt/2024_09_12_mysql_data.tar.gz /usr/local/mysql/data
    • 模拟误删除数据,使用命令[root@centos01 ~]# rm -rf /usr/local/mysql/data/*
    • 解压恢复数据,使用命令[root@centos01 ~]# tar zxf /opt/2024_09_12_mysql_data.tar.gz -C /opt/
    • 恢复数据,使用命令[root@centos01 ~]# cp -r /opt/usr/local/mysql/data/* /usr/local/mysql/data/将备份的数据恢复到 Mysql 数据根目录,然后使用[root@centos01 ~]# ls /usr/local/mysql/data/查看数据目录,最后使用[root@centos01 ~]# chown -R mysql:mysql /usr/local/mysql/data/修改数据所有者。
    • 启动服务,使用命令[root@centos01 ~]# systemctl start mysql
    • 查询恢复数据,使用命令[root@centos01 ~]# mysql -uroot -ppwd@123 -e 'select * from hb3066.student;';
  2. mysqldump 备份

    • mysqldump选项:
      • --databases:备份数据库。
      • --all-database:备份所有数据库。
    • 备份指定的 hb3066 数据库的 student 表,使用命令[root@centos01 ~]# mysqldump -uroot -ppwd@123 hb3066 student >./student.sql,然后使用[root@centos01 ~]# less./student.sql查看备份文件。
    • 将 student 表恢复到 benet 数据库中,使用命令[root@centos01 ~]# mysql -uroot -ppwd@123 -e 'create database benet;';创建数据库 benet,使用[root@centos01 ~]# mysql -uroot -ppwd@123 -e 'show databases;';查看创建的 benet 数据库,然后使用[root@centos01 ~]# mysql -uroot -ppwd@123 benet <./student.sql恢复数据到 benet 数据库,最后使用[root@centos01 ~]# mysql -uroot -ppwd@123 -e 'select * from benet.student;';查询恢复到 benet 数据库的 student 表。
    • 对数据库进行备份和恢复,使用命令[root@centos01 ~]# mysqldump -uroot -ppwd@123 --databases benet >./benet.sql备份 benet 数据库,使用[root@centos01 ~]# mysql -uroot -ppwd@123 -e 'drop database benet;';模拟删除 benet 数据库,使用[root@centos01 ~]# mysql -uroot -ppwd@123 -e 'show databases;';确认删除 benet 数据库,最后使用[root@centos01 ~]# mysql -uroot -ppwd@123 <./benet.sql恢复误删除的数据库 benet,并使用[root@centos01 ~]# mysql -uroot -ppwd@123 -e 'select * from benet.student;';查询 benet 数据库的 student 表。
    • 备份所有数据库,使用命令[root@centos01 ~]# mysqldump -uroot -ppwd@123 --all-databases >./all_database.sql,然后使用[root@centos01 ~]# mysql -uroot -ppwd@123 -e 'drop database benet;';模拟删除 benet 数据库,使用[root@centos01 ~]# mysql -uroot -ppwd@123 -e 'show databases;';确认删除,最后使用[root@centos01 ~]# mysql -uroot -ppwd@123 <./all_database.sql恢复数据库。
  3. 增量备份恢复作用和特点

    • 作用:对 Mysql 的数据库日志进行备份,发生误操作时通过日志实现数据恢复。
    • 特点:灵活性强,恢复简单方便。
    • 配置注意事项开启二进制日志:使用命令[root@centos01 ~]# vim /etc/my.cnf,在文件中添加[mysqld]log-bin=mysql-bin设置二进制日志文件名字。
    • 阅读二进制日志,使用命令[root@centos01 ~]# mysqlbinlog /usr/local/mysql/data/mysql-bin.000004
    • 切割日志生成新的二进制日志,使用命令[root@centos01 ~]# mysqladmin -uroot -ppwd@123 flush-logs
    • 插入最新数据,使用命令[root@centos01 ~]# mysql -uroot -ppwd@123进入 Mysql 命令行,然后使用mysql> insert into benet.student values ('张三','男',16,'333333333333333333');mysql> insert into benet.student values ('张四','男',16,'335555533333333333');mysql> insert into benet.student values ('张五','男',19,'335999999333355555');插入数据。
    • 备份二进制日志,使用命令[root@centos01 ~]# cp /usr/local/mysql/data/mysql-bin.000005./
  4. 增量恢二进制日志恢复

    • 模拟删除数据,使用命令[root@centos01 ~]# mysql -uroot -ppwd@123 benet <./student.sql
    • 根据二进制日志文件恢复数据,使用命令[root@centos01 ~]# mysqlbinlog --no-defaults./mysql-bin.000005 | mysql -uroot -ppwd@123
  5. 增量二进制日志基于位置恢复数据

    • 位置选项
      • --stop-position:结束位置往前恢复。
      • --start-position:从前往后恢复。
    • 模拟删除数据,使用命令[root@centos01 ~]# mysql -uroot -ppwd@123 benet <./student.sql
    • 模拟从前往后恢复数据,使用命令[root@centos01 ~]# mysqlbinlog./mysql-bin.000005 | more读取二进制日志,然后使用[root@centos01 ~]# mysqlbinlog --start-position 4./mysql-bin.000005 | mysql -uroot -ppwd@123从前往后恢复。
    • 模拟从后往前恢复数据,再次模拟删除数据后,使用命令[root@centos01 ~]# mysqlbinlog --stop-position 620./mysql-bin.000005 | mysql -uroot -ppwd@123
  6. 增量二进制日志基于时间恢复数据

    • 时间选项
      • --start-datetime:起始时间往后恢复。
      • --stop-datetime:结束时间往前恢复。
    • 起始时间往后恢复数据,模拟删除数据后,使用命令[root@centos01 ~]# mysqlbinlog --start-datetime='2024-09-12 19:22:01'./mysql-bin.000005 | mysql -uroot -ppwd@123
    • 结束时间往前恢复数据,模拟删除数据后,使用命令[root@centos01 ~]# mysqlbinlog --stop-datetime='2024-09-12 19:29:07'./mysql-bin.000005 | mysql -uroot -ppwd@123

通过以上各种备份恢复方式,我们可以在不同的情况下有效地保护和恢复 Mysql 数据库中的数据,确保数据的安全性和可用性。

相关文章:

(四)Mysql 数据库备份恢复全攻略

一、数据库备份 数据库备份目的和数据库故障类型 目的&#xff1a; 当发生故障时&#xff0c;将损失降到最低。保证能够快速从备份数据中恢复&#xff0c;确保数据稳定运行。故障类型&#xff1a; 程序错误&#xff1a;Mysql 服务器端程序故障无法使用。人为误操作&#xff1a;…...

在MySQL 8.0中,如何更好地管理索引以节省空间和提高查询效率?

1. 索引选择与设计 选择合适的列&#xff1a;确保索引覆盖的列是经常用于查询条件、排序或连接操作的列。避免冗余索引&#xff1a;检查并移除重复或不必要的索引。例如&#xff0c;如果已经有一个 INDEX(a, b)&#xff0c;那么单独的 INDEX(a) 可能是多余的。使用复合索引&am…...

图形化编程(013)——“面向鼠标指针”积木块

知识回顾 1、舞台和坐标的知识 2、使用坐标控制角色移动 一句俗语&#xff1a;大鱼吃小鱼&#xff0c;小鱼吃虾米&#xff0c;感觉挺有意思的。 这句话说明了自然界中的生存法则&#xff0c;本次分享我与大家共同做一个大鱼吃小鱼的作品。 案例解说&#xff1a; 点击绿旗…...

【Spring】Spring Boot项目创建和目录介绍

文章目录 1 Spring Boot 介绍2 Spring Boot 项目创建注意事项 3. 项目代码和目录介绍pom 文件父工程目录介绍 1 Spring Boot 介绍 Spring 让 Java 程序更加快速、简单和安全&#xff0c;Spring 对于速度、简单性和生产力的关注使其成为世界上最流行的 Java 框架 Spring 官方提…...

第十二章 RabbitMQ之失败消息处理策略

目录 一、引言 二、RepublishMessageRecoverer 实现 2.1. 实现步骤 2.2. 实现代码 2.2.1. 异常交换机队列回收期配置类 2.2.2. 常规交换机队列配置类 2.2.3. 消费者代码 2.2.4. 消费者yml配置 2.2.5. 生产者代码 2.2.6. 生产者yml配置 2.2.7. 运行效果 一、引言 …...

23年408数据结构

第一题&#xff1a; 解析&#xff1a; 第一点&#xff0c;我们要知道顺序存储的特点&#xff1a;优点就是随用随取&#xff0c;就是你想要查询第几个元素可以直接查询出来&#xff0c;时间复杂度就是O(1)&#xff0c;缺点就是不适合删除和插入&#xff0c;因为每次删除和插入一…...

vue3ElementPlu表格合并多行

// 单元格合并逻辑 const objectSpanMethod ({ row, rowIndex, columnIndex }) > { const previousMachineModelUniqueId rowIndex > 0 ? tableData.value[rowIndex - 1].machineModel : null; const currentMachineModelUniqueId row.machineModel; // 合并“机型”…...

MySQL数据库 - 索引(上)

目录 1 简介 1.1 索引是什么 1.2 为什么要使用索引 2 索引应该选择哪种数据结构 2.1 HASH 2.2 二叉搜索树 2.3 N叉树&#xff08;B树&#xff09; 2.4 B树 3 MySQL的页 3.1 为什么要使用页 3.2 页文件头和页文件尾 3.3 页主体 3.4 页目录 4 B树在MySQL索引中的应…...

redis与springBoot整合

前提 要实现,使用Redis存储登录状态 需要一个完整的前端后端的项目 前端项目搭建 解压脚手架 安装依赖 配置请求代理 选做: 禁用EsLint语法检查 Vue Admin Template关闭eslint校验&#xff0c;lintOnSave&#xff1a;false设置无效解决办法_lintonsave: false-CSDN博客 …...

YoloV9改进策略:BackBone改进|CAFormer在YoloV9中的创新应用,显著提升目标检测性能

摘要 在目标检测领域,模型性能的提升一直是研究者和开发者们关注的重点。近期,我们尝试将CAFormer模块引入YoloV9模型中,以替换其原有的主干网络,这一创新性的改进带来了显著的性能提升。 CAFormer,作为MetaFormer框架下的一个变体,结合了深度可分离卷积和普通自注意力…...

消防应急物资仓库管理系统

集驰电子消防装备仓库管理系统(DW-S302系统)是一套成熟系统&#xff0c;依托3D技术、大数据、RFID技术、数据库技术、对装备器材进行统一管理&#xff0c;以RFID射频识别技术为核心&#xff0c;构建以物资综合管理为基础&#xff0c;智能分析定位为主要特色功能的装备器材库综合…...

【论文阅读】Semi-Supervised Few-shot Learning via Multi-Factor Clustering

通过多因素聚类的半监督小样本学习 引用&#xff1a;Ling J, Liao L, Yang M, et al. Semi-supervised few-shot learning via multi-factor clustering[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2022: 14564-14573. 论文地址…...

第十三章 RabbitMQ之消息幂等性

目录 一、引言 二、消息幂等解决方案 2.1. 方案一 2.2. 方案二 一、引言 幂等是一个数学概念&#xff0c;用函数表达式来描述是这样的&#xff1a;f(x) f(f(x)) 。在程序开发中&#xff0c;则是指同一个业务&#xff0c;执行一次或多次对业务状态的影响是一致的。有些业务…...

tpcms-master.zip

网盘&#xff1a;https://pan.notestore.cn/s.html?id34https://pan.notestore.cn/s.html?id34...

Spring国际化和Validation

SpringBoot国际化和Validation融合 场景 在应用交互时&#xff0c;可能需要根据客户端得语言来返回不同的语言数据。前端通过参数、请求头等往后端传入locale相关得参数&#xff0c;后端获取参数&#xff0c;根据不同得locale来获取不同得语言得文本信息返回给前端。 实现原…...

②EtherCAT转ModbusTCP, EtherCAT/Ethernet/IP/Profinet/ModbusTCP协议互转工业串口网关

EtherCAT/Ethernet/IP/Profinet/ModbusTCP协议互转工业串口网关https://item.taobao.com/item.htm?ftt&id822721028899 协议转换通信网关 EtherCAT 转 Modbus TCP (接上一章&#xff09; GW系列型号 配置说明 上载 网线连接电脑到模块上的 WEB 网页设置网口&#…...

【华为HCIP实战课程八】OSPF网络类型及报文类型详解,网络工程师

一、点到点网络类型 1、两台路由器 2、支持广播、组播 P2P(PPP、HDLC、帧中继子接口) 我们需要三个维度考虑 A、是否自动通过组播发现邻居 B、时间(Hello和Dead) C、DR和BDR----多点接入网络需要用到(广播和NBMA) 点到点是组播自动发现邻居,Hello 10S,Dead 40S…...

信息安全工程师(28)机房安全分析与防护

前言 机房安全分析与防护是一个复杂而细致的过程&#xff0c;涉及到物理安全、环境控制、电力供应、数据安全、设备管理、人员管理以及紧急预案等多个方面。 一、机房安全分析 1. 物理安全威胁 非法入侵&#xff1a;未经授权的人员可能通过门窗、通风口等进入机房&#xff0c;…...

大数据处理从零开始————9.MapReduce编程实践之信息过滤之学生成绩统计demo

1.项目目标 1.1 需求概述 现在我们要统计某学校学生的成绩信息&#xff0c;筛选出成绩在60分及以上的学生。 1.2 业务分析 如果我们想实现该需求&#xff0c;可以通过编写一个MapReduce程序&#xff0c;来处理包含学生信息的文本文件&#xff0c;每行包含【学生的姓名&#x…...

自动化测试 | 窗口截图

driver.get_screenshot_as_file 是 Selenium WebDriver 的一个方法&#xff0c;它允许你将当前浏览器窗口&#xff08;或标签页&#xff09;的截图保存为文件。这个方法对于自动化测试中的截图验证非常有用&#xff0c;因为它可以帮助你捕获测试执行过程中的页面状态。 以下是…...

避坑指南:ArcGIS提取的DEM高程点,为什么在Global Mapper里显示为平面?

跨平台高程数据互操作&#xff1a;解决ArcGIS与Global Mapper的字段兼容性问题 当你第一次将ArcGIS中精心提取的DEM高程点导入Global Mapper&#xff0c;期待看到起伏的地形时&#xff0c;却发现所有点都平铺在一个平面上——这种挫败感我深有体会。这不是软件故障&#xff0c;…...

死信队列与补偿作业

Skeyevss FAQ&#xff1a;死信队列与补偿作业 试用安装包下载 | SMS | 在线演示 项目地址&#xff1a;https://github.com/openskeye/go-vss 1. 什么是死信&#xff08;DLQ&#xff09; 消息在 最大重试次数 后仍失败&#xff0c;进入 死信队列 或 失败表&#xff0c;避免无…...

从STM32F103到GD32F303:如何用CubeMX和Keil5低成本‘平替’升级你的项目?

从STM32F103到GD32F303&#xff1a;低成本高性能迁移实战指南 在嵌入式开发领域&#xff0c;芯片选型往往需要在性能与成本之间寻找平衡点。对于已经熟悉STM32F103系列开发但面临成本压力或性能瓶颈的工程师来说&#xff0c;GD32F303系列提供了一个极具吸引力的替代方案。这款国…...

中兴B862AV3.2M盒子救砖记:免拆机、免ADB,一根双公头USB线搞定刷机

中兴B862AV3.2M盒子救砖实战&#xff1a;零门槛线刷方案详解 当你的中兴B862AV3.2M电视盒子突然黑屏、卡在开机LOGO或完全无法响应时&#xff0c;那种焦虑感与技术无助感往往让人手足无措。不同于常规的系统升级&#xff0c;设备"变砖"状态下的恢复操作需要更谨慎的步…...

FRED应用:背散射教程

这个教程描述一个有散射性质的简单plano-plano透镜&#xff0c;这样一条入射光就会散射回发射方向。教程首先&#xff0c;在FRED中创建一个新的系统&#xff0c;在树视图中的Geometry上右击&#xff0c;选择“Create New Lens…”并在出现的对话框上点OK按钮&#xff0c;在全局…...

AUTO TECH China 2026广州汽车零部件展:从整机集成迈向核心部件的产业跃升

AUTO TECH China 2026广州汽车零部件展&#xff1a;从整机集成迈向核心部件的产业跃升当新能源汽车渗透率突破50%大关、汽车产业正经历百年未有的结构性变革之际&#xff0c;整车的差异化竞争优势正悄然从系统集成向功能模块与核心单元下沉。从一体化压铸车身结构件、高精度齿轮…...

STM32F4/F7上跑AI手写识别:从CUBEMX配置到串口通信的完整避坑指南

STM32F4/F7实战AI手写识别&#xff1a;从模型部署到数据处理的工程化解决方案 在嵌入式设备上部署神经网络进行手写识别&#xff0c;正逐渐从实验室走向工业现场。STM32F4/F7系列凭借其平衡的性能与功耗&#xff0c;成为边缘AI应用的理想选择。本文将深入探讨从模型准备到实际部…...

从ColorDialog到FontDialog:手把手教你定制WinForm功能对话框,打造个性化桌面应用

从ColorDialog到FontDialog&#xff1a;WinForm功能对话框的深度定制与用户体验优化 在桌面应用开发中&#xff0c;对话框不仅是功能实现的工具&#xff0c;更是用户体验的重要组成部分。想象一下&#xff0c;当用户在使用你的文本编辑器时&#xff0c;能够像专业软件那样流畅地…...

【STM32入门教程】将`printf`重定向到USART串口(以USB转串口为例)

【STM32入门教程】将printf重定向到USART串口&#xff08;以USB转串口为例&#xff09; 在STM32开发中&#xff0c;printf是一个非常方便的调试工具。但默认情况下&#xff0c;printf会输出到标准输出设备&#xff08;如屏幕&#xff09;&#xff0c;而在嵌入式系统中&#xff…...

GX Works3实战:基于TCP+SLMP协议与三菱FX5U的工业互联配置详解

1. 从零开始搭建FX5U通信环境 第一次接触三菱FX5U系列PLC时&#xff0c;我被它小巧的机身和强大的性能惊艳到了。这款PLC虽然体积只有传统Q系列的一半大小&#xff0c;但处理能力却提升了两倍以上。不过在实际项目中&#xff0c;最让我头疼的就是通信配置问题——特别是从老项…...