Database 写入期间数据库代理节点失败

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

如果后端数据库和客户端之间存在数据库代理(例如,maxscale),那么如果代理节点本身发生故障,写入会发生什么情况。具体而言,我对以下场景感兴趣:

  • 客户端发出写入命令(假设启用了自动提交)
  • 数据库代理从客户端接收写命令并将其发送到后端数据库
  • 后端数据库接收写命令,执行写操作,提交事务并将确认发送回代理节点
  • 代理节点接收确认。但是,在代理节点能够将确认发送回客户端之前,它就死了
  • 在这种情况下,事务已经提交,就数据库而言,它的客户端(即代理节点)已经被通知。但是,实际的客户机不知道事务是否已提交


    数据库代理如何处理这种情况?

    对于MaxScale,当客户端连接突然关闭时,后端数据库连接也会关闭。这使得行为类似于服务器在没有代理的情况下的行为