Seata 2.6.0 배포: TC, MySQL 스토리지 및 Nacos 등록
기준 환경: Seata 2.6.0, MySQL 8, Nacos 2.x. Seata Server, 클라이언트, 데이터베이스 스크립트 및 Spring Cloud Alibaba 버전은 공식 호환성 매트릭스에 따라 조합해야 합니다.
1. 배포 선택
로컬 학습에서는 file 방식의 등록과 file 스토리지를 사용해 빠르게 통신 경로를 검증할 수 있습니다. 운영 환경에서는 일반적으로 Nacos 등의 등록 센터와 설정 센터를 사용하며, 데이터베이스 또는 공식적으로 지원하는 고가용 스토리지를 사용합니다.
Seata 1.x의 registry.conf, file.conf, 이미지 태그 및 데이터베이스 스크립트를 2.x에 그대로 복사해서는 안 됩니다. 모든 이미지와 의존성의 버전을 고정해야 하며, latest를 사용해서는 안 됩니다.
2. TC 데이터베이스
Seata 2.6.0 배포 패키지의 해당 데이터베이스 디렉터리에 있는 MySQL 스크립트로 TC 데이터베이스를 초기화합니다. 핵심 테이블은 다음과 같습니다:
global_table 全局事务
branch_table 分支事务
lock_table 全局锁
distributed_lock TC 集群协调
vgroup_table 事务组映射
AT에 참여하는 각 업무 데이터베이스에는 동일 버전 클라이언트용 undolog 테이블도 생성해야 합니다. TC 테이블과 업무 데이터베이스의 undolog를 혼동해서는 안 됩니다.
3. Nacos 등록 및 구성
등록 센터와 설정 센터에서는 server 주소, namespace, group, cluster, 사용자 이름 및 비밀번호를 명확히 설정해야 합니다. 트랜잭션 그룹 매핑은 모든 클라이언트와 TC 설정에서 동일하게 유지해야 합니다.
운영 환경의 자격 증명은 환경 변수, secret 또는 외부 설정을 통해 주입하고 Compose, Git 또는 공개 로그에 기록하지 않아야 합니다. Nacos, TC 및 데이터베이스는 내부 네트워크에서만 접근할 수 있어야 하며, 관리 포트는 인터넷에 직접 노출해서는 안 됩니다.
4. 클라이언트 확인
업무 서비스를 시작한 후 다음 사항을 확인합니다:
- TM이 TC에 등록되어 있음;
- RM이 TC에 등록되어 있음;
- 트랜잭션 그룹이 사용 가능한 TC 클러스터에 매핑되어 있음;
- 데이터 소스에 AT 프록시가 적용됨;
- 각 업무 데이터베이스에서 undo_log를 기록할 수 있음;
- XID가 HTTP, RPC 또는 메시지 경로를 통해 전파될 수 있음.
5. 운영 환경 확인
TC는 고가용 방식으로 배포하고, 데이터베이스에는 백업 및 용량 모니터링을 적용하며, 락 대기, 트랜잭션 타임아웃, 롤백 재시도 및 undo_log 개수를 관찰할 수 있어야 합니다. 구성 변경에는 감사 기록과 Canary 배포, 롤백 절차를 마련해야 하며, 업그레이드 전에는 TC, Nacos, 데이터베이스 및 클라이언트의 호환성을 검증해야 합니다.
AT는 메시지, 캐시, 파일 또는 서드파티 API를 자동으로 롤백할 수 없습니다. 이러한 경계를 넘을 때는 모든 작업을 하나의 데이터베이스 트랜잭션으로 처리할 수 있다는 가정 대신 신뢰성 있는 메시징, 멱등성, 보상 처리, TCC 또는 Saga를 사용해야 합니다.