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…...
CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...
04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...
ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...
C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
如何在最短时间内提升打ctf(web)的水平?
刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
基于鸿蒙(HarmonyOS5)的打车小程序
1. 开发环境准备 安装DevEco Studio (鸿蒙官方IDE)配置HarmonyOS SDK申请开发者账号和必要的API密钥 2. 项目结构设计 ├── entry │ ├── src │ │ ├── main │ │ │ ├── ets │ │ │ │ ├── pages │ │ │ │ │ ├── H…...
自然语言处理——文本分类
文本分类 传统机器学习方法文本表示向量空间模型 特征选择文档频率互信息信息增益(IG) 分类器设计贝叶斯理论:线性判别函数 文本分类性能评估P-R曲线ROC曲线 将文本文档或句子分类为预定义的类或类别, 有单标签多类别文本分类和多…...
算法打卡第18天
从中序与后序遍历序列构造二叉树 (力扣106题) 给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。 示例 1: 输入:inorder [9,3,15,20,7…...
echarts使用graphic强行给图增加一个边框(边框根据自己的图形大小设置)- 适用于无法使用dom的样式
pdf-lib https://blog.csdn.net/Shi_haoliu/article/details/148157624?spm1001.2014.3001.5501 为了完成在pdf中导出echarts图,如果边框加在dom上面,pdf-lib导出svg的时候并不会导出边框,所以只能在echarts图上面加边框 grid的边框是在图里…...
