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

MySQL逻辑备份

目录

一.mysqldump

基本命令:

参数选项:

示例

备份整个数据库 

备份多个数据库 

备份所有数据库 

仅备份数据库结构

仅备份特定表

添加选项以有效处理锁表问题

恢复数据

恢复数据库

恢复库中的表 

使用source恢复 

注意事项

二. mysqlpump

mysqlpump 特点

基本命令:

常用选项:

示例

备份单个数据库

备份多个数据库 

备份所有数据库

并发处理

过滤表

仅备份表结构

压缩备份文件

备份数据目录

恢复数据库

注意事项

逻辑备份的优缺点

只备份表数据扩展

mysqldump -n

SELECT INTO OUTFILE

总结


MySQL 的逻辑备份指的是使用 SQL 语句备份数据库的结构和数据,而不是直接备份数据库文件。通常使用 mysqldump 工具进行逻辑备份。

一.mysqldump

mysqldump是最常用的逻辑备份工具,能够生成SQL脚本文件,这些文件可以用来重建数据库结构和数据。

基本命令

mysqldump -u [用户名] -p[密码] [数据库名] > [备份文件.sql]

参数选项

  • -u, --user=[name]:指定 MySQL 用户名。
  • -p, --password[=password]:指定 MySQL 密码。如果不提供密码,mysqldump 会提示输入。
  • -h, --host=[hostname]:指定 MySQL 服务器主机名。
  • -P, --port=[port_num]:指定 MySQL 服务器端口号。
  • --protocol=[{TCP|SOCKET|PIPE|MEMORY}]:指定连接协议。
  • -r, --result-file=[file]:将输出直接写入文件,而不是通过标准输出。
  • -t, --no-create-info:不写入创建表的语句,只导出数据。
  • -d, --no-data:不写入数据,只导出数据库结构。
  • --add-drop-table:在每个创建表语句前增加 DROP TABLE IF EXISTS 语句。
  • --add-locks:在插入数据前后使用 LOCK TABLESUNLOCK TABLES 语句。
  • --disable-keys:在插入数据前使用 ALTER TABLE ... DISABLE KEYS,插入数据后使用 ALTER TABLE ... ENABLE KEYS
  • -B, --databases:指定要备份的数据库。如果使用该选项,所有跟在其后的数据库名都将被备份。
  • -A, --all-databases:备份所有数据库。
  • --tables:指定要备份的表,必须跟在数据库名之后。
  • -n, --no-create-db:不写入创建数据库的语句。
  • -w, --where='condition':仅导出符合指定条件的行。
  • --single-transaction:在一个事务中导出所有数据,适用于支持事务的表(如 InnoDB)。
  • --lock-tables:在导出前锁定所有表,适用于不支持事务的表(如 MyISAM)。
  • --master-data[=#]:在导出中加入主服务器的二进制日志位置和文件名,用于设置复制。
  • --flush-logs:在导出前刷新 MySQL 服务器的日志。
  • --routines:导出存储过程和函数。
  • --triggers:导出触发器。
  • --events:导出事件。
  • --hex-blob:以十六进制格式导出二进制列。
  • --set-gtid-purged=[OFF|ON|AUTO]:控制是否在备份中加入 GTID 信息,适用于 GTID 复制。

示例

备份整个数据库 
    mysqldump -u root -p mydatabase > mydatabase_backup.sql
备份多个数据库 
    mysqldump -u root -p --databases db1 db2 > multi_database_backup.sql
备份所有数据库 
    mysqldump -u root -p --all-databases > all_databases_backup.sql
仅备份数据库结构
    mysqldump -u root -p --no-data mydatabase > mydatabase_structure_backup.sql
仅备份特定表
    mysqldump -u root -p mydatabase table1 table2 > mydatabase_tables_backup.sql
添加选项以有效处理锁表问题
    mysqldump -u root -p --single-transaction --quick --lock-tables=false mydatabase > mydatabase_backup.sql

恢复数据

恢复数据库

语法

    mysql -u [用户名] -p[密码] [数据库名] < [备份文件.sql]

示例

    mysql -u root -p mydatabase < mydatabase_backup.sql

恢复库中的表 
    mysqldump -u root -p[密码] [库名] [表名] > staff_backup.sql
使用source恢复 

首先登录到mysql中,在mysql中使用下述语法恢复

source 文件路径;

例: 

source /path/to/employees_backup.sql;

注意事项

  • 权限管理:确保执行 mysqldump 和恢复命令的用户具有相应的数据库读写权限。
  • 定期备份:逻辑备份通常对数据一致性和完整性要求较高,建议定期进行备份并验证备份文件的有效性。
  • 存储位置:将备份文件存储在安全的位置,避免丢失或被不当修改。

二. mysqlpump

mysqlpump是MySQL 5.7引入的备份工具,支持多线程,能够更快地进行备份。它是 mysqldump 的增强版本。

mysqlpump 特点

  1. 并行处理mysqlpump 支持并发地备份多个表和多数据库,极大地提高了备份速度。
  2. 更丰富的功能选项:支持过滤特定数据库、表和数据以及导出的同时进行压缩等。
  3. 增强的灵活性:提供更多参数以定制化备份操作。

基本命令

    mysqlpump -u [用户名] -p[密码] [数据库名] > [备份文件.sql]

常用选项

  • --exclude-databases:排除特定数据库
  • --include-databases:包含特定数据库
  • --default-parallelism:设置并行度
  • --skip-definer:忽略DEFINER子句
  • --set-gtid-purged:用于GTID的备份

示例

备份单个数据库
    mysqlpump -u root -p mydatabase > mydatabase_backup.sql
备份多个数据库 
    mysqlpump -u root -p --databases db1 db2 > multi_database_backup.sql
备份所有数据库
    mysqlpump -u root -p --all-databases > all_databases_backup.sql
并发处理
    mysqlpump -u root -p --default-parallelism=4 --databases db1 db2 > multi_database_backup.sql

使用 --default-parallelism 参数可以设定并发线程数,加快备份速度。 

过滤表
    mysqlpump -u root -p mydatabase --exclude-tables=table1,table2 > mydatabase_backup.sql

使用 --exclude-tables 可以排除特定的表 

仅备份表结构
    mysqlpump -u root -p mydatabase --skip-dump-data > mydatabase_structure_backup.sql
压缩备份文件
    mysqlpump -u root -p mydatabase | gzip > mydatabase_backup.sql.gz
备份数据目录
    mysqlpump --users --routines --databases db1 db2 > backup_with_users_routines.sql

使用 --users 备份用户账户,使用 --routines 备份存储函数和存储过程。

恢复数据库

解压缩备份文件

    gunzip < mydatabase_backup.sql.gz | mysql -u root -p mydatabase

恢复备份

    mysql -u [用户名] -p [数据库名] < [备份文件.sql]

示例

    mysql -u root -p mydatabase < mydatabase_backup.sql

注意事项

  1. 权限管理:确保执行 mysqlpump 和恢复命令的用户具有必要的数据库读写权限。
  2. 并发性:合理设定并发线程数,避免服务器负载过高。
  3. 定期备份:建议定期备份并验证备份文件的完整性。
  4. 存储位置:将备份文件存储在安全和可靠的位置,避免丢失或不当修改。

逻辑备份的优缺点

优点

  • 可读性强:备份文件是文本格式的SQL脚本,易于查看和编辑。
  • 跨平台:备份文件可以在不同操作系统和不同版本的MySQL之间移植。
  • 备份灵活:可以选择备份整个数据库、特定的表或结构。

缺点

  • 性能开销大:备份和恢复过程中会产生较大的CPU和I/O开销,特别是对于大数据量的数据库。
  • 恢复速度慢:相对于物理备份,逻辑备份的恢复速度较慢。
  • 一致性问题:如果没有正确使用事务一致性选项,可能会导致数据不一致。

只备份表数据扩展

/var/lib/mysql-files 是 MySQL 默认用于存储导出的文件的目录。这个目录通常用于 SELECT INTO OUTFILE 等操作所生成的文件。

mysqldump -n

介绍

mysqldump 是一个用于备份 MySQL 数据库的工具。-n 参数让你只备份表中数据,不包括表结构。备份得到的文件是纯 SQL 语句,可以用来恢复数据。

举例

  1. 场景: 有一个名为 employees 的数据库,其中包含 staff 表。备份 staff 表中的数据,但不包括表结构。

  2. 步骤:

进入命令行。

执行以下命令:

mysqldump -u root -p[密码] --no-create-info employees staff > staff_data_only.sql

        3.结果: 生成的 staff_data_only.sql 文件内容:

INSERT INTO `staff` (`id`, `name`, `position`, `salary`) VALUES (1, 'Alice', 'Manager', 50000);
INSERT INTO `staff` (`id`, `name`, `position`, `salary`) VALUES (2, 'Bob', 'Engineer', 40000);
INSERT INTO `staff` (`id`, `name`, `position`, `salary`) VALUES (3, 'Charlie', 'Technician', 30000);

恢复:

  • 在新环境中,确保已存在相同结构的 staff 表。
  • 进入 MySQL 客户端,执行:
source /path/to/staff_data_only.sql;

SELECT INTO OUTFILE

介绍

SELECT INTO OUTFILE 是一条SQL语句,用于将查询结果导出到文件中。文件格式可以根据需要来定义(如CSV格式,也可以是xlsx结尾的格式),通常用于数据分析和传输。

举例

        1.场景: 有一个名为 employees 的数据库,其中包含 staff 表。导出 staff 表中的数据作为CSV文件来分析。

        2.步骤:

进入 MySQL 客户端。

执行以下 SQL 语句:

SELECT * FROM staff INTO OUTFILE '/var/lib/mysql-files/staff_data.csv'
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"'
LINES TERMINATED BY '\n';命令解读(也可以使用默认,后面就不用那么多指定要求语句了):
-- 从 staff 表中选择所有列和行
SELECT * FROM staff -- 将查询结果写入指定路径的文件中
INTO OUTFILE '/var/lib/mysql-files/staff_data.csv'-- 每个字段(列)的数据使用逗号分隔
FIELDS TERMINATED BY ',' -- 每个字段的值都用双引号包围
ENCLOSED BY '"'-- 每行记录之间以换行符分隔
LINES TERMINATED BY '\n';

        3.结果: 生成的 staff_data.csv 文件内容:

    "1","Alice","Manager","50000""2","Bob","Engineer","40000""3","Charlie","Technician","30000"

恢复:

  • 在新环境中,确保已存在相同结构的 staff 表。
  • 复制 staff_data.csv 文件到服务器。
  • 使用以下 SQL 语句导入数据:
      LOAD DATA INFILE '/var/lib/mysql-files/staff_data.csv'INTO TABLE staffFIELDS TERMINATED BY ',' ENCLOSED BY '"'LINES TERMINATED BY '\n';
总结
  1. 用途不同:

    • mysqldump -n 主要用于备份和恢复 MySQL 数据库数据。生成 SQL 文件,便于在需要时恢复数据。
    • SELECT INTO OUTFILE 主要用于数据导出用于分析或传输。生成的文件格式如CSV,可用Excel等工具打开。
  2. 恢复指定表:

    • mysqldump -n 恢复数据更简单,直接源文件加载到MySQL中即可。
    • SELECT INTO OUTFILE 导出的文件格式灵活,但需要额外步骤导入数据(如使用 LOAD DATA INFILE)。
  3. 便捷性和灵活性:

    • mysqldump -n 适用于跨平台环境,恢复数据库较为便捷。
    • SELECT INTO OUTFILE 适用于导出数据进行外部分析,格式灵活但操作稍复杂。

相关文章:

MySQL逻辑备份

目录 一.mysqldump 基本命令&#xff1a; 参数选项&#xff1a; 示例 备份整个数据库 备份多个数据库 备份所有数据库 仅备份数据库结构 仅备份特定表 添加选项以有效处理锁表问题 恢复数据 恢复数据库 恢复库中的表 使用source恢复 注意事项 二. mysqlpu…...

python 获取网页链接图片

python 获取 网页图片 在Python中&#xff0c;可以使用requests库获取网页内容&#xff0c;再使用BeautifulSoup解析网页&#xff0c;提取图片链接&#xff0c;最后保存图片到本地。以下是一个简单的例子&#xff1a; import requests from bs4 import BeautifulSoup import o…...

Leetcode 力扣114. 二叉树展开为链表 (抖音号:708231408)

给你二叉树的根结点 root &#xff0c;请你将它展开为一个单链表&#xff1a; 展开后的单链表应该同样使用 TreeNode &#xff0c;其中 right 子指针指向链表中下一个结点&#xff0c;而左子指针始终为 null 。展开后的单链表应该与二叉树 先序遍历 顺序相同。 示例 1&#xf…...

文刻ai工具跟绘唐AI工具有什么区别

文刻AI工具和绘唐AI工具是两种不同的人工智能工具。点击查看 文刻AI工具是一种自然语言处理工具&#xff0c;可以用于生成、修改和校对文本。它可以帮助用户更高效地写作&#xff0c;提供词汇和语法建议&#xff0c;检查拼写和语法错误&#xff0c;并提供自动补全和自动纠正功…...

手写kNN算法的实现-用欧几里德空间来度量距离

kNN的算法思路&#xff1a;找K个离预测点最近的点&#xff0c;然后让它们进行投票决定预测点的类型。 step 1: kNN存储样本点的特征数据和标签数据step 2: 计算预测点到所有样本点的距离&#xff0c;关于这个距离&#xff0c;我们用欧几里德距离来度量&#xff08;其实还有很多…...

IGraph使用实例——线性代数计算(blas)

1 概述 在图论中&#xff0c;BLAS&#xff08;Basic Linear Algebra Subprograms&#xff09;并不直接应用于图论的计算&#xff0c;而是作为一套线性代数计算中通用的基本运算操作函数集合&#xff0c;用于进行向量和矩阵的基本运算。然而&#xff0c;这些基本运算在图论的相…...

【MySQL】(基础篇五) —— 排序检索数据

排序检索数据 本章将讲授如何使用SELECT语句的ORDER BY子句&#xff0c;根据需要排序检索出的数据。 排序数据 还是使用上一节中的例子,查询employees表中的last_name字段 SELECT last_name FROM employees;输出结果&#xff1a; 发现其输出并没有特定的顺序。其实&#xf…...

C++ C_style string overview and basic Input funcitons

write in advance 最近在做题&#xff0c;遇到一个简单的将console的输入输出到文件中的简单题目&#xff0c;没有写出来。悔恨当初没有踏实地总结string 相关的 I/O 以及与文件的操作。这篇文章旨在记录基础的字符I/O, 简单常用的文件I/O操作函数。 当然&#xff0c;你会说C…...

VS2022+Qt雕刻机单片机马达串口上位机控制系统

程序示例精选 VS2022Qt雕刻机单片机马达串口上位机控制系统 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对《VS2022Qt雕刻机单片机马达串口上位机控制系统》编写代码&#xff0c;代码整洁&a…...

Android Ble低功耗蓝牙开发

一、新建项目 在Android Studio中新建一个项目&#xff0c;如下图所示&#xff1a; 选择No Activity&#xff0c;然后点击Next 点击Finish&#xff0c;完成项目创建。 1、配置build.gradle 在android{}闭包中添加viewBinding&#xff0c;用于获取控件 buildFeatures {viewB…...

Visual Studio的快捷按键

Visual Studio的快捷按键对于提高编程效率至关重要。以下是一些常用的Visual Studio快捷按键&#xff0c;并按照功能进行分类和归纳&#xff1a; 1. 文件操作 Ctrl O&#xff1a;打开文件Ctrl S&#xff1a;保存文件Ctrl Shift S&#xff1a;全部保存Ctrl N&#xff1a;…...

【WEB系列】过滤器Filter

Filter&#xff0c;过滤器&#xff0c;属于Servlet规范&#xff0c;并不是Spring独有的。其作用从命名上也可以看出一二&#xff0c;拦截一个请求&#xff0c;做一些业务逻辑操作&#xff0c;然后可以决定请求是否可以继续往下分发&#xff0c;落到其他的Filter或者对应的Servl…...

[书生·浦语大模型实战营]——LMDeploy 量化部署 LLM 实践

1.基础作业 1.1配置 LMDeploy 运行环境 创建开发机 创建新的开发机&#xff0c;选择镜像Cuda12.2-conda&#xff1b;选择10% A100*1GPU&#xff1b;点击“立即创建”。注意请不要选择Cuda11.7-conda的镜像&#xff0c;新版本的lmdeploy会出现兼容性问题。其他和之前一样&…...

TiDB-从0到1-配置篇

TiDB从0到1系列 TiDB-从0到1-体系结构TiDB-从0到1-分布式存储TiDB-从0到1-分布式事务TiDB-从0到1-MVCCTiDB-从0到1-部署篇TiDB-从0到1-配置篇 一、系统配置 TiDB的配置分为系统配置和集群配置两种。 其中系统配置对应TiDB Server&#xff08;不包含TiKV和PD的参数&#xff0…...

微信小程序按钮设计与交互:打造极致用户体验

微信小程序作为一种流行的应用形式&#xff0c;其界面设计和交互体验对于用户吸引力和留存率至关重要。其中&#xff0c;按钮作为用户与小程序进行交互的主要方式之一&#xff0c;其设计和实现直接影响到用户体验的质量。在本文中&#xff0c;我们将探讨微信小程序按钮的设计与…...

ES6中如何使用class和extends关键字实现继承?

在ES6中&#xff0c;可以使用class关键字来定义类&#xff0c;使用extends关键字来实现继承。下面是一个示例&#xff1a; // 父类 class Parent {constructor(name) {this.name name;}sayHello() {console.log(Hello, my name is ${this.name});} }// 子类 class Child ex…...

Linux:基本指令

文章目录 ls指令pwd指令cd指令touch指令mkdir指令rmdir指令 && rm指令cp指令man指令echo指令输出重定向追加重定向 cat指令输入重定向 mv指令which指令alias指令more && less指令head && tail指令事件相关的指令date显示时间戳 cal指令find指令grep指令…...

商业C++静态代码检测工具PC-lint Plus 、 polysace和sonarqube对比

商业C静态代码检测工具PC-lint Plus 、 polysace和sonarqube对比 特性/工具PC-lint PlusPolyspaceSonarQube主要功能高精度静态代码分析、编码标准检查高级静态分析和形式验证、优化嵌入式系统综合性代码质量管理、静态分析、技术债务管理集成方式可集成到IDE和构建系统与开发…...

邬家桥公园

文&#xff5c;随意的风 原文地址 我游览过现存规模最大、保存最完整的皇家园林颐和园&#xff0c;瞻仰过拥有世界上最大祭天建筑群的天坛公园&#xff0c;那都是多年前的事情了。 邬家桥公园相比颐和园、天坛公园&#xff0c;气势雄伟倒谈不上。它没有西湖的水平如镜&#xff…...

Flutter 中的 RenderObjectToWidgetAdapter 小部件:全面指南

Flutter 中的 RenderObjectToWidgetAdapter 小部件&#xff1a;全面指南 Flutter 是一个功能强大的 UI 框架&#xff0c;由 Google 开发&#xff0c;允许开发者使用 Dart 语言构建跨平台的移动、Web 和桌面应用。在 Flutter 的渲染体系中&#xff0c;RenderObjectToWidgetAdap…...

模型参数、模型存储精度、参数与显存

模型参数量衡量单位 M&#xff1a;百万&#xff08;Million&#xff09; B&#xff1a;十亿&#xff08;Billion&#xff09; 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的&#xff0c;但是一个参数所表示多少字节不一定&#xff0c;需要看这个参数以什么…...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

汽车生产虚拟实训中的技能提升与生产优化​

在制造业蓬勃发展的大背景下&#xff0c;虚拟教学实训宛如一颗璀璨的新星&#xff0c;正发挥着不可或缺且日益凸显的关键作用&#xff0c;源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例&#xff0c;汽车生产线上各类…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

Java多线程实现之Callable接口深度解析

Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...

OkHttp 中实现断点续传 demo

在 OkHttp 中实现断点续传主要通过以下步骤完成&#xff0c;核心是利用 HTTP 协议的 Range 请求头指定下载范围&#xff1a; 实现原理 Range 请求头&#xff1a;向服务器请求文件的特定字节范围&#xff08;如 Range: bytes1024-&#xff09; 本地文件记录&#xff1a;保存已…...

【算法训练营Day07】字符串part1

文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接&#xff1a;344. 反转字符串 双指针法&#xff0c;两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例&#xff0c;也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下&#xff1a; 定义实例工厂类&#xff08;Java代码&#xff09;&#xff0c;定义实例工厂&#xff08;xml&#xff09;&#xff0c;定义调用实例工厂&#xff…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

微信小程序云开发平台MySQL的连接方式

注&#xff1a;微信小程序云开发平台指的是腾讯云开发 先给结论&#xff1a;微信小程序云开发平台的MySQL&#xff0c;无法通过获取数据库连接信息的方式进行连接&#xff0c;连接只能通过云开发的SDK连接&#xff0c;具体要参考官方文档&#xff1a; 为什么&#xff1f; 因为…...