网易|网易分布式数据库多活架构的演进与实践( 五 )


A:网易自研的NDC就能满足这类需求 , 开源的话Canal提供了比较完善的binlog复制解析能力 , 但是一些具体的复杂需求可能需要自己实现 。
Q12:网易少量的Oracle都用在哪些业务系统上?如何做多机房双活的?
A:Oracle现在基本就只有网易支付在用了 , 据我所知他们并没有在Oracle上做多机房双活的计划 。
Q13:NDC支持异构数据库同步吗 , SQL Server Oracle MySQL?
A:支持 , 现在支持的系统暂时只包括Oracle和MySQL , 主要还是网易内部没有使用SQL Server 。

Q14:Redis , MQ复制用什么中间件?
A:Redis据我所知是使用的Redis Cluster方案 , MQ的复制是业务自研的一个同步工具 。
Q15:MGR怎么处理DDL?
A:MGR对于DDL的复制和对于普通事务的复制没有太大区别 , 不过如果是大表的阻塞性DDL , 由于执行时间过长 , 可能造成较大的复制延迟 , 网易内部对于大表的DDL一般是用PT-OSC这样的在线修改表结构工具完成 。
Q16:一个单元就是一个闭环的机房吗?
A:一般是的 , 单元化方案里一般要求流量尽量在单元内闭环 。
Q17:一个交易 , 做到一半 , 挂了 , 流量切换后 , 是把交易重新做吗?之前做的怎么处理?
A:交易一般具有事务性 , 所以做到一半挂了一般理解为这个事务没有提交 , 切换后整个过程需要重做 。
Q18:如果解决分库分表后 , 数据一致性的问题?本来应该放在一个事务的两个SQL , 分库分表后写往两个实例?有哪些方法可以解决 , 除了分布式事务 , 性能太低?
A:分布式数据库中的事务基本都是按分布式事务的方式解决的 , 比较经典的是两阶段提交 , 如果觉得两阶段提交效率太低 , 可以业务层使用基于MQ的柔性事务方案 。
Q19:版本提升的依据是什么呢?怎么判断是不是时间戳延迟引起的?

A:版本回退的判断即是通过binlog中的时间戳列的数据得到的 , 所以依据就是binlog中的数据 。
Q20:MGR能用在异地多活场景吗?延时太大吧?对网络有哪些要求?
A:可以用在同城单元化的方案里 , 同城的延迟情况对性能的影响较为可控 , 同城延迟一般在3ms以下 。
Q21:Canal+RocketMQ可以用在异地复制吗?
A:可以 。
Q22:银行级的场景下使用哪种方案做多活好啊?
A:银行对数据库一致性要求比较高 , 除了一些强一致的商业方案外 , MySQL的MGR是一个不错的选择 。
Q23:流量切换之前 , 做个一个操作 。 切换后 , 发现数据没同步过来 , 又做了 , 那不是做了两次吗?
A:答案参考问题8 , 计划内和计划外可能要分开讨论 。
Q24:MGR 和 RAC有比较过吗 同城双活部署的话 MGR是否可以达到RAC的同步能力?
A:MGR本质上还是日志的同步 , 和RAC存储共享的思路是完全不一样的 , 性能上MGR也肯定是不如RAC的 , 但是好像MGR部署门槛低 。
Q25:人工做DDL , 那人比数据同步慢怎么办?数据过来了 , 但是表还没改过来 , 就出错了 。
A:流程上一定是DDL在所有单元都执行完成后再开放给业务使用 。
Q26:MGR多活现在有在核心业务上生产的吗?
A:网易内部暂时还没有 。
获取本期PPT
请添加右侧二维码微信


推荐阅读