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.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';
总结
用途不同:
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…...
SNAT与DNAT
一、SNAT策略概述 1、SNAT 策略的典型应用环境 局域网主机共享单个公网IP地址接入Internet(私有IP不能在Internet中正常路由) 局域共享上网 2、 SNAT 策略的原理 修改数据包的源地址 把从内网 --> 外网的数据的源内网地址转换成公网源地址 3、SN…...
MySql八股文知识点总结,一篇文章让mysql成为面试加分项
MySql八股文知识点总结(自检) 1.前言 参与了几次中大厂的面试,你会发现一面时对于八股文的考察也具有侧重点(MySQLRedis > 网络 > 系统 >设计模式 > java集合 >spring) 本文的目标就是通过这一篇文章让你能在面…...
Python 很好用的爬虫框架:Scrapy:
了解Scrapy 爬虫框架的工作流程: 在scrapy中, 具体工作流程是这样的: 首先第一步 当爬虫引擎<engine>启动后, 引擎会到 spider 中获取 start_url<起始url> 然后将其封装为一个request对象, 交给调度器<…...
C/C++|关于 namespace 在C++中的代码组织
命名空间(namespace)在C中用于组织代码,避免命名冲突,并提供更好的代码结构和可读性。下面详细解释命名空间在C多文件编写中的各种作用和表达。 基本概念 命名空间是一个声明区域,用于组织代码,防止不同部…...
selenium自动化测试入门 —— 上传文件
selenium无法识别非web的控件,上传文件窗口为系统自带,无法识别窗口元素。 上传文件有两种场景:input控制上传和非input控件上传。 大多数情况都是input控件上传文件,只有非常少数的使用自定义的非input上传文件。 一、input控…...
C# Math.Round() 四舍六入五取偶
文章目录 1.重载列表2. 示例 Math.Round() 为四舍六入五取偶 1.重载列表 API说明Round(Double)将小数值舍入到最近的整数值Round(Double, Int32)将小数值按指定的小数位数舍入Round(Double, Int32, MidpointRounding)将小数值按指定的小数位数舍入,MidpointRoundin…...
springboot手动触发参数校验,service层调用参数校验
背景 入参校验一般是在控制层通过javax.validation.constraints包下的规则注解如NotNull结合Valid与Validated实现,但是有时候我们的方法不提供给controller调用,这时候就无法触发自动参数校验,为此我们可以在不更改校验代码的前提下手动触发…...
动手学深度学习4.10 实战Kaggle比赛:预测房价-笔记练习(PyTorch)
以下内容为结合李沐老师的课程和教材补充的学习笔记,以及对课后练习的一些思考,自留回顾,也供同学之人交流参考。 本节课程地址:实战 Kaggle 比赛:预测房价_哔哩哔哩_bilibili 本节教材地址:4.10. 实战Ka…...
1035 插入与归并(测试点6)
solution 类型判断:插入排序中已排序的部分有序,未排序的和原数组元素相同;否则为归并排序测试点6:对于归并排序的子序列长度,不能简单视为前k个有序则子序列长度就是k 例如该测试用例的归并排序的子序列长度应该为2&…...
什么情况下需要使用分布式事务,有哪些方案?
引言:在当今的分布式系统中,数据的一致性和事务的处理成为了关键问题。随着应用程序的规模不断扩大和复杂性的增加,单一数据库事务的能力已经无法满足需求。因此,引入了分布式事务的概念,以确保跨多个节点的操作能够保…...
一起做网店官方网站/营销策划与运营
排除干扰 1. 减号关键词 精确搜索 2.给关键词加引号 指定网站内搜索 3. site:域名关键词 指定文件格式搜索 4.filetype:文件格式关键词 指定标题搜索 5.intitle:关键词 指定范围搜索 (正文出现关键词) 6.intext:关键词 7.allintext:关键词 (网页url中包含关键词) 8.inurl:关键…...
企业年底做网站的好处/桂平seo快速优化软件
1031. 两个非重叠子数组的最大和 给出非负整数数组 A ,返回两个非重叠(连续)子数组中元素的最大和,子数组的长度分别为 L 和 M。(这里需要澄清的是,长为 L 的子数组可以出现在长为 M 的子数组之前或之后。…...
迁安做网站中的cms润强/站长工具权重
记一次 Python 内存泄漏的排查 背景 上周使用我的python web框架开发的第二个项目上线了,但是没运行几天机器内存就报警了,8G内存使用了7G,怀疑有内存泄漏,这个项目提供的功能就是一堆机器学习模型,对历史数据进行训练…...
网站用视频做背景音乐/百度怎么投放广告
文章目录 一、KafkaTemplate的Send参数二、异步发送加回调与同步发送2.1.异步发送 + 回调函数2.2.同步发送三、生产者拦截器与分区器配置一、KafkaTemplate的Send参数 在之前文章中已经介绍KafkaTemplate的Send方法,最简单的使用方式就是传递一个Topic名称,传递一条数据使用…...
整形网站专题素材/公司网站建设流程
JAVA面向对象基础 1、说一下什么是面向对象 面向对象是一种编程思想,它是相对于面向过程而言的,从执行者变为了指挥者,通过这种思想来将生活中复杂的事情简单化 面向对象就是把一个对象抽象成类,具体来说就是把一个对象的静态特…...
网站建设布吉/尚硅谷培训机构官网
转: http://developer.51cto.com/art/201211/364737.htm AD:2013大数据全球技术峰会课程PPT下载 在我多年的 Python 编程经历以及在 Github 上的探索漫游过程中,我发掘到一些很不错的 Python 开发包,这些包大大简化了开发过程&…...