MySQL命令行备份数据库是数据库管理员和开发者常用的操作,主要通过mysqldump工具实现,该工具支持全量备份、增量备份(需结合二进制日志)和结构/数据分离备份等多种方式,以下是详细操作步骤及注意事项:

基础备份命令
完整备份(含结构和数据)
备份单个数据库:mysqldump -u用户名 -p密码 数据库名 > 备份文件.sql
备份多个数据库:
mysqldump -u用户名 -p密码 --databases 数据库1 数据库2 > 备份文件.sql
备份所有数据库:
mysqldump -u用户名 -p密码 --all-databases > 备份文件.sql
仅备份结构或数据
仅备份数据结构:
(图片来源网络,侵删)mysqldump -u用户名 -p密码 -d 数据库名 > 结构文件.sql
仅备份数据(无结构):
mysqldump -u用户名 -p密码 -t 数据库名 > 数据文件.sql
高级备份选项
压缩备份
使用gzip压缩减少文件体积:mysqldump -u用户名 -p密码 数据库名 | gzip > 备份文件.sql.gz
分表备份
通过--tables指定表名:mysqldump -u用户名 -p密码 数据库名 表1 表2 > 分表备份.sql
排除特定表
使用--ignore-table参数:
(图片来源网络,侵删)mysqldump -u用户名 -p密码 数据库名 --ignore-table=数据库名.要排除的表 > 备份文件.sql
单事务备份(确保一致性)
对于InnoDB引擎,使用--single-transaction避免锁表:mysqldump -u用户名 -p密码 --single-transaction 数据库名 > 一致性备份.sql
备份恢复操作
恢复完整数据库
mysql -u用户名 -p密码 数据库名 < 备份文件.sql
若目标数据库不存在,需先创建:
mysql -u用户名 -p密码 -e "CREATE DATABASE 数据库名" mysql -u用户名 -p密码 数据库名 < 备份文件.sql
恢复部分数据
仅恢复特定表:mysql -u用户名 -p密码 数据库名 < 备份文件.sql
自动化备份脚本示例
通过Linux crontab设置定时任务(每天凌晨2点备份):
0 2 * * * /usr/bin/mysqldump -u root -p'密码' 数据库名 | gzip /backup/mysql_$(date +\%Y\%m\%d).sql.gz
注意:密码直接写在脚本中存在安全风险,建议使用.my.cnf配置文件存储凭据。
备份注意事项
- 权限要求:执行备份的用户需具备
SELECT、LOCK TABLES(非InnoDB)等权限。 - 存储位置:备份文件需存储在非数据库服务器节点,防止服务器宕机数据丢失。
- 定期验证:需定期测试备份文件的可用性,确保恢复流程正常。
- 日志配合:增量备份需开启二进制日志(
log-bin),并通过mysqlbinlog工具解析。
相关问答FAQs
Q1: 如何备份远程MySQL数据库?
A1: 使用-h参数指定主机地址,
mysqldump -u用户名 -p密码 -h 192.168.1.100 数据库名 > 远程备份.sql
需确保目标数据库服务器允许远程连接,且防火墙放行3306端口。
Q2: 备份文件过大时如何分卷压缩?
A2: 使用split命令分割文件,
mysqldump -u用户名 -p密码 数据库名 | gzip | split -b 100M - 备份文件.sql.gz.
恢复时通过cat 备份文件.sql.gz.* | gunzip | mysql -u用户名 -p密码 数据库名合并执行。
文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/416908.html<
