数据中心
如何分层
按照在线-离线、对时延的要求,可以把数据存储分为:
L0:T+0
L1:T+0
L2:T+1
其中 L1 是 L0 的穿透防御层,但延时会稍微更高。L0 是 10ms 查询层,不是全量数据。L1 是 100ms 查询层,是全量数据,L0 和 L1 都支持轻度分析操作。
L2 是全量数据,可以支持复杂大型查询。
设计 L 的分层要考虑数据的:
- 是否全量:数据量大小,这要求我们关注我们技术选型的 scale 能力,特别是数据线性增长以后,性能是否线性增长。
- 是否全维度:这要求我们关注我们技术选型的 schema 建模能力。
- 延时要求:这要求我们关注我们技术选型的查询执行模型。
- 查询复杂程度要求:这需要关注我们的技术选型支持的查询语言。
如何迁移数据
数据迁移问题 = 制造新从库问题 + 读写切换的问题
- 寻找一个时间点,使用备份进行冷启动,然后通过类似 binlog 制造新从库的机制进行追踪(对于 update 和 delete,都可以设置简单的幂等机制,insert 的幂等要防异常)。
- 框架进行数据校验:主键范围查询,md5 查询。因为数据迁移总是非事务性的最终一致性方案,只能通过校验来确保最终一致性。
- 业务层自行根据 binlog 事件进行消息驱动的校验。
可以参考《MySQL 与数据迁移》。
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.