mysql

MYSQL线上数据库表归档工具推荐Percona-Toolkit 之 pt-archiver

Percona Toolkit中的pt-archiver是一个用于归档数据的工具,它可以有效地将旧数据移动到另一个表中,而不会对生产数据库性能产生太大影响。 https://github.com/percona/percona-toolkit pt-archiver的核心思路是以空间换时间,它通过创建一个临时表来存放需要保留的“热”数据,并使用触发器(Triggers) 来保证数据一致性,最后通过一次快速的表名交换来完成归档。 ⚙️ 第一步:前置检查 在开始操作前,工具会先进行一轮严格的环境检查,如不满足以下任一条件将直接退出,不予执行。 🛠️ 第二步:创建临时表 通过环境检查后,工具会创建一个与原始表结构完全相同的空临时表(默认命名为 原表名_tmp),作为新数据的“容器”。 🔗 第三步:创建触发器(核心机制) 这是重构版保证数据一致性的关键。在向临时表复制数据的过程中,原表可能会继续接收业务的读写请求。为了保证这部分增量数据不丢失,工具会在原表上创建三个 AFTER 类型的触发器,将期间所有的数据变更实时同步到临时表。 这三种触发器协同工作的逻辑如下: 通过这套触发器机制,临时表的数据始终与原表保持同步,无论复制过程耗时多久,都不会丢失增量数据。 📦 第四步:复制数据 部署好触发器后,工具开始分批将原表中的数据复制到临时表。工具会使用 WHERE 条件来筛选出需要保留的数据(例如近7天的记录)。 注意:为了将对线上数据库的影响降到最低,工具在复制时会采取低优先级策略(INSERT LOW_PRIORITY IGNORE),并默认在每复制完一批数据(如1000行)后主动休眠1秒。 🔄 第五步:原子切换 当所有符合条件的“热数据”都复制完成后,归档工作进入最后一步。工具会执行一个原子的…

MYSQL线上数据库表归档工具推荐之gh-ost

一:gh-ost 介绍 gh-ost 是一款由GitHub开发的在线DDL(Online Data Definition Language)变更工具,专门用于MySQL数据库 。它允许在不锁定表的情况下执行数据库模式变更,从而避免了传统ALTER TABLE命令可能带来的长时间锁表问题,这对于高可用性要求严格的生产环境尤为重要。它通过无触发器 (trigger-less)的方式实现表结构变更,减少了对数据库性能的影响,同时支持暂停、限速、动态配置等功能。相较于传统的 pt-online-schema-change,gh-ost 更安全、灵活,且对主库负载更低。 📖主要特点 其操作流程大致如下: 二:gh-ost 的三种模式架构 2.1 连接从库,在主库转换 这是 gh-ost 默认的工作模式,它会查看从库情况,找到集群的主库并且连接上去,对主库侵入最少。大体步骤是: 2.2 连接主库,在主库转换 需要使用 –allow-on-master 选项: 2.3 在从库上测试和转换 这种模式会在从库上做修改。gh-ost 仍然会连上主库,但所有操作都是在从库上做的,不会对主库产生任何影响。在操作过程中,gh-ost…