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

发布时间:2024年01月23日

系列文章目录

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


文章目录

系列文章目录

文章目录

一、什么是逻辑备份?

二、?mysqldump原理

三、mysqldump常用参数

四、mysqldump常见问题

mysqldump会导致锁表吗?

mysqldump数据导出时间?


一、什么是逻辑备份?

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

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

二、?mysqldump原理

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

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

三、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常见问题

mysqldump会导致锁表吗?

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

mysqldump数据导出时间?

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

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

文章来源:https://blog.csdn.net/yip1228/article/details/135750819
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。