大型互联网系统数据库切换方案
前言
互联网公司中,有不少大型系统,如商城的价格系统,优惠券系统,等等。这些系统在一年又一年的运营之后,数据存储量将相当庞大,我们最终会做一些数据库方面的升级,简单粗暴的方法就是切库,以满足更多的数据库存储空间、更好的数据读取性能。
然而切库的操作,对于系统而言,无异于换血操作,是一件相当危险的操作,那么如何平稳,或者说损失最小的情况下,将系统的数据库进行切换呢?这就是本文要分享的内容了。
需求
很多情况下,我们可以通过对系统进行优化就能满足系统的性能要求的情况下,我们是不会选择切库这个方案的。笔者经历的切库情况,有以下两种:
- 原先的数据库使用的是通过Docker安装的MySQL,切换为公司内部的数据库中间件(也称分布式数据库,类似阿里云的RDS),项目中的代码程序不用做过多的分库分表改造,由数据库中间件帮我们做了这个事情,我们的数据存储很自然地变为多分片存储了;
- 原先的数据库为公司内部的数据库中间件,由于分片过少,需要扩容分片。而数据库中间件不能很好地扩缩容分片,进行少分片数据库中间件切多分片数据库中间件切换;
方案
有了以上的共识,最后还是选择切库方案的话,通常我们会选择在夜深人静时分,即系统访问量最少的情况下,像电商一般是半夜3点半左右,进行切库操作,避免切库过程造成过多的脏数据。
当然,我们的系统,需要提前开发好切库相关的代码,如新库SQL适配、切库过程的开关引入,等等。
至于具体的将数据库从A切换到B的步骤,有以下几点:
1.将A库中的数据,全量同步到B库中,同时保持增量同步。
这样我们如果将数据库连接从A改为B时,读取的数据,是一样的,当然期间的数据库同步延迟是不可避免的。而数据的同步,可以使用阿里巴巴开源的中间件canal。
2.将A库进行停写。
一旦A库进行停写了,那么B库在很短的时间延迟之后,将获得同A一样的全量数据了,然后我们就可以把数据库同步断开。
3.将系统的数据库链接切换到B库。
我们的系统需要事先链接两套数据库,通过开关控制数据库链接,如此我们就可以通过极短的时间内,将系统的数据库链接进行切换。
>更多相关文章
- 06-16卡巴斯基郑启良:支持信创发展是卡巴斯基的重要使命
- 06-16访问管理是确保现代工作场所安全的的五个关键原因
- 06-16零信任安全的演变:彻底改变网络安全策略
- 06-16GitHub上值得关注的20个网络安全项目
- 06-16英国曼彻斯特大学遭遇网络攻击,机密数据或遭窃!
- 06-16调查表明广告软件推送恶意软件感染了六万多个安卓应用程序
- 06-16微软向美国政府提供GPT的大模型,安全性如何保证?
- 06-16如何保护OT环境免受安全威胁?
首页推荐
佛山市东联科技有限公司一直秉承“一切以用户价值为依归
- 01-11全球最受赞誉公司揭晓:苹果连续九年第一
- 12-09罗伯特·莫里斯:让黑客真正变黑
- 12-09谁闯入了中国网络?揭秘美国绝密黑客小组TA
- 12-09警示:iOS6 惊现“闪退”BUG
- 12-05亚马逊推出新一代基础模型 任意模态生成大模
- 12-05OpenAI拓展欧洲业务 将在苏黎世设立办公室
- 12-05微软质疑美国联邦贸易委员会泄露信息 督促其
- 12-05联交所取消宝宝树上市地位 宝宝树:不会对公
- 12-04企业微信致歉:文档打开异常已完成修复
相关文章
24小时热门资讯
24小时回复排行
热门推荐
最新资讯
操作系统
黑客防御