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

查看 68|回复 9
作者:seedhk   
数据库版本
阿里云 RDS SQLSERVER
需求
需求是因为老项目的长 SQL 实在是过于多了,几百行的 SQL 一找一个准,去优化 SQL 工作量非常大。
导致生产环境数据库很不稳定,经常因为 SQL 引起数据库不可用导致被客户投诉罚钱,问了阿里云他们推荐高可用集群,但是阿里云高可用对于小企业来说实在是太贵了。迁移下云又需要比较专业的 DBA 来运维数据库,小企业老板估计也不会同意。
做了什么
已经做了这几步:
[ol]

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

  • 拆分了核心业务,但是核心业务仍然有访问数据库的需求,因此万一数据库不可用时,如何保证核心业务的正常运行,成为了一个大问题;
    [/ol]
    想做什么:
    领导提了一个想法:能否通过在中间加一层缓存层的方式,比如 Redis ,核心业务的增删改查先走 Redis 。一段时间后落库,这样即使数据库挂了,只要能撑住 10 分钟数据库就能恢复。
    其他方案:
    将数据库和接口都进行拆分,拆成多服务,需要对应数据的,走接口进行查询调用
    不知道有没有其他更好的方案,求大佬们指教,谢谢~
  • duuu   
    那 Redis 挂了呢
    seedhk
    OP
      
    @duuu Redis 是集群,并且开了 AOF
    evan1   
    我遇到的项目都是先加监控,定位慢 SQL 然后进行针对性的优化,比如加索引,分库分表之类的。
    没有遇到过用 redis 做这种中间库的。
    bg7lgb   
    数据库优化,从应用开始,而不是从数据库层面入手。
    老老实实查日志,找慢 SQL 优化。
    bg7lgb   
    Redis 做缓存,增加了技术的复杂性,故障节点也多了。
    而且目前这个问题也不是用高可用版本就可以解决的。
    seedhk
    OP
      
    @evan1  @bg7lgb  SQL 优化已经在做了,但是远水解不了近渴。
    seedhk
    OP
      
    @bg7lgb  大佬说的是,这样加东西,只会增加复杂性和排查问题的难度,最根本还是得优化 SQL 。
    有没有什么其他好一些的方案? 因为 SQL 优化是一个很漫长的过程,其中还牵涉到很多老的业务逻辑,那些 SQL 和表我看过,给我的感觉是一天能改好一个都已经不错了。
    Varobjs   
    redis 缓存有个项目叫 readyset ,可以兼容 mysql 协议,数据库连接可以直接改为 readyset 端口,默认 sql 都会直连数据库,可以在控制台指定 sql ,走内存
    SoulSleep   
    @evan1 +1
    不解决问题,要靠堆配置是最后的选择,又不舍得花钱,这不是既要又要吗?
    阿里云的 dts 使用场景主要是异构数据库,相同数据库直接开主从就好了....
    再就是如果分析型 sql 过多可以考虑用列存数据库、可以考虑加读写分离。。。但是归根结底
    必须要做的:
    精简在线业务库的单表大小(做做历史归档?)
    做慢 SQL 优化(加索引、改写法、做限流...)
    优化业务逻辑(如同步改异步)
    您需要登录后才可以回帖 登录 | 立即注册

    返回顶部