V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
winskyme926
V2EX  ›  数据库

mysql 线上、线下库的问题

  •  
  •   winskyme926 · 84 天前 · 1536 次点击
    这是一个创建于 84 天前的主题,其中的信息可能已经有所发展或是发生改变。

    背景: 1 、测试环境、开发环境两台机器,开发环境机器在办公室,网络、供电可能异常中断,测试环境机器在机房,有保障;--目前使用开发环境数据库 2 、测试环境机器存储空间小,暂时无法扩容,开发环境存储空间充足; 3 、相关开发人员,对数据库的了解可能仅限于 mysql 的增删改查,对其他数据库不了解;并且涉及业务众多难以梳理,难以全面整改。--但现在新增非结构化的数据要存储

    需求: 1 ,测试环境的机器提供线上服务,在机房网络、供电有保证,各业务统一将历史代码中的数据库服务器 IP 从开发环境改成测试环境,以后固定由测试环境上的数据库统一提供服务; 测试环境唯一对外提供服务的数据库是 mysql 2 ,数据增、删、改:请求发送到测试环境 mysql ,由测试环境 mysql 实时同步到开发环境的 mysql ; 3 ,测试环境 mysql 定期删除超过指定时间的数据(比如一天前,一周前等),但是开发环境的 mysql 要保留全量数据--如果是业务发起的删除,开发环境需要同步,见 2 ; 4 ,数据的查询:请求发送到测试环境 mysql ,如果测试环境有,直接返回,如果测试环境没有,mysql 去开发环境查一下再返回,对于业务来说,只要向测试环境发起查询请求就可以了;--有点像简单的“冷热节点分离”,如果实施困难,也可以所有查询请求,都转发到开发环境 mysql ; 5 ,多数据:测试环境 mysql 作为唯一对外服务的数据库,但开发环境搭建 mysql 、mongodb 等多种数据库,测试环境 mysql 根据不同的表名,把数据写入到开发环境不同的数据库上,查询的时候也是一样。--这个时候跟以上几点有点冲突,所以测试环境 mysql 可以纯粹作为一个“数据库网关”,所有数据都在开发环境。 测试环境数据全部在 mysql 的表里存储,通过“外表”等方式映射到开发环境不同的数据库。如果开发环境断电,测试环境提供近期数据的查询。

    3 条回复    2024-08-26 10:26:47 +08:00
    winskyme926
        1
    winskyme926  
    OP
       84 天前 via Android
    手机编辑,没注意 markdown 格式
    XyIsMy
        2
    XyIsMy  
       83 天前
    你要不再梳理下 背景,需求,方案 1 ,2 ,3 。理解起来有点费劲。

    1.测试环境资源吃紧的情况下,想作为线上环境,这个就不太合理,要么加机器资源,要么还是用开发环境
    2.测试环境 反代 到开发环境,不现实。开发环境停电之后系统还是不可用,没实际意义
    3.测试环境 缓存 一份热数据,定期删除,只能提供查询,整个系统的复杂度提高几倍

    测试环境加一个硬盘吧,现在硬盘不算很贵,解决很多问题。提高系统稳定性,可维护。降低开发人员的工作心智,
    lingalonely
        3
    lingalonely  
       82 天前   ❤️ 1
    不至于吧,这点资源都不加,本身测试,开发应该是要隔离的,你现在全耦合在一起,开发测试过程中的问题排查都有得搞,先去申请大一点测试环境,另外,按你描述,你们开发,测试流程也存在问题。正常是 测试发现问题,反馈开发,开发修复,提交修改测试,测试验证,所以要保持测试,开发环境的独立性。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2628 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 11:14 · PVG 19:14 · LAX 03:14 · JFK 06:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.