【MySQL 流浪之旅】 第四讲 MySQL 逻辑备份

news/2024/7/24 4:45:43 标签: mysql, 数据库

系列文章目录

【MySQL 流浪之旅】 第一讲 MySQL 安装
【MySQL 流浪之旅】 第二讲 MySQL 基础操作
【MySQL 流浪之旅】 第三讲 MySQL 基本工具


文章目录

系列文章目录

文章目录

一、什么是逻辑备份?

mysqldump%E5%8E%9F%E7%90%86-toc" style="margin-left:0px;">二、 mysqldump原理

mysqldump%E5%B8%B8%E7%94%A8%E5%8F%82%E6%95%B0-toc" style="margin-left:0px;">三、mysqldump常用参数

mysqldump%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98-toc" style="margin-left:0px;">四、mysqldump常见问题

mysqldump%E4%BC%9A%E5%AF%BC%E8%87%B4%E9%94%81%E8%A1%A8%E5%90%97%EF%BC%9F-toc" style="margin-left:40px;">mysqldump会导致锁表吗?

mysqldump%E6%95%B0%E6%8D%AE%E5%AF%BC%E5%87%BA%E6%97%B6%E9%97%B4%EF%BC%9F-toc" style="margin-left:40px;">mysqldump数据导出时间?


一、什么是逻辑备份?

逻辑备份是将数据库中的数据备份成一个文本文件,备份的文件可以被查看、编辑和修改。它有如下几个特点:

  1. 导出的是SQL语句文件:逻辑备份记录了数据库在执行DDL(数据定义语言)、DML(数据操纵语言)和DCL(数据控制语言)操作时的SQL语句。这意味着备份包括了创建表、插入数据以及删除数据的操作。
  2. 适用于中小型数据库:由于逻辑备份主要关注于数据库的结构和数据操作,它在处理较小规模的数据库时效率较高。
  3. 可读性和可编辑性:备份文件包含SQL语句,使得对备份的数据可以进行修改和筛选,便于后续的开发和测试工作。
  4. 不支持增量备份和累计增量备份:逻辑备份的速度相对较慢,因为它需要在每次备份时重新执行所有的SQL语句。如果需要增量备份或者累计增量备份,可能需要采用其他类型的备份方法。
  5. 备份实例:例如,要备份指定的数据库并排除某些表,可以使用mysqldump命令的特定选项,如--exclude-tables参数。
  6. 还原过程:在还原数据时,需要通过执行备份文件中的SQL语句来实现。这个过程可能涉及到权限验证,因此在还原之前应确保有正确的访问权限。

mysqldump%E5%8E%9F%E7%90%86">二、 mysqldump原理

Mysqldump的工作原理是将数据库中的数据通过SQL语句导出到一个文本文件中。这个文件包含了所有表的结构和数据。备份的过程中,Mysqldump会对每个表逐一进行处理,生成对应的SQL语句,并将这些语句写入备份文件中。在还原数据库时,只需要运行这个备份文件,就可以将数据恢复到原来的状态。

1. mysqldump的本质是通过select * from table来获取表的数据的。
2. mysqldump适合放到业务低峰期做,因为备份的时候对数据库还是有一定的影响。

mysqldump%E5%B8%B8%E7%94%A8%E5%8F%82%E6%95%B0">三、mysqldump常用参数

1.备份所有的库
mysqldump -uxxx -pxxx  -A  > all_databases.sql

2.备份所有库+存储过程+触发器,--routines ,表示备份存储过程和函数,--triggers,备份触发器
mysqldump -uxxx -pxxx -A --routines --triggers   > all_databases.sql

3.备份指定库db1,db2 所有表和数据,--databases ,导出指定数据库的所有表和数据
mysqldump -uxpxxx  xx --databases  db1 db2 >db.sql

4.只备份db1的所有表结构,不备份数据,-d==--no-data,表示只导出表结构,不到导出数据
mysqldump -uxxx -pxxx  -d  db1 > db1_schema.sql

5.只备份db1下所有数据,不备份表结构,-t==--no-create-info,表示只导出数据不导出表结构
mysqldump -uxxx -pxxx -t db1 > db1.sql

6.如果需要在线搭建一个从库或者做日常备份,采用--master-data,和--single-transaction这2个参数
mysqldump -uxxx -pxxx  --master-data=2 --single-transaction -A   --routines  > all.sql

mysqldump%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98">四、mysqldump常见问题

mysqldump%E4%BC%9A%E5%AF%BC%E8%87%B4%E9%94%81%E8%A1%A8%E5%90%97%EF%BC%9F" style="text-align:left;">mysqldump会导致锁表吗?

1、不使用任何参数,默认带有--lock-tables,mysqldump会依次遍历每个表依次锁过去。
2、如果加上--lock-all-tables这个参数,会在mysqldump执行的过程,将所有表锁住。
3、如果使用了--master-data和--single-transaction两个参数的话只会在开始导数的时候获得一个数据一致性状态,接下来不锁表。

mysqldump%E6%95%B0%E6%8D%AE%E5%AF%BC%E5%87%BA%E6%97%B6%E9%97%B4%EF%BC%9F">mysqldump数据导出时间?

问题描述:假设mysqldump导出数据,从开始执行总共执行了1个小时,那么mysqldump导出来的数据到底是哪个时间点的数据?

1、不使用任何参数,mysqldump会依次遍历每个表依次锁过去,这样数据就是整个导出过程的。
2、--lock-all-tables这个参数,就会在mysqldump执行的过程中,将所有表锁住,那样开始导出的数据就是那一时刻的。
3、使用了--master-data和--single-transaction两个参数的话,会在开始导数的时候获得一个数据一致性状态,导出的数据就是这一时刻的。


http://www.niftyadmin.cn/n/5343390.html

相关文章

c#读取getman网址中的json

using System; using System.Net.Http; using System.Threading.Tasks;class Program {static async Task Main(){// 替换为实际的 Getman 网址string apiUrl "https://your-getman-url.com/api/data";try{using (HttpClient client new HttpClient()){// 发送 GET…

GIS项目实战06:超详细Node.js安装及系统环境配置

简单的说 Node.js 就是运行在服务端的 JavaScript。 Node.js 是一个基于 Chrome JavaScript 运行时建立的一个平台。 Node.js 是一个事件驱动 I/O 服务端 JavaScript 环境,基于 Google 的 V8 引擎,V8 引擎执行 Javascript 的速度非常快,性能…

打包jar服务,如何提取第三方依赖包

很多时候有这个需求,编译源码的时候无法联网,需要把源代码和依赖包一起离线用。 那么怎么把可以联网的工程依赖包,下载后提供给无网环境用呢。war的很多时候是默认提供好的,那么maven打包jar包服务的,assembly.xml 配…

10个常考的前端手写题,你全都会吗?(下)

前言 📫 大家好,我是南木元元,热爱技术和分享,欢迎大家交流,一起学习进步! 🍅 个人主页:南木元元 今天接着上篇再来分享一下10个常见的JavaScript手写功能。 目录 1.实现继承 ES5继…

小程序系列--11.小程序自定义组件

一、组件的创建与引用 1. 创建组件 2. 引用组件 3. 局部引用组件 4. 全局引用组件 5. 全局引用 VS 局部引用 6. 组件和页面的区别 二、样式 1. 组件样式隔离 2. 组件样式隔离的注意点 3. 修改组件的样式隔离选项 4. styleIsolation 的可选值 三、数据、方法和属性 1…

【Java万花筒】解码Java网络通讯谜团:对比Apache HttpClient、OkHttp、Feign、RestTemplate、Retrofit

Java网络请求大比拼:HttpClient、OkHttp、Feign、RestTemplate、Retrofit全面解析 前言 在当今互联网时代,Java开发者常常需要处理与各种RESTful服务的通信。本文旨在深入比较Java中几个主流的网络请求库,包括Apache HttpClient、OkHttp、F…

Docker容器中安装Tomcat

要在Docker容器中安装Tomcat,您可以按照以下步骤进行操作: 首先,安装Docker并启动Docker服务。 创建一个新的目录,用于存放Tomcat相关文件,例如tomcat-container。 在该目录下创建一个名为Dockerfile的文件&#xff…

深度学习-多层感知器-建立MLP实现非线性二分类-MLP实现图像多分类

多层感知器(Multi-Layer Perceptron)(人工神经网络) 多层感知器模型框架 MLP用于非线性分类预测 在不增加高次项数据的情况下,如何通过MLP实现非线性分类预测 MLP模型框架 MLP实现多分类预测 实战准备 Ke…