RocksDB 是⼀个⾮常流⾏的⾼性能持久化 KV(key-value)存储,TXRocks 是腾讯 TXSQL 团队基于此开发的事务型存储引擎。
相比 InnoDB 使用的 B+Tree 索引结构,TXRocks 使用的 LSM Tree 索引结构,可以节省相对比例的存储空间。InnoDB 的 B+Tree 分裂通常会导致页面半满,页面内空闲空间浪费,页面有效利用率相对比较低。TXRocks 的 SST 文件一般设置为 MB 量级或者更大,文件要4K对齐产生的浪费比例很低,SST 内部虽然也划分为 Block,但 Block 是不需要对齐的。另外,TXRocks 的 SST 文件采用前缀压缩,相同的前缀只会记录一份,同时 TXRocks 不同层的 SST 可以采用不同的压缩算法,进一步降低存储空间开销。通常情况下可降低50%存储空间。
您可以通过数据传输服务 DTS 将 InnoDB 数据同步到 RocksDB,以提高写入性能和节省存储空间。
说明
数据传输服务(Data Transmission Service,DTS)是提供数据迁移、数据同步、数据订阅于一体的数据库数据传输服务。帮助您在业务不停服的前提下轻松完成数据库迁移,利用实时同步通道轻松构建异地容灾的高可用数据库架构,利用数据订阅提供的云数据库实时增量更新数据,您可根据自身业务需求自由消费增量数据。
注意事项
使用数据传输服务 DTS 进行数据同步,确保增量数据同步至 RocksDB 中,并屏蔽掉 Delete 操作。
当数据传输至 RocksDB 后,检查数据有效性,确认有效性后再将源库中的数据进行清理,降低存储使用空间。
源表可以使用分区表,提升数据清理效率(必须注意分区表的使用限制且目标表不支持分区)。
RocksDB 定期执行 compaction 操作,可以有效降低数据空间占用。
有关 RocksDB 引擎的注意事项,可参见 TXRocks 引擎使用须知。
操作步骤
1. 登录 DTS 控制台,在左侧导航选择数据迁移页,单击新建迁移任务,进入新建迁移任务页面。
2. 在新建迁移任务页面,选择迁移的源实例类型和所属地域,目标实例类型和所属地域,规格等,然后单击立即购买。
配置项 | 说明 |
源实例类型 | 请根据您的源数据库类型选择,购买后不可修改。此处选择“MySQL”。 |
源实例地域 | 选择源数据库所属地域。如果源库为自建数据库,选择离自建数据库最近的一个地域即可。 |
目标实例类型 | 请根据您的目标数据库类型选择,购买后不可修改。此处选择“MySQL”。 |
目标实例地域 | 选择目标数据库所属地域。 |
规格 |
3. 在迁移任务的操作列选择更多 > 配置,在设置源和目标数据库页面,完成任务设置、源库设置和目标库设置,测试源库和目标库连通性通过后,单击保存。
说明
4. 在设置迁移选项及选择迁移对象页面,设置迁移类型、对象,单击保存。
说明
如果用户在迁移过程中确定会使用 gh-ost、pt-osc 等工具对某张表做 Online DDL,则迁移对象需要选择这个表所在的整个库(或者整个实例),不能仅选择这个表,否则无法迁移 Online DDL 变更产生的临时表数据到目标数据库。
如果用户在迁移过程中确定会对某张表使用 rename 操作(例如将 table A rename 为 table B),则迁移对象需要选择 table A 所在的整个库(或者整个实例),不能仅选择 table A,否则系统会报错。
配置项 | 说明 |
迁移类型 | 请根据您的场景选择。 结构迁移:迁移数据库中的库、表等结构化的数据。 全量迁移:迁移整个数据库,迁移数据仅针对任务发起时,源数据库已有的内容,不包括任务发起后源库实时新增的数据写入。 全量 + 增量迁移:迁移数据包括任务发起时源库的已有内容,也包括任务发起后源库实时新增的数据写入。如果迁移过程中源库有数据写入,需要不停机平滑迁移,请选择此场景。 |
迁移对象 | 整个实例:迁移整个实例,但不包括系统库,如 information_schema、mysql、performance_schema、sys。 指定对象:迁移指定对象。 |
指定对象 | 在源库对象中选择待迁移的对象,然后将其移到已选对象框中。 |
是否迁移账号 | 如果需要迁移源库的账号信息,则勾选此功能。 |
5. 在校验任务页面,进行校验,校验任务通过后,单击启动任务。
6. 返回数据迁移任务列表,任务进入准备运行状态,运行1分钟 - 2分钟后,数据迁移任务开始正式启动。
选择结构迁移或者全量迁移:任务完成后会自动结束,不需要手动结束。
选择全量 + 增量迁移:全量迁移完成后会自动进入增量数据同步阶段,增量数据同步不会自动结束,需要您手动单击完成结束增量数据同步。
请选择合适时间手动完成增量数据同步,并完成业务切换。
观察迁移阶段为增量同步,并显示无延迟状态,将源库停写几分钟。
目标与源库数据差距为0MB及目标与源库时间延迟为0秒时,手动完成增量同步。
7. 当迁移任务状态变为任务成功时,即可实现将 InnoDB 数据同步到 RocksDB。