有 mysqldump 为什么还需要 MySQL Enterprise Backup
随着企业业务的不断拓展,数据库中的数据量呈爆炸式增长。对于海量数据(如TB级别的数据),传统的备份工具可能无法在合理的时间内完成备份任务。同时,业务的复杂性也意味着数据结构更加复杂多样,包括各种事务型数据、分析型数据等。在这种情况下,需要一种高效、可靠的备份解决方案来确保数据的安全性和完整性。
MySQL Enterprise Backup 8.4 是什么
MySQL Enterprise Backup 8.4 (以下简称 MEB)是一款功能强大的企业级物理热备份工具。支持在线热备份、增量备份与恢复、备份压缩与加密、灵活的备份范围配置(如表级、数据库级)、多种备份类型(包括全量、增量、差异备份)、云原生存储支持(如对接 OCI、Amazon S3 等云存储)、智能恢复(如时间点恢复、表级恢复)、并行处理以提升备份恢复速度、详尽的监控与报告功能以及良好的兼容性(优化支持 InnoDB 表及其他存储引擎表)。它能有效保障数据库在备份与恢复过程中的高效性、安全性和可靠性,满足企业对数据安全、业务连续性及合规性的严格要求。

相对于 MEB 8.0,8.4 有如下变化
由于 keyring_file 和 keyring_encrypted_file 插件已从 MySQL Enterprise Server 8.4.0 中删除,因此,当使用任何密钥环插件恢复服务器的加密 InnoDB 表的备份时,服务器现在将以 component_keyring_encrypted_file 启动,除非在恢复的服务器上执行了密钥环迁移。
MySQL Enterprise Backup 与 mysqldump 对比
我们从三个角度来剖析 MEB 比 mysqldump 的优势。
性能方面
MySQL Enterprise Backup:它是一种物理备份工具,直接备份数据库的数据文件。这种备份方式速度非常快,因为它以块为单位读取数据文件,能够快速地复制大量数据。例如,对于一个包含大量 InnoDB 表的数据库,它可以直接备份 InnoDB 的数据文件(如 ibdata1 等),而不需要逐行读取和解析数据。恢复时直接将备份的数据文件复制到数据库目录中即可。例如,在恢复一个全量备份时,它只需将备份的数据文件解压并放到合适的位置,然后进行一些必要的日志应用操作,就可以使数据库恢复正常运行。
mysqldump:它是一种逻辑备份工具,通过执行 SQL 查询语句来导出数据库的结构和数据。对于大型数据库来说,这个过程会比较耗时,因为它需要逐行读取数据,并且还会受到查询性能的限制。例如,当备份一个包含数百万行数据的表时,mysqldump 可能会花费数小时甚至数天的时间来完成备份。恢复过程需要执行大量的 SQL 插入操作来重建数据库。这在数据量较大的情况下,会因为每个插入操作都需要进行事务处理、索引维护等操作而花费很长时间。
可靠性方面
MySQL Enterprise Backup:提供了备份验证功能,可以在备份完成后自动验证备份数据的完整性和一致性。这有助于及时发现备份过程中可能出现的问题,如数据损坏、备份不完整等。在恢复时,它也能更可靠地将数据库恢复到一个一致的状态。
mysqldump:虽然可以通过重新导入备份文件来验证备份是否成功,但这并不能完全保证备份数据的一致性和完整性。在恢复时,如果备份文件存在错误或者数据不一致,可能会导致恢复失败或者数据库处于不一致的状态。
备份功能
MySQL Enterprise Backup:支持多种备份类型,包括全量备份、增量备份和差异备份。全量备份可以完整地备份数据库的所有数据文件;增量备份只备份自上次备份以来发生更改的数据部分,这对于频繁备份的场景非常有用,因为它可以减少备份所需的时间和存储空间;差异备份则备份自上一次全量备份以来所有更改的数据。MEB 提供了一些高级功能,如备份加密和压缩。加密功能可以保护备份数据的安全,防止数据泄露;压缩功能可以减少备份文件的大小,节省存储空间。此外,它还支持并行备份,可以利用多线程来提高备份性能。
mysqldump:主要进行逻辑备份,一般是全量备份数据库的结构和数据。不支持增量备份。mysqldump 虽然也可以对备份文件进行加密和压缩,但这通常需要借助外部工具(如 gpg、gzip 等)。并且它不支持并行备份,备份过程是单线程的,这在备份大型数据库时效率较低。
综上所述,MEB 的优势远超 mysqldump,如果有条件,尽量选择 MEB。
MySQL Enterprise Backup 8.4 的使用
创建备份用户
创建一个备份专用用户,如 mysqlbackup,并授予其相应的权限。
CREATE USER 'mysqlbackup'@'localhost' IDENTIFIED BY 'password';
GRANT SELECT, BACKUP_ADMIN, RELOAD, PROCESS, SUPER, REPLICATION CLIENT ON *.* TO `mysqlbackup`@`localhost`;
GRANT CREATE, INSERT, DROP, UPDATE ON mysql.backup_progress TO 'mysqlbackup'@'localhost';
GRANT CREATE, INSERT, DROP, UPDATE, SELECT, ALTER ON mysql.backup_history TO 'mysqlbackup'@'localhost';
mysqlbackup 客户端
MEB 使用 mysqlbackup 客户端进行备份和恢复数据。
查看 mysqlbackup 帮助信息。
bash-5.1# mysqlbackup --help | head -n 20
MySQL Enterprise Backup Ver 8.4.4-commercial for Linux on x86_64 (MySQL Enterprise - Commercial)
Copyright (c) 2003, 2025, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Usage:
mysqlbackup [STD-OPTIONS]
[CONNECTION-OPTIONS]
[SERVER-REPOSITORY-OPTIONS]
[BACKUP-REPOSITORY-OPTIONS]
[PARALLELIZATION-OPTIONS]
[ENCRYPTION-OPTIONS]
[OPTIMISTIC-BACKUP-OPTIONS]
全量备份
使用命令如下进行全量备份。
mysqlbackup --user=mysqlbackup --password=password --socket=/var/lib/mysql/mysql.sock --backup-image=my_full_bak.mbi --backup-dir=/tmp --show-progress --compress --with-timestamp backup-to-image
常用参数含义:
–user、–password、–socket 分别指定备份用户的用户名、密码和套接字文件路径
–backup-image 指定备份镜像文件名
–backup-dir 指定备份目录
–show-progress 显示备份进度
–compress 启用压缩
–with-timestamp 在备份文件名中包含时间戳
输出如下:
MySQL Enterprise Backup Ver 8.4.4-commercial for Linux on x86_64 (MySQL Enterprise - Commercial)
Copyright (c) 2003, 2025, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Starting with following command line ...
mysqlbackup
--user=mysqlbackup
--password=xxxxxxxx
--socket=/var/lib/mysql/mysql.sock
--backup-image=my_full_bak.mbi
--backup-dir=/tmp
--show-progress
--compress
--with-timestamp
backup-to-image
IMPORTANT: Please check that mysqlbackup run completes successfully.
At the end of a successful 'backup-to-image' run mysqlbackup
prints "mysqlbackup completed OK!".
250316 08:05:57 MAIN INFO: Establishing connection to server.
250316 08:05:57 MAIN INFO: No SSL options specified.
250316 08:05:57 MAIN INFO: MySQL server version is '8.4.4-commercial'
250316 08:05:57 MAIN INFO: MySQL server compile os version is 'Linux'
250316 08:05:57 MAIN INFO: Got some server configuration information from running server.
250316 08:05:57 MAIN INFO: Establishing connection to server for locking.
250316 08:05:57 MAIN INFO: No SSL options specified.
250316 08:05:57 MAIN INFO: Backup directory created: '/tmp/2025-03-16_08-05-57'
250316 08:05:57 MAIN INFO: MySQL server version_comment is 'MySQL Enterprise Server - Commercial'
...
250316 08:05:59 MAIN INFO: Compress Image Backup operation completed successfully.
250316 08:05:59 MAIN INFO: Image Path = /tmp/2025-03-16_08-05-57/my_full_bak.mbi
250316 08:05:59 MAIN INFO: MySQL binlog position: filename binlog.000003, position 1323.
-------------------------------------------------------------
Parameters Summary
-------------------------------------------------------------
Start LSN : 29611008
Last Checkpoint LSN : 29701923
End LSN : 29708609
-------------------------------------------------------------
mysqlbackup completed OK!
增量备份
MEB 支持基于从某个 LSN 开始备份,也可以基于上一个备份镜像做增量备份。
找到上次备份编号 END LSN 的方法:可以从备份日志中查询,或者在数据库里查看备份历史记录。
mysql> SELECT end_lsn FROM mysql.backup_history WHERE exit_state = 'SUCCESS';
+----------+
| end_lsn |
+----------+
| 29708609 |
+----------+
1 row in set (0.00 sec)
基于上一个备份镜像进行增量备份。
使用 --incremental-base 选项,你不必跟踪一次备份和下一次备份之间的 LSN 值。相反,你可以使用以下方法之一:
使用 --incremental-base=history:last_backup 或 history:last_full_backup,告诉 mysqlbackup 查询上一次成功的非 TTS 备份的 end_lsn 值。
mysqlbackup --user=mysqlbackup --password=password --socket=/var/lib/mysql/mysql.sock \
--incremental --incremental-base=history:last_backup \
--backup-dir=/tmp/inc1 --backup-image=incremental_image1.bi \
backup-to-image
备份输出如下:
MySQL Enterprise Backup Ver 8.4.4-commercial for Linux on x86_64 (MySQL Enterprise - Commercial)
Copyright (c) 2003, 2025, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Starting with following command line ...
mysqlbackup
--user=mysqlbackup
--password=xxxxxxxx
--socket=/var/lib/mysql/mysql.sock
--incremental
--incremental-base=history:last_backup
--backup-dir=/tmp/inc1
--backup-image=incremental_image1.bi
backup-to-image
IMPORTANT: Please check that mysqlbackup run completes successfully.
At the end of a successful 'backup-to-image' run mysqlbackup
prints "mysqlbackup completed OK!".
250316 08:17:36 MAIN INFO: Establishing connection to server.
250316 08:17:36 MAIN INFO: No SSL options specified.
250316 08:17:36 MAIN INFO: MySQL server version is '8.4.4-commercial'
250316 08:17:36 MAIN INFO: MySQL server compile os version is 'Linux'
250316 08:17:36 MAIN INFO: Got some server configuration information from running server.
...
250316 08:17:36 RDR1 INFO: Writing server defaults files 'server-my.cnf' and 'server-all.cnf' for server '8.4.4-commercial' in '/tmp/inc1'.
250316 08:17:36 RDR1 INFO: Copying meta file /tmp/inc1/meta/backup_variables.txt.
250316 08:17:36 RDR1 INFO: Copying meta file /tmp/inc1/datadir/ibbackup_logfile.
250316 08:17:36 RDR1 INFO: Copying meta file /tmp/inc1/server-all.cnf.
250316 08:17:36 RDR1 INFO: Copying meta file /tmp/inc1/server-my.cnf.
250316 08:17:36 RDR1 INFO: Copying meta file /tmp/inc1/datadir/ibbackup_ibd_files.
250316 08:17:36 RDR1 INFO: Copying meta file /tmp/inc1/meta/backup_content.xml.
250316 08:17:36 RDR1 INFO: Copying meta file /tmp/inc1/meta/image_files.xml.
250316 08:17:36 MAIN INFO: Incremental Image Backup operation completed successfully.
250316 08:17:36 MAIN INFO: Backup image created successfully.
250316 08:17:36 MAIN INFO: Image Path = /tmp/inc1/incremental_image1.bi
250316 08:17:36 MAIN INFO: Backup contains changes from lsn 29708610 to lsn 29879497.
250316 08:17:36 MAIN INFO: MySQL binlog position: filename binlog.000003, position 1925.
-------------------------------------------------------------
Parameters Summary
-------------------------------------------------------------
Start LSN : 29708610
Last Checkpoint LSN : 29878489
End LSN : 29879497
-------------------------------------------------------------
mysqlbackup completed OK!
备份完成。
总结
本节内容介绍了什么是 MySQL Enterprise Backup,及其与 mysqldump 的对比。并演示如何使用 MEB,接下来,我们还可以借助操作系统的定时系统 crontab 定时对数据库进行备份。MEB 还有很多用法,我们后面继续介绍。
Have a nice day ~ ☕
🌻 往期精彩 ▼
- 错过一个亿,MySQL免费认证页面下架了
- MySQL 30 周年庆!MySQL 8.4 认证免费考!这次是认真的。。。
- 卷疯了!众数据库厂商的征文汇
- TiDB社区&墨天轮 | 专栏征文大赛全面开启,期待您分享TiDB业务实战和运维开发那些事儿
- 「合集」三年 50 篇,TiDB 干货全收录
- 「合集」MySQL 8.x 系列文章汇总
- TiDB 新朋友 DBdoctor
- Oracle 数据库全面升级为 23ai
- 广东的崖山,中国的崖山数据库
- TiDB v8 发版!超硬核 v8 引擎!
- 几张图带你了解 TiDB 架构演进
- 一文带你了解 KING BASE 金仓数据库
- 全球 Oracle ACE 社区突破 500 位成员
- 如何选择适合的 MySQL Connector/J 版本
- 即将告别 PG 12,建议升级到 PG 16.3 版本
- G-Star Landscape 2.0 重磅发布,助力开源生态再升级
- 【一文讲透(番外篇)】如何编译安装KWDB v2.0.4数据库
- TiDB x DeepSeek 打造更好用的国产知识库问答系统解决方案
– / END / –
👉 这里可以找到我
👉 这里有得聊
如果对国产基础软件(操作系统、数据库、中间件)感兴趣,可以加群一起聊聊。
关注微信公众号:少安事务所,后台回复[群],即可看到入口。
如果这篇文章为你带来了灵感或启发,请帮忙『三连』吧,感谢!ღ( ´・ᴗ・` )~




