在后端数据库和客户端之间存在数据库代理(例如,maxscale)的情况下,如果代理节点本身发生故障,写入会发生什么情况。具体来说,我对以下场景感兴趣:
- 客户端发出写入命令(假设启用了自动提交)。
- 数据库代理从客户端接收写入命令,并将其发送到后端数据库。
- 后端数据库接收写入命令,执行写入,提交事务并将确认发送回代理节点。
- 代理节点接收确认。但是,在代理节点可以将确认发送回客户端之前,它就死了。
在这种情况下,事务已经提交,并且就数据库而言,它的客户端(即代理节点)已被通知。但是,实际的客户端不知道事务是否已提交。
数据库代理如何处理这种情况?