mysql 线上、线下库的问题

1次阅读

共计 773 个字符,预计需要花费 2 分钟才能阅读完成。

背景:
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 的表里存储,通过“外表”等方式映射到开发环境不同的数据库。如果开发环境断电,测试环境提供近期数据的查询。

正文完
 0