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

Mysql数据备份 — mysqldump

一 备份类型

- 逻辑备份(mysqldump)
    - 优点:
        - 恢复简单,可以使用管道将他们输入到mysql。
        - 与存储引擎无关,因为是从MySQL服务器中提取数据而生成的,所以消除了底层数据存储的不同。
        - 有助于避免数据损坏。若磁盘驱动器有故障而要复制原始文件时,此时将得到一个损坏的备份。
    - 缺点:
        - 必须有数据库服务器完成逻辑工作,需要更多地cpu周期。
        - 逻辑备份还原速度慢:需要MySQL加载和解释语句、转化存储格式、重建引擎。
- 物理备份(xtrabackup):
    - 优点:
        - 基于文件的物理备份。
        - 容易跨平台、跨操作系统和MySQL版本。
        - 恢复起来会更快(不需要执行任何的mysql语句,不需要构建索引,innoDB表无需完全缓存到内存)。
    - 缺点:
        - 文件大。
        - 不总是可以跨平台、操作系统和MySQL版本。
- 其他备份方法:
    - cp:直接复制数据库文件,备份速度快,恢复速度快,但功能较弱,适用于少量数据备份。
    - lvm2快照:基于文件系统管理工具进行备份,备份速度快,恢复速度快,支持几乎热备,适用于中小型数据量的备份。
每种备份方法都有其适用的场景,选择哪种备份方法取决于你的具体需求和环境。

二   逻辑备份 - mysqldump

mysqldump命令及其参数:
- 基本语法:mysqldump -u username -p dbname table1 table2 … > BackupName.sql
    - username:MySQL用户名
    - dbname:数据库名称
    - table1、table2:表名称,如果没有这些参数,将备份整个数据库
    - BackupName.sql:备份文件的名称,文件名前面可以加上一个绝对路径

- 恢复数据:mysql -u username -p dbname < /path/to/backup.sql
    - username:MySQL用户名
    - dbname:数据库名称
    - /path/to/backup.sql:备份文件的路径

2.1 插入数据

-- 创建数据库
CREATE DATABASE db_default;-- 使用数据库
USE db_default;-- 创建表
CREATE TABLE db_one (姓名 VARCHAR(255),地址 VARCHAR(255)
);-- 插入数据
INSERT INTO db_one (姓名, 地址) VALUES ('小明', '美国'), ('小美', '中国');

2.2 备份数据表 

 mysqldump -u root -p db_default db_one > /tmp/db_one_backup.sql

2.3 表级别恢复 

mysql -u root -p db_default < /tmp/db_one_backup.sql

或则 进入数据库

use  db_default;
source /tmp/db_one_backup.sql;

2.4 库级别备份和还原

mysqldump -u root  --databases db_default > /tmp/db_one_backup.sql -p

MariaDB [db_default]> DROP DATABASE db_default;
Query OK, 1 row affected (0.00 sec)

mysql < ./db_one_backup.sql  -p
##在shell 还原 数据库

 MariaDB [(none)]> select * from db_default.db_one  
    -> ;
+--------+--------+
| 姓名   | 地址   |
+--------+--------+
| 小明   | 美国   |
| 小美   | 中国   |

2.5 全库备份

在MySQL中,如果想使用mysqldump使用全库级别备份,必须开启二进制日志!

常用选项:

  1. -h, --host=主机: 指定连接到的MySQL服务器的主机名。

  2. --databases 数据库1 [数据库2 ...]: 指定要备份的一个或多个数据库。

  3. --all-databases: 备份MySQL服务器中的所有数据库。

  4. --single-transaction: 在事务处理中运行mysqldump,以确保备份的数据是一致的。

  5. --lock-tables, -l: 在备份每个表之前对其进行锁定。在大型数据库上可能导致服务中断,推荐使用--single-transaction

  6. --result-file=文件路径: 将输出重定向到指定的文件,而不是默认输出到标准输出。

高级用法:

  1. --ignore-table=数据库.表: 指定要忽略备份的表,可以指定特定数据库中的特定表。

  2. --skip-lock-tables: 不对所有表进行锁定,即不使用--lock-tables选项。

  3. --compress: 在传输数据时使用压缩。

  4. --routines: 一起备份存储过程和函数。

  5. --triggers: 一起备份触发器。

  6. --events: 一起备份事件。

  7. --add-drop-database: 在每个数据库创建语句之前添加DROP DATABASE IF EXISTS语句。

  8. --add-drop-table: 在每个表创建语句之前添加DROP TABLE IF EXISTS语句。

mysqldump -u 用户名 -p 密码 --all-databases > /路径/到/备份文件.sql

2.6 总结  

1. mysqldump工具备份的是sql语句,备份不需要暂停服务

2. 使用备份文件恢复时需要保持数据库处于运行状态

3. 只能实现,全库,指定库,表级别的某时刻的备份,本身不能增量备份

4. 适合中小数据库

三  mysqldump + binlog 实现增量备份

 mysqldump -u root -p --databases db_default --flush-logs --master-data > /tmp/all.sql
##全库备份
[root@master binlog]# ls
mysql-bin.000001  mysql-bin.000002  mysql-bin.000003  mysql-bin.index
[root@master binlog]# ls
mysql-bin.000001  mysql-bin.000002  mysql-bin.000003  mysql-bin.000004  mysql-bin.index
#此时已经刷新了一个新的binlog文件

3.1 对数据进行增删改操作

DELETE FROM db_default.db_one WHERE 姓名 = '小美';
INSERT INTO db_default.db_one (姓名, 地址) VALUES ('华为', '日本');

MariaDB [(none)]> select * from db_default.db_one  
    -> ;
+--------+--------+
| 姓名   | 地址   |
+--------+--------+
| 小明   | 美国   |
| 华为   | 日本   |
+--------+--------+
2 rows in set (0.00 sec)

3.2  模拟数据库故障后恢复
 

 drop database db_default;

##备份最新或全部二进制文件

[root@master binlog]# ll
总用量 20
-rw-rw---- 1 mysql mysql  264 11月  9 13:06 mysql-bin.000001
-rw-rw---- 1 mysql mysql 3924 11月 10 10:25 mysql-bin.000002
-rw-rw---- 1 mysql mysql  288 11月 10 10:26 mysql-bin.000003
-rw-rw---- 1 mysql mysql  790 11月 10 10:30 mysql-bin.000004
-rw-rw---- 1 mysql mysql  176 11月 10 10:26 mysql-bin.index
[root@master binlog]# cp mysql-bin.000004 /tmp

## 库恢复  (只是恢复了备份时候的数据 并没有恢复全部)

MariaDB [(none)]> source /tmp/all.sqlMariaDB [db_default]> select * from db_default.db_one-> ;
+--------+--------+
| 姓名   | 地址   |
+--------+--------+
| 小明   | 美国   |
| 小美   | 中国   |
+--------+--------+
2 rows in set (0.00 sec)

读取二进制文件

mysqlbinlog --no-defaults --base64-output=never ./mysql-bin.000004

##查找事故临界点位置 如drop  databases db_default

#231110 09:34:30 server id 1  end_log_pos 692     Xid = 207
# at 314
SET TIMESTAMP=1699583370/*!*/;
DELETE FROM db_default.db_one WHERE 姓名 = '小美'
/*!*/;
# at 527

#231110 10:29:30 server id 1  end_log_pos 692     Xid = 207
SET TIMESTAMP=1699583370/*!*/;
INSERT INTO db_default.db_one (姓名, 地址) VALUES ('华为', '日本')

# at 692

SET TIMESTAMP=1699583448/*!*/;
drop database db_default
 

恢复数据(这边是时间 也可以填写 at后面的数字)

mysqlbinlog --no-defaults --base64-output=never  --start-datetime="2023-11-10 10:00:00" --stop-datetime="2023-11-10 10:30:00" mysql-bin.000004 | mysql -u root -p

MariaDB [db_default]> select * from db_default.db_one;
+--------+--------+
| 姓名   | 地址   |
+--------+--------+
| 小明   | 美国   |
| 华为   | 日本   |
+--------+--------+
 

相关文章:

Mysql数据备份 — mysqldump

一 备份类型 - 逻辑备份&#xff08;mysqldump&#xff09;&#xff1a; - 优点&#xff1a; - 恢复简单&#xff0c;可以使用管道将他们输入到mysql。 - 与存储引擎无关&#xff0c;因为是从MySQL服务器中提取数据而生成的&#xff0c;所以消除了底层数据…...

vue使用Echarts5实现词云图

先上官网 词云图有些特殊&#xff0c;它属于Echarts 的扩展&#xff0c;需要额外安装Echarts-wordcloud包。 Echarts 官网 Echarts-wordcloud 词云图官网 先安装 npm install echarts npm install echarts-wordcloud再引入 echarts选一个引入就行&#xff1b;4或5版本都可以 …...

带有密码的Excel只读模式,如何取消?

Excel文件打开之后发现是只读模式&#xff0c;想要退出只读模式&#xff0c;但是只读模式是带有密码的&#xff0c;该如何取消带有密码的excel只读文件呢&#xff1f; 带有密码的只读模式&#xff0c;是设置了excel文件的修改权限&#xff0c;取消修改权限&#xff0c;我们需要…...

Linux下基本操作命令

一、基础命令 1. pwd 命令 pwd命令用于显示当前所在的工作目录的全路径名称。该命令无需任何参数&#xff0c;只需在终端窗口中输入 pwd 命令即可使用。 2. cd 命令 cd命令用于更改当前工作目录。该命令需要一个参数&#xff1a;目标目录名称。例如&#xff0c;若要进入 Do…...

JVS低代码表单自定义按钮的使用说明和操作示例

在普通的表单设计中&#xff0c;虽然自带的【提交】、【重置】、【取消】按钮可以满足基本操作需求&#xff0c;但在面对更多复杂的业务场景时&#xff0c;这些按钮的显示控制就显得有些力不从心。为了更好地满足用户在表单操作过程中的个性化需求&#xff0c;JVS低代码推出了表…...

C++--二叉树经典例题

本文&#xff0c;我们主要讲解一些适合用C的数据结构来求解的二叉树问题&#xff0c;其中涉及了二叉树的遍历&#xff0c;栈和队列等数据结构&#xff0c;递归与回溯等知识&#xff0c;希望可以帮助你进一步理解二叉树。 目录​​​​​​​ 1.二叉树的层序遍历 2.二叉树的公…...

软件测试需要学习什么?好学吗?需要学多久?到底是报班好还是自学好?

前言&#xff1a; 我发现很多的小伙伴刚刚毕业和想转行的小伙伴对于软件测试很陌生&#xff0c;其中很有很多的小伙伴还踩不少的坑&#xff0c;花费了大量的精力和时间去探索&#xff0c;结果还是一无所获。这里给大家出一期关于软件测试萌新的疑惑&#xff0c;看完这篇文章你就…...

Ubuntu搭建AI画图工具stable diffusion-webui

Ubuntu搭建 安装依赖项 安装以下依赖项&#xff1a; # Debian-based: sudo apt install wget git python3 python3-venv libgl1 libglib2.0-0# Red Hat-based: sudo dnf install wget git python3# Arch-based: sudo pacman -S wget git python3下载并安装WebUI 进入您想要安…...

智能优化算法(一):伪随机数的产生

文章目录 1.伪随机数介绍1.1.伪随机产生的意义1.2.伪随机产生的过程 2.产生U(0,1)的乘除同余法2.1.原始的乘同余法2.2.改进的乘同余法 3.产生正态分布的伪随机数4.基于逆变法产生伪随机数 1.伪随机数介绍 1.1.伪随机产生的意义 1.随机数的产生是进行随机优化的第一步也是最重要…...

python 调用Oracle有返回参数的存储过程

python 调用Oracle有返回参数的存储过程 1. 存储过程 create or replace procedure pro_test_args(a in integer,b in integer, c out integer) is beginc: a * b ;end pro_test_args;2. Python调用存储过程 import cx_Oracle import os import sys# 连接数据库 #conn cx_O…...

700. 二叉搜索树中的搜索

原题链接700. 二叉搜索树中的搜索 思路&#xff1a; 给定的就是一个二叉搜索树 二叉搜索树是一个有序树&#xff1a; 若它的左子树不空&#xff0c;则左子树上所有结点的值均小于它的根结点的值&#xff1b; 若它的右子树不空&#xff0c;则右子树上所有结点的值均大于它的根结…...

GO学习之 互斥锁、读写锁该如何取舍

GO系列 1、GO学习之Hello World 2、GO学习之入门语法 3、GO学习之切片操作 4、GO学习之 Map 操作 5、GO学习之 结构体 操作 6、GO学习之 通道(Channel) 7、GO学习之 多线程(goroutine) 8、GO学习之 函数(Function) 9、GO学习之 接口(Interface) 10、GO学习之 网络通信(Net/Htt…...

Internet的特点

Internet是一个全球性的计算机网络系统&#xff0c;它将全世界各个地方已有的各种网络(如计算机网、数据通信网以及公用电话交换网等)互联起来&#xff0c;组成一个跨越国界范围的庞大的互联网&#xff0c;因此&#xff0c;也称为“网络的网络”。Internet在很短的时间内风靡全…...

Rust4.2 Common Collections

Rust学习笔记 Rust编程语言入门教程课程笔记 参考教材: The Rust Programming Language (by Steve Klabnik and Carol Nichols, with contributions from the Rust Community) Lecture 8: Common Collections fn main() {//Vectorlet mut v: Vec<i32> Vec::new();//…...

芸鹰蓬飞:抖音投流以后还有自然流量吗?

随着抖音平台的普及&#xff0c;企业和个人纷纷加入到这个短视频的热潮中。然而&#xff0c;一旦投入抖音投流&#xff0c;是否还能依赖自然流量&#xff1f;这是许多用户和品牌关心的问题。本文将深入剖析这一话题&#xff0c;探讨抖音投流与自然流量之间的关系。 一、抖音投…...

CTFhub-RCE-php://input

我们需要使用php://input来构造发送的指令 查看phpinfo&#xff0c;找到一下字段 证明是可以使用php://input 1. 使用Burpsuite抓包并转至Repeater 2. 构造包 方法&#xff1a;POST 目标&#xff1a;/?filephp://input Body&#xff1a;<?php system("ls /"…...

RISC-V处理器设计(五)—— 在 RISC-V 处理器上运行 C 程序

目录 一、前言 二、从 C 程序到机器指令 三、实验 3.1 实验环境 3.11 Windows 平台下环境搭建 3.12 Ubuntu 平台下环境搭建 3.13 实验涉及到的代码或目录 3.2 各文件作用介绍 3.2.1 link.lds 3.2.2 start.S 3.2.3 lib 和 include 目录 3.2.4 common.mk 3.2.5 demo …...

【PIE-Engine 数据资源】全球250米LAI产品

文章目录 一、 简介二、描述三、波段四、示例代码参考资料 一、 简介 数据名称全球250米LAI产品时间范围2015年空间范围全球数据来源北京师范大学肖志强教授团队代码片段var images pie.ImageCollection(“BNU/LAI/GLOBAL-250”) 二、描述 全球 250 米叶面指数产品由北京师范…...

vcomp120.dll丢失怎么办?vcomp120.dll丢失的解决方法分享

vcomp120.dll丢失”。这个错误通常会导致某些应用程序无法正常运行&#xff0c;给用户带来困扰。那么&#xff0c;当我们遇到这个问题时&#xff0c;应该如何修复呢&#xff1f;下面我将为大家介绍四个修复vcomp120.dll丢失的方法。 一、使用dll修复程序修复 可以通过百度或许…...

linux下使用Docker Compose部署Spug实现公网远程访问

&#x1f4d1;前言 本文主要是linux下使用Docker Compose部署Spug实现公网远程访问的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是青衿&#x1f947; ☁️博客首页&#xff1a;CSDN主页放风讲故事 &am…...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段&#xff1a; 构建阶段&#xff08;Build Stage&#xff09;&#xff1a…...

基于服务器使用 apt 安装、配置 Nginx

&#x1f9fe; 一、查看可安装的 Nginx 版本 首先&#xff0c;你可以运行以下命令查看可用版本&#xff1a; apt-cache madison nginx-core输出示例&#xff1a; nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

JVM垃圾回收机制全解析

Java虚拟机&#xff08;JVM&#xff09;中的垃圾收集器&#xff08;Garbage Collector&#xff0c;简称GC&#xff09;是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象&#xff0c;从而释放内存空间&#xff0c;避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

自然语言处理——Transformer

自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效&#xff0c;它能挖掘数据中的时序信息以及语义信息&#xff0c;但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN&#xff0c;但是…...

Java线上CPU飙高问题排查全指南

一、引言 在Java应用的线上运行环境中&#xff0c;CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时&#xff0c;通常会导致应用响应缓慢&#xff0c;甚至服务不可用&#xff0c;严重影响用户体验和业务运行。因此&#xff0c;掌握一套科学有效的CPU飙高问题排查方法&…...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

使用Spring AI和MCP协议构建图片搜索服务

目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式&#xff08;本地调用&#xff09; SSE模式&#xff08;远程调用&#xff09; 4. 注册工具提…...

GitFlow 工作模式(详解)

今天再学项目的过程中遇到使用gitflow模式管理代码&#xff0c;因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存&#xff0c;无论是github还是gittee&#xff0c;都是一种基于git去保存代码的形式&#xff0c;这样保存代码…...

三分算法与DeepSeek辅助证明是单峰函数

前置 单峰函数有唯一的最大值&#xff0c;最大值左侧的数值严格单调递增&#xff0c;最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值&#xff0c;最小值左侧的数值严格单调递减&#xff0c;最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...

Chrome 浏览器前端与客户端双向通信实战

Chrome 前端&#xff08;即页面 JS / Web UI&#xff09;与客户端&#xff08;C 后端&#xff09;的交互机制&#xff0c;是 Chromium 架构中非常核心的一环。下面我将按常见场景&#xff0c;从通道、流程、技术栈几个角度做一套完整的分析&#xff0c;特别适合你这种在分析和改…...