讲师中心 微信公众号
AI工具推荐 视频效率加速

MySQL 8.0如何使用MySQL Shell备份实例

云强小哥_5570

云强小哥_5570

发布时间:2026-08-17 08:11:25

|

347人浏览过

|

来源于php中文网

原创

MySQL 8.0 官方推荐的实例级逻辑备份方式是 util.dumpInstance(),它支持并行、自动捕获 GTID 和 binlog 位置,需在 MySQL Shell 的 JavaScript/Python 模式下通过 X Protocol 连接执行,依赖 SELECT、BACKUP_ADMIN、RELOAD 等权限,目标路径须为空且 MySQL 进程有写权限,并默认启用 consistent 快照与 zstd 压缩。

mysql 8.0如何使用mysql shell备份实例

util.dumpInstance() 是 MySQL 8.0 官方推荐的实例级逻辑备份方式,比 mysqldump 更快、支持并行、能自动捕获 GTID 和 binlog 位置,适合中大型实例。但直接调用容易失败或产生意外结果,关键在于权限、路径、参数三者必须同时满足。

备份前必须确认的权限和连接方式

util.dumpInstance() 不是普通 SQL 命令,它依赖 AdminAPI,在 MySQL Shell 的 JavaScript 或 Python 模式下运行,且要求用户具备特定权限: - 必须有 SELECT、BACKUP_ADMIN、RELOAD、PROCESS、REPLICATION CLIENT 权限 - SUPER 在 8.0.21+ 已非必需,但部分旧部署仍需(尤其含 mysql.sys 视图时) - 连接必须使用 X Protocol(即 mysqlx:// 或 --mx),不能只用传统 TCP 连接(--sql 模式下会报错 “Operation not supported”)

常见错误现象:RuntimeError: Util.dumpInstance: Operation not supported 或 Access denied; you need (at least one of) the BACKUP_ADMIN privilege(s)

实操建议:

MySQL
MySQL

编写正确的MySQL查询,避免字符集、索引和锁方面的常见陷阱。

下载
  • 用 mysqlsh --uri mysqlx://root@localhost:33060 启动(端口默认 33060,不是 3306)
  • 执行 \connect 后再运行 util.dumpInstance(),避免在未认证状态下误操作
  • 权限授予语句必须显式包含 BACKUP_ADMIN: GRANT SELECT, BACKUP_ADMIN, RELOAD, PROCESS, REPLICATION CLIENT ON *.* TO 'backup_user'@'localhost';

util.dumpInstance() 的路径和目录约束

util.dumpInstance() 要求目标目录必须为空,且 MySQL 进程(不是当前 shell 用户)要有写权限。它不会创建父目录,也不会清空已有内容 —— 遇到非空目录直接报错退出。

常见错误现象:OSError: [Errno 39] Directory not empty 或 PermissionError: [Errno 13] Permission denied

实操建议:

  • 备份路径用绝对路径,如 /backup/mysql/full_20260811,不要用相对路径或 Windows 驱动器盘符(如 F:/backup 在 Linux 下无效)
  • 提前手动创建目录并赋权:mkdir -p /backup/mysql/full_20260811 && chown mysql:mysql /backup/mysql/full_20260811
  • 如果用 root 启动 MySQL,确保该目录对 mysql 用户可写;若用 systemd 管理,检查 mysql.service 中的 User= 设置

压缩、过滤与一致性控制参数怎么选

util.dumpInstance() 默认开启 compression: "zstd",但线上调试时建议先关压缩(compression: "none"),方便快速验证文件结构。真正上线必须开压缩,否则备份体积暴涨且恢复慢。

关键参数差异:

  • excludeSchemas: ["mysql", "sys", "information_schema"]:这三个库默认不备份,但 mysql 里含账号信息(@.users.sql),如需迁移账号,别 exclude
  • includeSchemas: ["app_db"]:只备份指定库,适合多租户环境隔离备份
  • consistent: true(默认):启用全局读锁 + GTID 快照,保证一致性;设为 false 仅适用于只读实例,否则数据可能不一致
  • threads: 4:默认值,大实例可调高(如 8),但超过 CPU 核数收益递减,还可能压垮 I/O

示例命令(带注释):

util.dumpInstance("/backup/mysql/full_20260811", {
  compression: "zstd",
  excludeSchemas: ["performance_schema"],
  consistent: true,
  threads: 6
})

备份后如何验证是否可用

util.dumpInstance() 成功后只输出日志,不校验文件完整性。真正风险点在恢复环节 —— 如果备份中途断电或磁盘满,@.done.json 可能没写入,但部分 .tsv 文件已生成,导致 util.loadDump() 报错或静默跳过表。

实操建议:

  • 检查 @.done.json 是否存在且非空:jq '.duration' /backup/mysql/full_20260811/@.done.json
  • 确认 sbtest@sbtest1.json 类元数据文件数量与实际表数一致(可用 find /backup/mysql/full_20260811 -name "*.json" | wc -l 粗略估算)
  • 抽样查看一个 .tsv 文件头几行:head -n 3 /backup/mysql/full_20260811/sbtest@sbtest1.tsv,确认是制表符分隔、无乱码
  • 不要跳过小规模恢复测试 —— 直接在测试实例上跑一次 util.loadDump(),比任何检查都可靠

真正容易被忽略的是:备份目录权限归属、BACKUP_ADMIN 权限是否实际生效、以及 @.done.json 的存在性 —— 这三项任一缺失,都会让备份在恢复时“看起来成功,实际丢数据”。

热门AI工具

更多
SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

相关专题

更多
mysql修改数据表名
mysql修改数据表名

MySQL修改数据表:1、首先查看数据库中所有的表,代码为:‘SHOW TABLES;’;2、修改表名,代码为:‘ALTER TABLE 旧表名 RENAME [TO] 新表名;’。php中文网还提供MySQL的相关下载、相关课程等内容,供大家免费下载使用。

1993

2023.06.20

MySQL创建存储过程
MySQL创建存储过程

存储程序可以分为存储过程和函数,MySQL中创建存储过程和函数使用的语句分别为CREATE PROCEDURE和CREATE FUNCTION。使用CALL语句调用存储过程智能用输出变量返回值。函数可以从语句外调用(通过引用函数名),也能返回标量值。存储过程也可以调用其他存储过程。php中文网还提供MySQL创建存储过程的相关下载、相关课程等内容,供大家免费下载使用。

1219

2023.06.21

mongodb和mysql的区别
mongodb和mysql的区别

mongodb和mysql的区别:1、数据模型;2、查询语言;3、扩展性和性能;4、可靠性。本专题为大家提供mongodb和mysql的区别的相关的文章、下载、课程内容,供大家免费下载体验。

715

2023.07.18

mysql密码忘了怎么查看
mysql密码忘了怎么查看

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql密码忘了怎么办呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2612

2023.07.19

mysql创建数据库
mysql创建数据库

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql怎么创建数据库呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

4308

2023.07.25

mysql默认事务隔离级别
mysql默认事务隔离级别

MySQL是一种广泛使用的关系型数据库管理系统,它支持事务处理。事务是一组数据库操作,它们作为一个逻辑单元被一起执行。为了保证事务的一致性和隔离性,MySQL提供了不同的事务隔离级别。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

1019

2023.08.08

sqlserver和mysql区别
sqlserver和mysql区别

SQL Server和MySQL是两种广泛使用的关系型数据库管理系统。它们具有相似的功能和用途,但在某些方面存在一些显著的区别。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

4551

2023.08.11

mysql忘记密码
mysql忘记密码

MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。那么忘记mysql密码我们该怎么解决呢?php中文网给大家带来了相关的教程以及其他关于mysql的文章,欢迎大家前来学习阅读。

4102

2023.08.14

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

120

2026.09.23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL vs MySQL
PostgreSQL vs MySQL

共1课时 | 176人学习

使用phpenv集成环境安装极致CMS
使用phpenv集成环境安装极致CMS

共2课时 | 279人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn