V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
seedhk
V2EX  ›  程序员

关于数据库容灾缓存方案的咨询

  •  
  •   seedhk · 1 天前 · 3626 次点击

    数据库版本

    阿里云 RDS SQLSERVER

    需求

    需求是因为老项目的长 SQL 实在是过于多了,几百行的 SQL 一找一个准,去优化 SQL 工作量非常大。

    导致生产环境数据库很不稳定,经常因为 SQL 引起数据库不可用导致被客户投诉罚钱,问了阿里云他们推荐高可用集群,但是阿里云高可用对于小企业来说实在是太贵了。迁移下云又需要比较专业的 DBA 来运维数据库,小企业老板估计也不会同意。

    做了什么

    已经做了这几步:

    1. 使用了 DTS ,同步主库的数据到从库,基本上实现了读写分离;

    2. 拆分了核心业务,但是核心业务仍然有访问数据库的需求,因此万一数据库不可用时,如何保证核心业务的正常运行,成为了一个大问题;

    想做什么:

    领导提了一个想法:能否通过在中间加一层缓存层的方式,比如 Redis ,核心业务的增删改查先走 Redis 。一段时间后落库,这样即使数据库挂了,只要能撑住 10 分钟数据库就能恢复。

    其他方案:

    将数据库和接口都进行拆分,拆成多服务,需要对应数据的,走接口进行查询调用

    不知道有没有其他更好的方案,求大佬们指教,谢谢~

    103 条回复    2024-12-18 11:19:50 +08:00
    1  2  
    waringid
        101
    waringid  
       13 小时 21 分钟前
    也可以换一种思路:用 ECS 主机自己搭建 MSSQL 的高可用环境

    1 、将现在的 RDS 服务改为 3 台 ECS 服务器
    2 、在 ECS 服务器上自主安装配置 MSSQL 服务
    3 、配置并启用 MSSQL 的 always on ,如果可以分离数据库的读操作
    4 、是否需要启用 NLB 结合使用效果再调整
    wangyzj
        102
    wangyzj  
       12 小时 16 分钟前
    你老板的想法和你的拆分方法成本都高于优化 sql 代码,效果还不好
    读写分离一样需要改 conn 逻辑,用中间件分开可能一样增加一个故障点
    HA 也只是切换到一个 session 可用的 node 而已

    优化 sql 工作量非常大但也是必要的
    最起码把一个拆成多个,只是把查询次数增多都能解决你的问题
    业务逻辑不需要变
    salmon5
        103
    salmon5  
       12 小时 13 分钟前
    ESSD PL1 云盘:相比 PL0 ,PL1 性能级别的 ESSD 云盘大约可提升 5 倍 IOPS 和 2 倍的吞吐量。
    ESSD PL2 云盘:相比 PL1 ,PL2 性能级别的 ESSD 云盘大约可提升 2 倍 IOPS 和吞吐量。
    ESSD PL3 云盘:相比 PL1 ,PL3 性能级别的 ESSD 云盘最高可提升 20 倍 IOPS 、11 倍吞吐量,适合对极限并发 IO 性能要求极高、读写时延极稳定的业务场景。

    https://help.aliyun.com/zh/rds/product-overview/storage-types
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2695 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 15:32 · PVG 23:32 · LAX 07:32 · JFK 10:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.