菜鸟科技网

Linux备份MySQL数据库命令有哪些?

在Linux系统中备份MySQL数据库是日常运维中至关重要的任务,通过合理的备份策略可以有效防止数据丢失,以下是常用的MySQL数据库备份命令及相关操作方法的详细介绍。

Linux备份MySQL数据库命令有哪些?-图1
(图片来源网络,侵删)

使用mysqldump命令进行逻辑备份

mysqldump是MySQL自带的逻辑备份工具,能够将数据库结构和数据导出为SQL文件,适合中小型数据库的备份操作。

备份单个数据库

mysqldump -u [用户名] -p[密码] [数据库名] > [备份文件路径].sql

备份名为testdb的数据库到/backup/testdb_backup.sql

mysqldump -u root -ptest123 testdb > /backup/testdb_backup.sql

注意:-p后直接跟密码时不能有空格,建议通过交互式输入密码更安全(去掉密码参数,执行后输入密码)。

备份多个数据库

mysqldump -u [用户名] -p[密码] --databases [数据库1] [数据库2] > [备份文件路径].sql

例如同时备份db1db2

Linux备份MySQL数据库命令有哪些?-图2
(图片来源网络,侵删)
mysqldump -u root -p --databases db1 db2 > /backup/multi_db_backup.sql

备份所有数据库

mysqldump -u [用户名] -p[密码] --all-databases > [备份文件路径].sql

只备份数据库结构(不包含数据)

mysqldump -u [用户名] -p[密码] --no-data [数据库名] > [备份文件路径].sql

只备份数据(不包含结构)

mysqldump -u [用户名] -p[密码] --no-create-info [数据库名] > [备份文件路径].sql

使用mysqlhotcopy进行快速备份

mysqlhotcopy适用于MyISAM引擎的数据库,通过锁定表并直接复制数据文件实现快速备份,但需安装DBI和DBD-mysql模块:

mysqlhotcopy -u [用户名] -p[密码] [数据库名] /backup/directory

使用mysqldump进行压缩备份

为节省存储空间,可通过管道将备份文件直接压缩:

mysqldump -u [用户名] -p[密码] [数据库名] | gzip > /backup/[数据库名].sql.gz

定时备份脚本示例

通过crab设置定时任务,实现每日自动备份:

#!/bin/bash
DATE=$(date +%Y%m%d)
BACKUP_DIR="/backup"
MYSQL_USER="root"
MYSQL_PASSWORD="test123"
# 备份单个数据库并压缩
mysqldump -u $MYSQL_USER -p$MYSQL_PASSWORD testdb | gzip > $BACKUP_DIR/testdb_$DATE.sql.gz
# 删除7天前的备份文件
find $BACKUP_DIR -name "testdb_*.sql.gz" -mtime +7 -exec rm {} \;

将脚本保存为/backup/mysql_backup.sh,添加执行权限后,通过crontab -e添加定时任务:

Linux备份MySQL数据库命令有哪些?-图3
(图片来源网络,侵删)
0 2 * * * /backup/mysql_backup.sh

备份恢复命令

恢复SQL文件:

mysql -u [用户名] -p[密码] [数据库名] < [备份文件路径].sql

恢复压缩文件:

gunzip < [备份文件路径].sql.gz | mysql -u [用户名] -p[密码] [数据库名]

备份参数说明表

参数 说明
-u 指定MySQL用户名
-p 指定密码(建议交互式输入)
--databases 备份多个数据库
--all-databases 备份所有数据库
--no-data 只导出结构
--no-create-info 只导出数据
--single-transaction 适用于InnoDB引擎,避免锁表
--master-data=2 记录binlog位置,用于主从复制恢复

相关问答FAQs

Q1: 如何确保备份文件的安全性?
A1: 可通过以下方式增强安全性:

  1. 设置文件权限为600(仅所有者可读写):chmod 600 [备份文件]
  2. 加密备份文件:使用gpg加密后存储,如mysqldump ... | gpg -c > backup.sql.gz.gpg
  3. 将备份文件存储到异地服务器或云存储,避免与主服务器同时故障。

Q2: 备份时如何避免锁表影响业务?
A2: 对于InnoDB引擎,可使用--single-transaction参数实现热备份,该参数通过事务快照避免锁表:

mysqldump -u root -p --single-transaction testdb > /backup/testdb.sql

对于MyISAM引擎,需在业务低峰期执行备份,或使用--lock-tables=false(但可能导致数据不一致,需谨慎)。

分享:
扫描分享到社交APP
上一篇
下一篇