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 TABLES和UNLOCK 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 特点
- 并行处理:
mysqlpump支持并发地备份多个表和多数据库,极大地提高了备份速度。 - 更丰富的功能选项:支持过滤特定数据库、表和数据以及导出的同时进行压缩等。
- 增强的灵活性:提供更多参数以定制化备份操作。
基本命令:
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
注意事项
- 权限管理:确保执行
mysqlpump和恢复命令的用户具有必要的数据库读写权限。 - 并发性:合理设定并发线程数,避免服务器负载过高。
- 定期备份:建议定期备份并验证备份文件的完整性。
- 存储位置:将备份文件存储在安全和可靠的位置,避免丢失或不当修改。
逻辑备份的优缺点
优点:
- 可读性强:备份文件是文本格式的SQL脚本,易于查看和编辑。
- 跨平台:备份文件可以在不同操作系统和不同版本的MySQL之间移植。
- 备份灵活:可以选择备份整个数据库、特定的表或结构。
缺点:
- 性能开销大:备份和恢复过程中会产生较大的CPU和I/O开销,特别是对于大数据量的数据库。
- 恢复速度慢:相对于物理备份,逻辑备份的恢复速度较慢。
- 一致性问题:如果没有正确使用事务一致性选项,可能会导致数据不一致。
只备份表数据扩展
/var/lib/mysql-files 是 MySQL 默认用于存储导出的文件的目录。这个目录通常用于 SELECT INTO OUTFILE 等操作所生成的文件。
mysqldump -n介绍
mysqldump是一个用于备份 MySQL 数据库的工具。-n参数让你只备份表中数据,不包括表结构。备份得到的文件是纯 SQL 语句,可以用来恢复数据。举例
场景: 有一个名为
employees的数据库,其中包含staff表。备份staff表中的数据,但不包括表结构。步骤:
进入命令行。
执行以下命令:
mysqldump -u root -p[密码] --no-create-info employees staff > staff_data_only.sql3.结果: 生成的
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';
总结
用途不同:
mysqldump -n主要用于备份和恢复 MySQL 数据库数据。生成 SQL 文件,便于在需要时恢复数据。SELECT INTO OUTFILE主要用于数据导出用于分析或传输。生成的文件格式如CSV,可用Excel等工具打开。恢复指定表:
mysqldump -n恢复数据更简单,直接源文件加载到MySQL中即可。SELECT INTO OUTFILE导出的文件格式灵活,但需要额外步骤导入数据(如使用LOAD DATA INFILE)。便捷性和灵活性:
mysqldump -n适用于跨平台环境,恢复数据库较为便捷。SELECT INTO OUTFILE适用于导出数据进行外部分析,格式灵活但操作稍复杂。
相关文章:
MySQL逻辑备份
目录 一.mysqldump 基本命令: 参数选项: 示例 备份整个数据库 备份多个数据库 备份所有数据库 仅备份数据库结构 仅备份特定表 添加选项以有效处理锁表问题 恢复数据 恢复数据库 恢复库中的表 使用source恢复 注意事项 二. mysqlpu…...
python 获取网页链接图片
python 获取 网页图片 在Python中,可以使用requests库获取网页内容,再使用BeautifulSoup解析网页,提取图片链接,最后保存图片到本地。以下是一个简单的例子: import requests from bs4 import BeautifulSoup import o…...
Leetcode 力扣114. 二叉树展开为链表 (抖音号:708231408)
给你二叉树的根结点 root ,请你将它展开为一个单链表: 展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。展开后的单链表应该与二叉树 先序遍历 顺序相同。 示例 1…...
文刻ai工具跟绘唐AI工具有什么区别
文刻AI工具和绘唐AI工具是两种不同的人工智能工具。点击查看 文刻AI工具是一种自然语言处理工具,可以用于生成、修改和校对文本。它可以帮助用户更高效地写作,提供词汇和语法建议,检查拼写和语法错误,并提供自动补全和自动纠正功…...
手写kNN算法的实现-用欧几里德空间来度量距离
kNN的算法思路:找K个离预测点最近的点,然后让它们进行投票决定预测点的类型。 step 1: kNN存储样本点的特征数据和标签数据step 2: 计算预测点到所有样本点的距离,关于这个距离,我们用欧几里德距离来度量(其实还有很多…...
IGraph使用实例——线性代数计算(blas)
1 概述 在图论中,BLAS(Basic Linear Algebra Subprograms)并不直接应用于图论的计算,而是作为一套线性代数计算中通用的基本运算操作函数集合,用于进行向量和矩阵的基本运算。然而,这些基本运算在图论的相…...
【MySQL】(基础篇五) —— 排序检索数据
排序检索数据 本章将讲授如何使用SELECT语句的ORDER BY子句,根据需要排序检索出的数据。 排序数据 还是使用上一节中的例子,查询employees表中的last_name字段 SELECT last_name FROM employees;输出结果: 发现其输出并没有特定的顺序。其实…...
C++ C_style string overview and basic Input funcitons
write in advance 最近在做题,遇到一个简单的将console的输入输出到文件中的简单题目,没有写出来。悔恨当初没有踏实地总结string 相关的 I/O 以及与文件的操作。这篇文章旨在记录基础的字符I/O, 简单常用的文件I/O操作函数。 当然,你会说C…...
VS2022+Qt雕刻机单片机马达串口上位机控制系统
程序示例精选 VS2022Qt雕刻机单片机马达串口上位机控制系统 如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助! 前言 这篇博客针对《VS2022Qt雕刻机单片机马达串口上位机控制系统》编写代码,代码整洁&a…...
Android Ble低功耗蓝牙开发
一、新建项目 在Android Studio中新建一个项目,如下图所示: 选择No Activity,然后点击Next 点击Finish,完成项目创建。 1、配置build.gradle 在android{}闭包中添加viewBinding,用于获取控件 buildFeatures {viewB…...
Visual Studio的快捷按键
Visual Studio的快捷按键对于提高编程效率至关重要。以下是一些常用的Visual Studio快捷按键,并按照功能进行分类和归纳: 1. 文件操作 Ctrl O:打开文件Ctrl S:保存文件Ctrl Shift S:全部保存Ctrl N:…...
【WEB系列】过滤器Filter
Filter,过滤器,属于Servlet规范,并不是Spring独有的。其作用从命名上也可以看出一二,拦截一个请求,做一些业务逻辑操作,然后可以决定请求是否可以继续往下分发,落到其他的Filter或者对应的Servl…...
[书生·浦语大模型实战营]——LMDeploy 量化部署 LLM 实践
1.基础作业 1.1配置 LMDeploy 运行环境 创建开发机 创建新的开发机,选择镜像Cuda12.2-conda;选择10% A100*1GPU;点击“立即创建”。注意请不要选择Cuda11.7-conda的镜像,新版本的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(不包含TiKV和PD的参数࿰…...
微信小程序按钮设计与交互:打造极致用户体验
微信小程序作为一种流行的应用形式,其界面设计和交互体验对于用户吸引力和留存率至关重要。其中,按钮作为用户与小程序进行交互的主要方式之一,其设计和实现直接影响到用户体验的质量。在本文中,我们将探讨微信小程序按钮的设计与…...
ES6中如何使用class和extends关键字实现继承?
在ES6中,可以使用class关键字来定义类,使用extends关键字来实现继承。下面是一个示例: // 父类 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和构建系统与开发…...
邬家桥公园
文|随意的风 原文地址 我游览过现存规模最大、保存最完整的皇家园林颐和园,瞻仰过拥有世界上最大祭天建筑群的天坛公园,那都是多年前的事情了。 邬家桥公园相比颐和园、天坛公园,气势雄伟倒谈不上。它没有西湖的水平如镜ÿ…...
Flutter 中的 RenderObjectToWidgetAdapter 小部件:全面指南
Flutter 中的 RenderObjectToWidgetAdapter 小部件:全面指南 Flutter 是一个功能强大的 UI 框架,由 Google 开发,允许开发者使用 Dart 语言构建跨平台的移动、Web 和桌面应用。在 Flutter 的渲染体系中,RenderObjectToWidgetAdap…...
OpenClaw终端增强:Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF实现命令行智能补全与解释
OpenClaw终端增强:Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF实现命令行智能补全与解释 1. 为什么需要智能终端助手 作为每天与终端打交道的开发者,我经常陷入这样的困境:面对复杂的docker compose命令需要反复查阅文档…...
COA - CNN - BiGRU - Attention分类:新手友好的数据预测方案
COA-CNN-BiGRU-Attention分类 基于浣熊优化算法优化卷积神经网络(CNN)-双向门控循环单元(BGRU)结合注意力机制(Attention)的数据分类预测(可更换为回归/单变量/多变量时序预测,前私),Matlab代码,可直接运行,适合小白新手 无需更改…...
终极ThinkPad风扇控制指南:如何让你的笔记本更安静更高效?
终极ThinkPad风扇控制指南:如何让你的笔记本更安静更高效? 【免费下载链接】TPFanCtrl2 ThinkPad Fan Control 2 (Dual Fan) for Windows 10 and 11 项目地址: https://gitcode.com/gh_mirrors/tp/TPFanCtrl2 你是否曾经被ThinkPad风扇的噪音困扰…...
js06----流程控制
目录 2.4.1、顺序流程控制 2.4.2、分支流程控制 (1)if分支语句(条件判断语句) (2)if....else...语句 需求1: 需求2: (3)if...else if...else语句&…...
Verilog中的strength到底有什么用?一个案例带你理解强弱驱动的实际应用
Verilog中的strength到底有什么用?一个案例带你理解强弱驱动的实际应用 在数字电路设计中,Verilog作为硬件描述语言的标杆,其精确建模能力直接影响仿真结果的可靠性。而strength(强度)这一常被忽视的特性,恰…...
Qwen3.5-4B-Claude-Opus应用场景:企业内训材料自动提炼+考试题生成实践
Qwen3.5-4B-Claude-Opus应用场景:企业内训材料自动提炼考试题生成实践 1. 企业培训面临的挑战 现代企业培训部门常常面临两大痛点:一是海量培训材料的整理提炼工作耗时费力,二是培训效果评估缺乏科学高效的考核手段。传统人工处理方式存在以…...
零基础入门:时空预测的系统化学习笔记
零基础入门:时空预测的系统化学习笔记 很多刚接触时序与时空预测领域的朋友,常常会陷入两个极端:要么一上来就硬啃复杂的 SOTA 模型,连基础算子都没搞懂就想复现顶会成果,最后处处碰壁;要么只停留在基础概…...
如何高效优化多语言模型:专业部署的完整策略
如何高效优化多语言模型:专业部署的完整策略 【免费下载链接】paraphrase-multilingual-MiniLM-L12-v2 项目地址: https://ai.gitcode.com/hf_mirrors/ai-gitcode/paraphrase-multilingual-MiniLM-L12-v2 你是否在部署多语言文本嵌入模型时遭遇过"显存…...
【MySQL | 第一篇】 深入理解三大日志(undo Redo Bin)
目录 Undo Log日志 Redo Log日志 Redo Log与Bin Log的区别 Bin Log日志 三大日志全流程 Undo Log日志 一、核心定义 Undo Log 是MySQL InnoDB存储引擎特有的事务回滚日志,核心作用是记录事务执行前的数据版本,用于事务回滚、MVCC实现,是…...
Cross-Modal Prototype Alignment and Mixing for Training-Free Few-Shot Classification
Cross-Modal Prototype Alignment and Mixing for Training-Free Few-Shot Classification Authors: Dipam Goswami, Simone Magistri, Gido M. van de Ven, Bartłomiej Twardowski, Andrew D. Bagdanov, Tinne Tuytelaars, Joost van de Weijer Deep-Dive Summary: 跨模态…...
