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

系列文章目录

【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两个参数的话,会在开始导数的时候获得一个数据一致性状态,导出的数据就是这一时刻的。

你可能感兴趣的:(流浪运维,mysql,数据库)