MYSQL-逻辑备份(mysqldump)

28 阅读3分钟

作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

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

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)

备份单个库

mysqldump -u username -p database_name > backup.sql

备份所有库

mysqldump -u username -p --all-databases > all_backup.sql

备份单个表

mysqldump -u username -p database_name table1 table2 > tables_backup.sql

备份表结构(不含数据)

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

备份数据(不含表结构)

# 备份单个数据库的数据
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

还原数据

#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

备份所有数据库

运维小路

一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!

关注微信公众号《运维小路》获取更多内容。