更新时间:2024-02-01 GMT+08:00
技术架构
功能背景
主备模式的数据库系统在进行主备倒换、小版本升级和规格变更时,可能会中断用户会话,用户的应用程序需要感知会话变化并提供复杂的应对措施。
- 判断数据库连接是否中断。
- 判断事务是否中断。
- 如何进行事务补偿。
- 如何重建数据库会话上下文。
应用无损透明(ALT),在数据库系统切换与故障转移时,可以提供无损的应用连续性。
- 避免连接和事务中断。
- 无需用户对事务进行补偿。
- 无需恢复和重建会话上下文。
注意事项
- 开启或关闭ALT服务会重启RDS实例和代理实例。
- 多数据库代理模式下不支持应用无损透明(ALT)功能。
- 应用无损透明(ALT)功能事务排干机制超时时间,通过参数“rds_tac_drain_timeout”控制,默认为5s,取值范围为1-60s。
- 业务压力较大或者事务执行时间较长时,建议增加超时时间。
- 不建议调小超时时间,如果在该时间内有连接没有排干事务,则这些连接不具有ALT的能力。
架构图
应用无损透明(ALT)以用户连接为粒度,整个架构如图1所示。
- 用户应用连接到数据库代理(Proxy)。
- 进行主备切换、规格变更或者小版本升级时,系统会复制用户的后台会话。
- 通过事务排干机制以达到安全的事务边界。
安全的事务边界是指当前会话上的事务提交完成,开启下一个事务之前的状态,例如:
- 开启autocommit的事务块每个语句执行完成时,可以达到事务边界。
start transaction; DML; commit;
- 关闭autocommit时,当commit执行完成,达到事务边界。
- 单独DML、DDL语句,执行完成,可以达到事务边界。
- 使用表锁、备份锁、用户自定锁时,需要释放锁以后,达到事务边界。
- XA事务需要进行提交或者回滚操作,达到事务边界。
- 开启autocommit的事务块每个语句执行完成时,可以达到事务边界。
- 转移会话上下文,切换用户后台会话。
父主题: 应用无损透明(ALT)