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