mysqldump

mysqldump 是 MySQL 数据库的逻辑备份工具,用于将数据库导出为 SQL 脚本文件。它是 MySQL 运维中最核心、最常用的备份命令之一。


核心作用

mysqldump -u 用户名 -p 数据库名 > 备份文件.sql

本质:把数据库中的表结构 + 数据转换成一条条的 SQL 语句(CREATE TABLEINSERT INTO),保存到文件中。


mysqldump vs mysql 对比

命令角色作用
mysql客户端连接数据库,执行 SQL 语句
mysqldump备份工具导出数据库为 SQL 文件
mysqladmin管理工具执行管理操作(如修改密码、查看状态)

基本用法

1. 备份单个数据库

# 备份 wordpress 数据库
mysqldump -u root -p wordpress > /backup/wordpress_$(date +%Y%m%d).sql

# 输入密码后,就会生成一个 SQL 文件

2. 备份多个数据库

# 备份多个指定数据库
mysqldump -u root -p --databases db1 db2 db3 > multi_db.sql

# 备份所有数据库
mysqldump -u root -p --all-databases > all_db.sql

3. 只备份表结构(不要数据)

mysqldump -u root -p -d wordpress > wordpress_structure.sql

4. 只备份数据(不要表结构)

mysqldump -u root -p --no-create-info wordpress > wordpress_data.sql

在 LNMP 环境中(比如是二进制安装的时候)

如果二进制部署的 MySQL 在 /usr/local/mysql/bin/,那么:

# 使用完整路径
/usr/local/mysql/bin/mysqldump -u root -p wordpress > /backup/wp_$(date +%Y%m%d).sql

# 或者先加到 PATH
export PATH=$PATH:/usr/local/mysql/bin
mysqldump -u root -p wordpress > /backup/wp.sql

高级用法

1. 压缩备份(节省空间)

mysqldump -u root -p wordpress | gzip > wordpress.sql.gz

# 恢复时
gunzip < wordpress.sql.gz | mysql -u root -p wordpress

2. 备份并记录二进制日志位置(用于主从复制)

mysqldump -u root -p --master-data=2 --all-databases > backup.sql
# --master-data=2 会在备份文件中记录 binlog 文件名和位置

3. 备份特定表

mysqldump -u root -p wordpress wp_posts wp_comments > posts_comments.sql

4. 远程备份

# 从远程服务器备份到本地
mysqldump -h 192.168.1.100 -u root -p wordpress > remote_backup.sql

备份与恢复完整示例

备份

# 1. 创建备份目录
mkdir -p /backup/mysql

# 2. 备份 wordpress 数据库(带日期)
mysqldump -u root -p wordpress > /backup/mysql/wordpress_$(date +%Y%m%d_%H%M%S).sql

# 3. 查看备份文件
ls -lh /backup/mysql/

恢复

# 方法1:恢复到原有数据库
mysql -u root -p wordpress < /backup/mysql/wordpress_20260307.sql

# 方法2:先创建空数据库再恢复
mysql -u root -p -e "CREATE DATABASE wordpress_new"
mysql -u root -p wordpress_new < /backup/mysql/wordpress_20260307.sql

注意事项

注意点说明
备份会锁表默认会锁表,影响写入。生产环境加 --single-transaction(InnoDB)
空间问题大数据库备份前确认磁盘空间足够
恢复前确认恢复会覆盖数据,先确认目标数据库是否正确
定期备份配合 crontab 实现自动备份

生产环境推荐写法

# InnoDB 表推荐用 --single-transaction,不锁表
mysqldump -u root -p --single-transaction --routines --events wordpress | gzip > wp_$(date +%Y%m%d).sql.gz

一句话总结

mysqldump 是 MySQL 的“拍照工具”,能把数据库拍成 SQL 照片(备份文件),需要时再把照片还原成数据库!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注