首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >MYSQL-逻辑备份(mysqldump)

MYSQL-逻辑备份(mysqldump)

作者头像
运维小路
发布2026-01-26 11:48:30
发布2026-01-26 11:48:30
1050
举报
文章被收录于专栏:运维小路运维小路

作者介绍:简历上没有一个精通的运维工程师,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

数据库是一个系统(应用)最重要的资产之一,所以我们的数据库将从以下几个数据库来进行介绍。

MySQL(本章节)

PostgreSQL

MongoDB

Redis

Etcd

我们前面讲到的MYSQL的Binlog的时候,已经进行了备份及还原(当时采用的就是逻辑备份)。

1. 什么是逻辑备份?

逻辑备份是将数据库中的结构(CREATE DATABASE/TABLE)和数据(INSERT STATEMENT)以 SQL 语句的形式导出到一个文本文件中。恢复时,MySQL 会执行这些 SQL 语句来重建数据库。

核心特点:

  • 格式:通常是 .sql 文件,人类可读。
  • 内容:包含 CREATE 和 INSERT 等 SQL 语句。
  • 恢复:通过 MySQL 客户端(如 mysql 命令)导入执行。
  • 优点:兼容性好,可以在不同硬件架构、不同 MySQL 版本之间迁移和恢复,甚至可以导入到其他数据库(如 MariaDB)。备份粒度可以很细(单表、单库)。
  • 缺点:备份和恢复速度相对较慢(因为要执行 SQL),对于超大型数据库可能不适用。

2.逻辑备份操作(mysqldump)

备份单个库

代码语言:javascript
复制
mysqldump -u username -p database_name > backup.sql

备份所有库

代码语言:javascript
复制
mysqldump -u username -p --all-databases > all_backup.sql

备份单个表

代码语言:javascript
复制
mysqldump -u username -p database_name table1 table2 > tables_backup.sql

备份表结构(不含数据)

代码语言:javascript
复制
# 备份单个数据库的表结构
mysqldump -u username -p --no-data database_name > database_structure.sql

# 备份所有数据库的表结构
mysqldump -u username -p --no-data --all-databases > all_databases_structure.sql

备份数据(不含表结构)

代码语言:javascript
复制
# 备份单个数据库的数据
mysqldump -u username -p --no-create-info database_name > database_data.sql

# 备份所有数据库的数据
mysqldump -u username -p --no-create-info --all-databases > all_databases_data.sql

# 备份特定表的数据
mysqldump -u username -p --no-create-info database_name table1 table2 > tables_data.sql

还原数据

代码语言:javascript
复制
#Linux命令还原
mysql -u username -p database_name < backup.sql

#mysql命令还原 
-- 选择数据库
USE database_name;

-- 执行备份文件
SOURCE /path/to/backup.sql;

注意,默认情况下还原的时候会删除原来的数据,如果你打开备份的sql文件可以看到类似的内容。

3.备份参数

选项

介绍

-u username

指定连接数据库的用户名

-p

提示输入密码

--host=hostname 或 -h hostname

指定 MySQL 服务器地址

--port=port

指定端口(默认 3306)

--single-transaction

对 InnoDB 表进行一致性备份,不锁表(推荐)

--routines 或 -R

备份存储过程和函数

--triggers

备份触发器(默认开启)

--events

备份事件调度器

--hex-blob

将 BINARY、VARBINARY 和 BLOB 列安全地转储为十六进制字符串

--lock-tables

备份时锁定所有表(MyISAM 需要,InnoDB 不推荐)

--master-data=2

记录二进制日志位置和文件名,用于搭建从库(值为2表示注释掉CHANGE MASTER语句)

--databases

备份指定的一个或多个数据库(包含 CREATE DATABASE 语句)

--all-databases

备份所有数据库

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-10-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维小路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • MongoDB
    • 1. 什么是逻辑备份?
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档