编辑
2025-10-30
服务器操作命令
00
请注意,本文编写于 76 天前,最后修改于 76 天前,其中某些信息可能已经过时。

目录

1、备份单个数据库
示例与实践:
方式1:密码在命令中(不安全,适用于脚本但需注意权限)
方式2:密码安全输入(推荐用于交互式命令行)
示例2:备份到指定目录,并包含时间戳
2. 备份整个MySQL实例(所有数据库)
安全输入密码方式
总结与对比
附:还原操作

1、备份单个数据库

基本命令格式:

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

参数解释:

-u:指定连接数据库的用户名(如 root)。

-p:接下来输入密码。注意:-p和密码之间不能有空格(虽然出于安全考虑,更推荐不直接在命令中写密码)。

[数据库名]:你要备份的数据库的名称,例如 my_app_db。

:输出重定向符,将 mysqldump 输出的 SQL 数据导回到指定的文件。

[备份文件路径]:生成的备份文件存放的路径,通常以 .sql 结尾。

示例与实践:

示例1:备份名为 myblog 的数据库到当前目录下的 myblog_backup.sql 文件

方式1:密码在命令中(不安全,适用于脚本但需注意权限)

mysqldump -u root -pYourPassword myblog > ./myblog_backup.sql

方式2:密码安全输入(推荐用于交互式命令行)

执行命令后,会提示你输入密码,这样密码不会留在历史记录中

mysqldump -u root -p myblog > ./myblog_backup.sql

示例2:备份到指定目录,并包含时间戳

在 Linux/macOS 下,可以使用 date 命令动态生成文件名:

mysqldump -u root -p myblog > /home/backups/myblog_$(date +%Y%m%d_%H%M%S).sql

这个命令会生成一个类似 myblog_20231025_143022.sql 的文件。

常用增强选项:

为了让备份更加实用和可靠,通常会增加一些选项:

mysqldump -u root -p --single-transaction --routines --triggers --events myblog > myblog_backup.sql

--single-transaction:在备份开始前,启动一个事务来确保数据的一致性。对于使用 InnoDB 存储引擎的表,这是首选的备份方式,它不会锁表。

--routines:同时备份存储过程和函数。

--triggers:同时备份触发器。

--events:同时备份事件调度器。

--add-drop-database:在 CREATE DATABASE 语句前加上 DROP DATABASE 语句。在还原时,如果库已存在,会先删除再创建。(在全库备份时更常用)

2. 备份整个MySQL实例(所有数据库)

当你需要迁移服务器或进行完整的灾难恢复时,需要备份所有数据库。

基本命令格式:

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

关键选项:

--all-databases:这个选项告诉 mysqldump 备份实例中的所有数据库,包括系统数据库(如 mysql, sys, information_schema 等,information_schema 是例外,它是一系列视图)。

示例与实践: 示例:备份整个MySQL实例

安全输入密码方式

mysqldump -u root -p --all-databases > ./full_mysql_backup.sql

完整的推荐命令:

对于生产环境的全量备份,建议使用如下命令:

mysqldump -u root -p --all-databases --single-transaction --routines --triggers --events --add-drop-database > /home/backups/full_backup_$(date +%Y%m%d).sql

--add-drop-database:在这里非常重要,它确保了还原时每个数据库都能被干净地重建。

总结与对比

特性 备份单个库 备份整个实例 命令核心 mysqldump -u user -p database_name mysqldump -u user -p --all-databases 用途 备份、迁移或还原单个应用数据库 完整的服务器迁移、灾难恢复 包含内容 指定库的表结构、数据、存储过程、触发器等 所有数据库、用户、权限(在 mysql 库中)等 还原注意 需要先创建或选择目标数据库 会还原整个实例状态,包括用户和权限

附:还原操作

知道如何备份,也必须知道如何还原。

还原单个数据库:

首先,确保目标数据库存在。如果不存在,需要先创建:

CREATE DATABASE myblog_restore;

然后使用 mysql 客户端进行还原:

mysql -u root -p myblog_restore < ./myblog_backup.sql

还原整个实例:

mysql -u root -p < ./full_mysql_backup.sql

这个操作会覆盖当前实例中的所有数据,请务必谨慎操作,并确保在测试环境验证。

安全建议

保护备份文件:备份文件包含了所有数据的明文信息,务必妥善保管,设置严格的访问权限。

避免密码在命令行中:在自动化脚本中如果必须使用密码,请使用配置文件(如 ~/.my.cnf)或环境变量,并确保相关文件权限为 600。

定期测试还原:备份的有效性只有通过成功的还原才能验证,请定期在测试环境进行还原演练。

本文作者:小白

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!