MySQL 逻辑备份 mysqldump

本文介绍MySQL逻辑备份的特点和使用mysqldump工具的方法。详细解释了如何利用mysqldump进行数据库备份,包括备份参数的选择、锁表机制、数据一致性保证等,并提供了实际操作示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

逻辑备份特点
  • 备份的是建表、建库、插入等操作所执行SQL语句(DDL DML DCL),适用于中小型数据库。
  • 效率相对较低

在日常工作中,我们会使用 mysqldump 命令创建SQL格式的转储文件来备份数据库。或者我们把数据导出后做数据迁移,主从复制等操作。mysqldump是一个逻辑备份工具,复制原始的数据库对象定义和表数据产生一组可执行的SQL语句。 默认情况下,生成insert语句,也能生成其它分隔符的输出或XML格式的文件。

特点
  1. 自动记录position位置。
show master  status\G;
  1. 可用性,一致性

锁表机制

用法
mysqldump  -h 服务器  -u用户名  -p密码   数据库名  > 备份文件.sql

/*查看帮助*/
mysqldump --help
常见参数
  • --single-transaction 备份前启用一个事务,保证数据一致性。
    仅对 InnoDB 存储引擎有效。还有需要保证没有其他的连接正在使用以下语句: ALTER TABLECREATE TABLEDROP TABLERENAME TABLETRUNCATE TABLE
  • -l, --lock tables 对于不支持事务的存储引擎的表备份使用此选项,比如 MySAM, 可以保证备份期间的数据一致性。会依次对正在备份的每个数据库中的所有表进行锁表操作,此时只可以读。和 --single-transaction 互斥。
  • -x, --lock-all-tables 锁定所有数据库中的所有表。这是通过在整个转储期间采用全局读锁来实现。

有几个选项控制如何 处理存储的程序(存储过程和函数,触发器和事件):

--triggers默认情况下启用 该选项,以便在转储表时,它们伴随着它们具有的任何触发器。

以上的选项都是默认开启的,如果不想备份以上的内容,需要明确设置这些选项:
--skip-events--skip-routines, --skip-triggers

日常用法

备份所有库

shell> mysqldump -uroot -p'*****'  -h  172.16.153.10 --all-databases > `date +%FT%H_%M_%S`dump_all.sql
# 不包含 INFORMATION_SCHEMA,performance_schema,sys

备份指定的多个库

// 为了考虑篇幅,请自行添加指定用户名密码参数和指定服务器的参数

shell> mysqldump --databases time1 time2 time3 > `date +%FT%H_%M_%S`dump_all.sql

备份指定库的指定几个表

shell> mysqldump time t1 t3 t7 > dump.sql

其他参数

  • --master-data=0|1|2

    服务器的二进制日志必须打开

    0 不记录二进制日志文件及位置:

    1 以CHANGE MASTER TO 的方式记录位置,可用于恢复后直接启动从服务器:

    2 以CHANGE MASTER TO 的方式记录位置,但默认被注释:

  • --dump-slave 用于在slave上dump数据,建立新的slave。因为我们在使用mysqldump时会锁表,所以大多数情况下,我们的导出操作一般会在只读备库上做,为了获取主库的Relay_Master_Log_File(二进制日志)和Exec_Master_Log_Pos(主服务器二进制日志中数据所处的位置),需要用到这个参数,不过这个参数只有在5.7以后的才会有

  • --no-data, -d 不导出任何数据,只导出数据库表结构

  • --lock-all-tables: 锁定所有表,适用对MyISAM引擎的表开始备份前,先锁定所有表。

优势

mysqldump的优势:

  1. 可以查看或者编辑十分方便,它也可以灵活性的恢复之前的数据。
  2. 不关心底层的存储引擎,既适用于支持事务的,也适用于不支持事务的表。
  3. 不过它不能作为一个快速备份大量的数据或可伸缩的解决方案。如果数据库过大,即使备份步骤需要的时间不算太久,但有可能恢复数据的速度也会非常慢,因为它涉及的SQL语句插入磁盘I/O,创建索引等等。 对于大规模的备份和恢复,更合适的做法是物理备份,复制其原始格式的数据文件,可以快速恢复。
恢复
shell> mysql -uroot -p123456   time1  < dump.sql

使用 source命令:

mysql> source dump.sql

如果文件是不包含CREATE DATABASEUSE语句的单数据库转储 ,请首先创建数据库(如有必要):

shell> mysqladmin create time1

然后在加载转储文件时指定数据库名称:

shell> mysql time1 < dump.sql

或者,在mysql中创建数据库,将其选为默认数据库,然后加载转储文件:

mysql> CREATE DATABASE IF NOT EXISTS time1;
mysql> USE time1;
mysql>source dump.sql

Example

shell> mysql --defaults-file=~/.mysql_user < /backup/2020-11-11-11-mysql-all.sql
### DCU 和 CPU 架构概述 DCU(Domain Control Unit)作为高性能计算的重要组部分,通过PCI-E总线连接到CPU处理器,形一个紧密协作的异构计算环境[^1]。此架构允许DCU作为一个相对独立的子系统存在,拥有自己的计算资源和存储层次结构。 #### 主要组件对比 - **CPU** - 中央处理单元(CPU),擅长于顺序逻辑运算以及复杂的控制流操作。 - 配备少量高速缓存(L1/L2 Cache)来减少访问主存的时间开销。 - **DCU** - 设计用于加速特定类型的密集型计算任务,特别是那些适合并行化的算法。 - 包含多个专用计算单元组的阵列,这些单元能够同时执行相似的操作。 - 提供更大容量但速度稍慢的一级/二级缓存系统,还有专门设计用来支持大规模数据交换需求的全局内存(global memory)。 #### 数据交互机制 两者之间通过DMA (Direct Memory Access)通道完高效的双向传输过程,在不需要占用过多CPU周期的情况下实现了快速的数据共享和服务请求传递功能。 ```mermaid graph LR; A[Host System with CPU] -->|PCI-E Bus| B(DCU Accelerator); subgraph Host System Details direction TB C((Main Memory))-.->D[(I/O Hub)] D -.-> E[Multi-core Processor] F[DMA Engine] -.-> G{Data Path} G --> H[L1 Cache] G --> I[L2 Cache] end subgraph DCU Internal Structure J[Global Memory] --> K(Thread Scheduler) L[Memory Controller] --> M[CUDA Cores Array] N[Level 1 Data Cache] --> O[Level 2 Shared Cache] end ``` 该图展示了典型的DCU与CPU之间的连接方式及其内部构要素。可以看到,除了基本的通信接口外,DCU还具备一套完整的本地存储体系和支持大量并发作业的能力,从而能够在不影响主机性能的前提下提供强大的辅助计算能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值