Developer_hong

[RDBMS] Cluster AUTO_INCREMENT Multiple Increase 본문

프로그래밍/RDBMS

[RDBMS] Cluster AUTO_INCREMENT Multiple Increase

Developer_hong 2021. 5. 17. 14:34
반응형

데이터 베이스 클러스터링 

INSERT 작업하면 AUTO_INCREMENT가 3,6,9 이상하게 증가하는 경우가 있는데
클러스터의 모든 노드가 동시에 같은 테이블에 행을 삽입하려고하는 상황을 방지하기 위함이라고 한다
(이러한 충돌을 피하기 위해 Galera는 클러스터의 노드 수를 기반으로 열 값을 증가한다 의도적으로 설계된 것)


SHOW VARIABLES LIKE '%auto_inc%';
+-------------------------+-------+

 | Variable_name | Value |

+-------------------------+-------+

 | wsrep_cluster_size | 3 |

+-------------------------+-------+

 

[첫번째 노드]
SHOW VARIABLES LIKE '%auto_inc%'

+-----------------------------------+-------+

| Variable_name                            | Value |

+----------------------------------+-------+

| auto_increment_increment        | 3       |

| auto_increment_offset                |  1       |

| wsrep_auto_increment_control | ON    |

+-----------------------------------+-------+

[두번째 노드]
SHOW VARIABLES LIKE '%auto_inc%'

+-----------------------------------+-------+

| Variable_name                            | Value |

+-----------------------------------+-------+

| auto_increment_increment        | 3       |

| auto_increment_offset                |  2       |

| wsrep_auto_increment_control | ON    |

+-----------------------------------+-------+

[세번째 노드]
SHOW VARIABLES LIKE '%auto_inc%'

+-----------------------------------+-------+

| Variable_name                            | Value |

+-----------------------------------+-------+

| auto_increment_increment        | 3       |

| auto_increment_offset                |  3       |

| wsrep_auto_increment_control | ON    |

+-----------------------------------+-------+

 

INSERT 결과

+----+----------+

| id | string |

+----+----------+

|  1 | test     |

|  3 | test     |

|  6 | test     |

|  9 | test     |

|  12 | test     |

+----+----------+


wsrep_auto_increment_control 옵션을 종료하고

> set global wsrep_auto_increment_control=off

INSERT 결과

+----+----------+

| id | string |

+----+----------+

|  1 | test     |

|  2 | test     |

|  3 | test     |

|  4 | test     |

|  5 | test     |

+----+----------+

그러나 클러스터링 된 3개의 노드에서 동시에 INSERT 작업을 하게되면 데드락 오류가 발생한다

ERROR 1213 (40001) at line 2: WSREP detected deadlock/conflict and aborted the transaction. Try restarting the transaction


 



반응형