2.5.4 XA事务的记录

2.5.4.1 XA 事务过程中记录的内容

由于在Dble中采用两段提交的分布式事务,所以使用XA事务的时候对于DBLE本身就拥有了状态。状态就需要有文件或者其他方式的记录,其中关于XA事务细节的记录主要是记录以下几个部分

       1. 事务ID
       2. 事务状态
       3. 事务中每个节点的连接host
       4. 事务中每个节点的连接端口
       5. 事务中每个节点连接最后的事务状态
       6. 事务中每个节点连接的过期状态(没有实际作用)
       7. 事务中每个节点连接对应的后端数据库

这里举例一个记录的实例

{
    "id": "'Dble_Server.1.15'",
    "state": "8",
    "participants": [
        {
            "host": "10.186.24.37",
            "port": "3308",
            "p_state": "8",
            "expires": 0,
            "schema": "db3"
        },
        {
            "host": "10.186.24.37",
            "port": "3306",
            "p_state": "8",
            "expires": 0,
            "schema": "db2"
        },
        {
            "host": "10.186.24.37",
            "port": "3308",
            "p_state": "8",
            "expires": 0,
            "schema": "db2"
        },
        {
            "host": "10.186.24.37",
            "port": "3306",
            "p_state": "8",
            "expires": 0,
            "schema": "db1"
        }
    ]
}

2.5.4.2 XA事务中status的标识字典

status 状态 解释
0
TX_INITIALIZE_STATE
XA事务处于初始化状态
1
TX_STARTED_STATE

XA事务处于开始状态,在事务开始直到提交或者回滚之前

XA事务的状态一直会保持此状态

2
TX_ENDED_STATE
XA END下发成功状态
3
TX_PREPARED_STATE
XA PREPARED成功状态
4
TX_PREPARE_UNCONNECT_STATE
XA PREPARED下发过程中连接被断开
5
TX_COMMIT_FAILED_STATE
XA COMMIT 下发失败
6
TX_ROLLBACK_FAILED_STATE
XA ROLLBACK 失败
7 TX_CONN_QUIT 后端mysql连接失败
8
TX_COMMITTED_STATE
XA 事务提交成功
9
TX_ROLLBACKED_STATE
XA 事务回滚成功
10
TX_COMMITTING_STATE
XA 事务正在提交
11
TX_ROLLBACKING_STATE
XA 事务正在回滚
12
TX_PREPARING_STATE
XA 事务正在下发prepare

2.5.4.3 XA事务记录的存储方式

一、本地文件方式

顾名思义在这种方式下,xa事务的状态将以本地记录文件的方式被存放到对应的文件中,具体的路径和文件名配置是

配置与server.xml中的{xaRecoveryLogBaseDir}/{XaRecoveryLogBaseName}.log默认条件下文件会被储存在./tmlogs/tmlogs-1.log

一般只在Dble单机状态下使用本地文件方式,使用集群时本地文件的方式将在集群状态下造成不可预知的错误

二、ZK存储方式

ZK存储方式不需要额外的配置,当Dble使用ZK配置时,自动默认XA事务记录的存储方式也会是ZK存储

具体的XA事务记录的内容保持不变,记录在dble/{clusterId}/XALOG/{myid} 的Key值中

results matching ""

    No results matching ""