菜鸟科技网

MySQL命令行如何备份数据库?

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

MySQL命令行如何备份数据库?-图1
(图片来源网络,侵删)

基础备份命令

  1. 完整备份(含结构和数据)
    备份单个数据库:

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

    备份多个数据库:

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

    备份所有数据库:

    mysqldump -u用户名 -p密码 --all-databases > 备份文件.sql
  2. 仅备份结构或数据
    仅备份数据结构:

    MySQL命令行如何备份数据库?-图2
    (图片来源网络,侵删)
    mysqldump -u用户名 -p密码 -d 数据库名 > 结构文件.sql

    仅备份数据(无结构):

    mysqldump -u用户名 -p密码 -t 数据库名 > 数据文件.sql

高级备份选项

  1. 压缩备份
    使用gzip压缩减少文件体积:

    mysqldump -u用户名 -p密码 数据库名 | gzip > 备份文件.sql.gz
  2. 分表备份
    通过--tables指定表名:

    mysqldump -u用户名 -p密码 数据库名 表1 表2 > 分表备份.sql
  3. 排除特定表
    使用--ignore-table参数:

    MySQL命令行如何备份数据库?-图3
    (图片来源网络,侵删)
    mysqldump -u用户名 -p密码 数据库名 --ignore-table=数据库名.要排除的表 > 备份文件.sql
  4. 单事务备份(确保一致性)
    对于InnoDB引擎,使用--single-transaction避免锁表:

    mysqldump -u用户名 -p密码 --single-transaction 数据库名 > 一致性备份.sql

备份恢复操作

  1. 恢复完整数据库

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

    若目标数据库不存在,需先创建:

    mysql -u用户名 -p密码 -e "CREATE DATABASE 数据库名"
    mysql -u用户名 -p密码 数据库名 < 备份文件.sql
  2. 恢复部分数据
    仅恢复特定表:

    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配置文件存储凭据。

备份注意事项

  • 权限要求:执行备份的用户需具备SELECTLOCK 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密码 数据库名合并执行。

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