之前在文章里面有提到过,很多事情,并没有绝对的对错,只是度的问题。而度的衡量又取决于时、势二字。所以当形势逼人的时候,基本就是这件事情非做不可的时候了。
先说下背景,公司的服务器一直用的阿里云,包括mysql、redis也都是买了ECS自己搭建的。这里面有几个原因:
- 创业的时候,阿里云只提供mysql的存储,redis的存储还没提供。
- 没钱,即时现在去看redis的存储价格也是贵的吓人。
这样自己来搞存储有好处也有坏处。 好处:
- 完全可控,比如连接数限制,内存限制,存储限制。还有数据备份的灵活性等等。
- 强迫团队服务器研发要有存储运维能力。
- 省钱
坏处:
- 冷备、热备方案不完善。
- 存储运维的成本较高,需要长时间积累。
ok,问题就是这样,接下来再来说一下我们之前的冷备和热备方案。 可以说极其简陋:
- mysql、redis每天10点冷备,备份到本地磁盘和阿里云OSS
- redis使用rdb落地,每60秒至少有1次写就会触发落地。
这样做的问题其实挺多的,主要几个:
- mysql dump的时候会导致游戏卡顿,即使加了 --single-transaction 参数 也仅仅是缓解
- 冷备频率过低,真出现问题数据已经太久
- 没有热备,风险较大
针对这些问题,我们先做了mysql备份的优化 ...