news 2026/8/18 15:17:01

GreatSQL Clone在线备份恢复:热备+增量+压缩全攻略

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
GreatSQL Clone在线备份恢复:热备+增量+压缩全攻略

GreatSQL Clone在线备份恢复:热备+增量+压缩全攻略

【免费下载链接】GreatSQLGreatSQL是一款开源免费数据库,可在普通硬件上满足金融级应用场景,具有高可用、高性能、高兼容、高安全等特性,可作为MySQL或Percona Server for MySQL的理想可选替换。项目地址: https://gitcode.com/GreatSQL/GreatSQL

作为一款开源免费数据库,GreatSQL 的Clone 在线备份恢复能力堪称 DBA 的"救场神器":无需停服即可完成全量热备,支持基于页面跟踪的增量备份,还能在传输与落盘两个层面压缩数据,把备份对生产环境的影响降到最低。无论你是要把 GreatSQL 快速拉起一个从库,还是构建一套"热备+增量+压缩"的完整备份恢复方案,Clone 插件都能用几条 SQL 搞定。

一、什么是 GreatSQL Clone 在线备份恢复

Clone 是 GreatSQL 内置的备份恢复插件,核心原理是"在本地或远程实例之间,复制一份物理数据快照"。它的最大价值在于在线——克隆过程中源实例(Donor)可以持续对外提供服务,业务零感知,彻底告别传统mysqldump逻辑备份耗时长、锁表严重的痛点。

它的三大招牌能力正是你需要的:

能力说明典型场景
🖥️ 热备份在线全量克隆,不锁业务日常全量备份、快速扩容只读实例
➕ 增量备份PAGE TRACK页面跟踪,只拷贝变化数据周期性增量备份,节省时间与空间
📦 压缩备份网络层 + 文件层双重压缩跨机房传输、长期归档,大幅降低带宽与磁盘成本

Clone 插件的实现代码全部开源,核心逻辑在 plugin/clone/ 目录,数据压缩相关实现在 sql/clone_compress.cc,参数定义见 plugin/clone/src/clone_plugin.cc。

二、一键安装 Clone 插件

克隆前先装上插件,一条 SQL 即可:

INSTALL PLUGIN clone SONAME 'mysql_clone.so';

安装后可用SHOW PLUGINS;确认状态,并查看克隆历史表:

SHOW PLUGINS; -- 确认 clone 插件已 ACTIVE SELECT * FROM mysql.clone_history; -- 克隆历史记录 SELECT * FROM performance_schema.clone_status; -- 当前克隆状态 SELECT * FROM performance_schema.clone_progress; -- 克隆进度明细

💡 提示:mysql.clone_history保存每次克隆的任务结果,是排查克隆失败原因的"第一现场"。

三、热备第一步:本地全量备份的最快方法

本地克隆无需网络,是备份到本机磁盘的最快全量热备方式,一条语句完成:

CLONE LOCAL DATA DIRECTORY = '/data/backup/clone_full';

执行后,源实例会在线生成一份完整的物理数据目录快照,业务读写不受影响。之后可以把该目录直接作为新实例的数据目录启动,或者继续做增量克隆的基础快照。

对应核心流程可参考源码 plugin/clone/src/clone_local.cc 中的plugin_clone_local实现。

四、增量备份:PAGE TRACK 页面跟踪增量克隆

全量备份之后,数据每天都在变。如果每次都重新全量克隆,既费时间又费带宽。GreatSQL 的增量克隆方案基于PAGE TRACK(页面跟踪)机制,只需在全量克隆时开启页面跟踪,之后就能精准克隆出"上次备份以来发生变化的数据页"。

开启页面跟踪的全量备份

CLONE LOCAL DATA DIRECTORY = '/data/backup/clone_base' ENABLE PAGE TRACK;

基于跟踪页面的增量克隆

CLONE LOCAL DATA DIRECTORY = '/data/backup/clone_incr' ENABLE PAGE TRACK;

增量克隆会读取页面跟踪日志,只把变更过的数据页拷贝到新目录,数据量通常只有全量的百分之几到十几,备份窗口大幅缩短。

✅ 组合策略推荐:每周一次开启 PAGE TRACK 的全量备份 + 每天一次增量克隆,再配合定期清理过期备份目录,就是一套性价比极高的"热备+增量"备份体系。

增量备份的页面跟踪逻辑在 plugin/clone/src/clone_client.cc 与 plugin/clone/src/clone_local.cc 中实现,感兴趣可深入研读。

五、远程在线备份:一条 SQL 拉出新实例

要快速搭建从库、构建高可用集群或迁移实例,用远程克隆一步到位:

CLONE INSTANCE FROM 'backup_user'@'192.168.1.10':3306 IDENTIFIED BY 'backup_pass' DATA DIRECTORY = '/data/mysql_clone/data';

克隆完成后,GreatSQL 会自动重启实例并加载克隆数据,一个可用的新实例即"复制粘贴"完成,整个过程业务无感知。远程克隆的协调逻辑在 plugin/clone/src/clone_server.cc 中。

远程克隆的安全加固

  • 仅允许可信 Donor:设置clone_valid_donor_list白名单,防止从陌生地址克隆数据:
SET GLOBAL clone_valid_donor_list = '192.168.1.10:3306,192.168.1.11:3306';
  • 启用加密传输:通过clone_ssl_keyclone_ssl_cert配置 SSL 证书,克隆流量全程加密。
  • 恢复前校验一致性:performance_schema.clone_statusclone_progress可实时监控克隆进度与状态。

六、压缩全攻略:网络压缩 + 文件压缩怎么选

备份文件动辄几十上百 GB,压缩是省带宽、省磁盘的关键。GreatSQL Clone 提供了两层独立压缩,可按需组合:

网络层压缩(传输中压缩)

控制数据在网络传输过程中的压缩,适合跨机房、跨地域备份:

SET GLOBAL clone_enable_compression = ON; -- 开启网络压缩 SET GLOBAL clone_compression_algorithm = 'ZSTD'; -- 算法:ZSTD(默认)/ ZLIB SET GLOBAL clone_zstd_compression_level = 3; -- ZSTD 压缩级别 1~10,默认 3

文件层压缩(落盘压缩)

在文件写入备份目录时压缩,备份文件直接以压缩格式落盘,归档更省空间:

SET GLOBAL clone_file_compress = 'CLONE_FILE_COMPRESS_ZSTD'; -- NONE/LZ4/ZSTD SET GLOBAL clone_file_compress_threads = 4; -- 并行压缩线程,默认 4 SET GLOBAL clone_file_compress_zstd_level = 1; -- ZSTD 级别 1~19,默认 1

选型建议

  • 🚀 追求极致速度、磁盘充足:文件层选LZ4,压缩快、CPU 开销小;
  • 🎯 追求高压缩比、网络带宽紧张:文件层选ZSTD,并适当调高级别;
  • 🔗 只做跨机房传输、不在本地留备份:只开clone_enable_compression即可。

💡 实测思路参考:官方测试用例 mysql-test/suite/clone/r/clone_compress.result 覆盖了"本地增量 + ZSTD 压缩克隆"的完整流程,可作为你验证压缩效果的最佳脚本。

七、性能调优:让克隆跑得更快更稳

克隆默认参数已足够稳健,但在大实例上合理调优收益明显,常用参数如下:

参数默认值建议作用
clone_buffer_size4M32M~128M数据传输缓冲区,越大磁盘 IO 并行度越高
clone_max_concurrency816~32最大并发线程数,适合多核高 IO 机器
clone_autotune_concurrencyON保持 ON自动调节并发,避免压垮系统
clone_max_network_bandwidth0(不限)按需设置 MiB/s限制网络带宽,保护业务流量
clone_max_data_bandwidth0(不限)按需设置 MiB/s限制磁盘 IO 带宽,避免影响在线业务
clone_block_ddlOFF按需开启克隆期间是否阻塞 DDL,配合clone_ddl_timeout使用

例如,一个 500G 的实例想要"快而稳"地克隆,可以这样配置:

SET GLOBAL clone_buffer_size = 64 * 1024 * 1024; -- 64M 缓冲区 SET GLOBAL clone_max_concurrency = 16; -- 16 个并发线程 SET GLOBAL clone_max_network_bandwidth = 200; -- 限速 200 MiB/s

这些参数在 plugin/clone/src/clone_plugin.cc 中定义,最大并发支持到 128 线程,弹性十足。

八、恢复实战:克隆数据如何找回

克隆数据恢复的核心是让新实例追平到源实例的最新状态。GreatSQL 支持两种恢复模式,通过clone_data_recovery_mode切换:

SET GLOBAL clone_data_recovery_mode = 'CLONE_DATA_RECOVERY_GTID'; -- 按 GTID 追平(默认) SET GLOBAL clone_data_recovery_mode = 'CLONE_DATA_RECOVERY_BINLOG_POSITION'; -- 按 binlog 位点追平
  • GTID 模式:主从环境首选,克隆后自动从 GTID 集合继续同步,简单可靠;
  • binlog 位点模式:适合未开启 GTID 的传统主从架构。

远程克隆完成后实例会自动恢复并重启;本地克隆目录则可通过将其作为新实例的datadir启动来完成"恢复",配合 binlog 继续追平最新数据。

九、总结:一套方案覆盖全部备份场景

GreatSQL Clone 在线备份恢复,用四条 SQL 就能覆盖最核心的备份诉求:

  1. 全量热备CLONE LOCAL在线快照,业务零停机;
  2. 增量备份ENABLE PAGE TRACK页面级增量,备份又快又省;
  3. 远程克隆CLONE INSTANCE FROM秒建新实例,扩从库、搭集群利器;
  4. 压缩归档:网络层 + 文件层双重压缩,带宽磁盘成本双降。

对于追求"高可用、高性能、高安全"的金融级应用,GreatSQL 的 Clone 插件正是替代传统mysqldump逻辑备份的理想选择。动手实践时,不妨从一条CLONE LOCAL开始,配合 mysql-test/suite/clone/ 下的官方测试脚本,逐步搭建起属于你自己的"热备+增量+压缩"备份体系。

【免费下载链接】GreatSQLGreatSQL是一款开源免费数据库,可在普通硬件上满足金融级应用场景,具有高可用、高性能、高兼容、高安全等特性,可作为MySQL或Percona Server for MySQL的理想可选替换。项目地址: https://gitcode.com/GreatSQL/GreatSQL

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/18 15:14:50

2026年浙江智慧燃气安全监测管理系统的建设与服务商观察

每年夏秋两季,台风挟暴雨登陆浙江沿海,地下燃气管网易受积水浸泡和地基沉降的双重考验,加上杭州、宁波、温州等城市建成区管网密度高、服役年限参差不齐,第三方施工频繁造成的意外破损时有发生。浙江的产业结构又以民营经济见长&a…

作者头像 李华
网站建设 2026/8/18 15:13:24

coreos-vagrant 与 Docker 无缝集成:5 种本地容器开发工作流实践

coreos-vagrant 与 Docker 无缝集成:5 种本地容器开发工作流实践 【免费下载链接】coreos-vagrant Minimal Vagrantfile for Container Linux 项目地址: https://gitcode.com/gh_mirrors/co/coreos-vagrant 如果你正在学习 Docker,却不想污染自己…

作者头像 李华
网站建设 2026/8/18 15:10:50

多智能体自动形式化:用AI将渐进统计理论转化为Lean 4可验证代码

1. 项目缘起:当统计理论遇到形式化验证的“不可能三角” 在统计学和机器学习领域,渐进统计理论(Asymptotic Statistical Theory)是支撑我们理解算法行为、推导置信区间、进行假设检验的基石。无论是中心极限定理、大数定律&#x…

作者头像 李华
网站建设 2026/8/18 15:10:41

10个值得收藏的广告拦截过滤器,让你的浏览器瞬间清净又安全

10个值得收藏的广告拦截过滤器,让你的浏览器瞬间清净又安全 【免费下载链接】FilterLists :shield: The independent, comprehensive directory of filter and host lists for advertisements, trackers, malware, and annoyances. 项目地址: https://gitcode.com…

作者头像 李华