- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
支付域独立库拆分与分表分享
1丶独立库拆分实现
1.1 为什么要拆分
性能上看:随着客户的增多,数据量越来越大、数据库的查询QPS越来越高. 支付域与etbc逻辑无相关,故考
虑库独立.来分散查询连接压力。
从可用性上看:独立单独库后,其它不相干的库不会影响支付域的逻辑.
便利性看: 数据库方面出问题时,更方便定位问题.
1.2 如何独立为单独库
1、确定领域归属表
2 丶我方自检
排除所有其它领域的直接连表操作,改为rpc调用。
3、其它项目检查
其它项目有直接查询支付域表的操作,改为rpc调用。
4 丶删除外键约束
部分表,有外键约束在其它领域表。实际上业务不相干,故排除。
1.3如何测试.
1丶 数据库连接测试
假设独立库为:eslink_paycenter,分配userName:eslink_paycenter,旧库为: eslink_etbc,分配
userName:eslink_etbc
若:1.2执行完毕.
在旧的数据库实例中执行命令: show PROCESSLIST
若eslink_paycenter 不存在连接旧库的信息,则说明 项目拆分完成.
2丶项目rpc测试
这个需要细心一点,对所有更改的sql写测试用例进行测试.
容易出错与遗漏,建议: 有条件下分批次上线. 例如一次发布只切换个别的rpc接口. 尽量不要一次全部发布
上线
1.4正式发布
0丶分批次发布
1丶先发布rpc改动.生产稳定后.
2 丶建立新库.进行数据源配置的修改
注意点:订单表一秒可能有5-15条的插入语句. 要保证旧库-新库 在发布期间实时同步.
1丶数据实时同步问题
1丶支持datax,直接使用datax工具即可. 需要开启binlog,阿里云提供的同步工具
2 丶使用触发器同步,单实例内有效.
3 丶其它工具... 如yugong
注意点:写入数据多的表,在新库主键初始值要预留足够的区间. 避免在发布期间,旧库服务写的与新库主键
冲突.
若影响很大,则在发布完C后,将节点A/B停机. 然后重新启动连接为新数据源.
若保证稳定性,则需要开发,在旧库查不到时,去新库查询.(自行评估)
2丶发布失败回滚方案(需评估是否需要停机一段时间)
新库服务有异常,但发布的节点,已经在写库写入数据了,需要评估这部分数据,短暂查询不到是否有业务影
响.
1丶无影响
①,回滚所有服务,为连接旧库的方式.
②,将发布时间点,新库多的数据,复制到旧库
2丶有影响,但是可恢复
文档评论(0)