DBAtlas · 데이터베이스 운영 아틀라스

SQL Server Always On AG 운영 (Windows 및 Linux)

SQL Server난이도: 고급소요 시간: 15–90분 (시나리오에 따라 다름)

설치 가이드가 아닙니다. 설치된 Always On Availability Group의 일상 운영과 장애 시나리오를 다룹니다: 상태 점검, 지연 및 로그 증가 진단, 계획된 failover, 강제 failover(FORCE_FAILOVER_ALLOW_DATA_LOSS)와 그 후속 작업, 데이터 이동 일시 중단/재개, 동기/비동기 모드, 데이터베이스 추가(automatic seeding 또는 backup/restore), replica 추가/제거, read-only routing 및 listener 변경. Windows에서는 WSFC, Linux에서는 Pacemaker(pcs) 명령을 사용합니다.

시나리오 카드에서 수행할 작업을 선택하십시오. 오류 번호(예: 9002, 35264, 41142)를 카탈로그 검색에 입력하여 해당 시나리오를 바로 열 수도 있습니다. AG가 아직 없다면: AG (Windows) 또는 AG (Linux).

구성: replica 2–9개로 구성된 AG (Windows WSFC 또는 Linux Pacemaker)

시나리오

  • AG 상태 점검 (dashboard 쿼리) — 모두 정상인지 확인합니다. replica / 데이터베이스 상태, failover 준비 상태, 클러스터, 최근 역할 변경을 봅니다. 아무것도 변경하지 않습니다.
  • secondary가 뒤처짐 / 로그 파일 증가 (지연 진단) — send/redo 큐가 커지거나, secondary의 데이터가 오래되었거나, primary의 로그가 곧 가득 차거나(log_reuse_wait = AVAILABILITY_REPLICA), commit이 느린(HADR_SYNC_COMMIT) 경우입니다.
  • 계획된 failover (switchover, 데이터 손실 없음) — 유지보수, patch 또는 테스트를 위해 primary를 동기 모드이며 SYNCHRONIZED 상태인 secondary로 옮깁니다. 몇 초간 중단되며 데이터 손실은 없습니다.
  • primary 상실: 강제 failover (FORCE_FAILOVER_ALLOW_DATA_LOSS) — primary(또는 사이트 전체 / 클러스터 quorum)를 잃었고 기다릴 수 없는 경우입니다. 데이터 손실을 감수하고 secondary를 primary로 만든 뒤, 데이터를 비교하고 다른 replica를 재개합니다.
  • 데이터 이동 일시 중단 / 재개 (SUSPEND / RESUME) — secondary로의 데이터 전송을 일시적으로 중단하거나(네트워크 유지보수, 대량 작업) SUSPENDED 상태로 멈춰 있는 데이터베이스를 재개합니다.
  • 동기 / 비동기 모드 변경 — replica를 SYNCHRONOUS_COMMIT ↔ ASYNCHRONOUS_COMMIT으로 전환하고(원격 사이트, 느린 네트워크, DR 훈련) commit 보호(REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT)를 설정합니다.
  • AG에 데이터베이스 추가 (automatic seeding 또는 backup/restore) — 새 데이터베이스나 기존 데이터베이스를 AG에 추가합니다. 중소 규모 데이터베이스는 automatic seeding으로, 대용량 데이터베이스나 느린 네트워크에서는 백업으로 준비합니다.
  • replica (node) 추가 — AG에 새 secondary를 추가합니다. node가 클러스터에 조인하고, endpoint를 준비한 뒤 ADD REPLICA + JOIN을 수행하면 데이터베이스는 seeding으로 들어옵니다.
  • replica (node) 제거 — 영구 폐기하거나 다시 구축할 secondary를 AG와 클러스터에서 제거합니다.
  • 읽기 라우팅 (read-only routing) — ApplicationIntent=ReadOnly 연결을 listener를 통해 읽기 가능한 secondary로 라우팅합니다(primary의 보고서 부하 분산).
  • listener 만들기 또는 변경 (IP, 포트) — listener가 없으면 만들고, 포트를 변경하거나 (Windows) 두 번째 서브넷용 IP를 추가합니다.

시작하기 전에

  • 모든 node에 sqlcmd(/opt/mssql-tools18/bin/sqlcmd)와 sysadmin 권한의 …, root 권한(pcs)이 필요합니다. 비밀번호: read -rsp '비밀번호: ' SQLCMDPASSWORD; export SQLCMDPASSWORD 후 sudo --preserve-env=SQLCMDPASSWORD bash <script>.sh.
  • SQL Server의 sysadmin이자 WSFC 관리자인 도메인 계정으로 PowerShell을 관리자 권한으로 열었고, sqlcmd와 FailoverClusters 모듈이 있습니다.
  • 양식의 replica 목록 1행이 현재 primary입니다(상태 점검의 첫 쿼리로 확인). 단계는 이 순서에 따라 올바른 node에 배치됩니다.
  • 변경 작업 시간이 승인되었고 애플리케이션 팀에 공지했습니다…: listener가 몇 초간 끊기고 열린 트랜잭션은 롤백됩니다……: 포트/IP 변경은 연결 문자열에 영향을 줍니다….
  • 강제 failover는 권한 있는 담당자가 결정했으며 데이터 손실을 수용했습니다: primary에 접근할 수 없고 적정 시간 안에 복구되지 않습니다. primary가 돌아올 수 있다면 기다리거나 계획된 failover를 하는 편이 항상 낫습니다.

가이드 단계

  • AG 상태 점검 — AG dashboard: replica, 데이터베이스, failover 준비 상태 · 클러스터 상태 (WSFC) · 클러스터 상태 (Pacemaker) · 최근 역할 변경 (AlwaysOn_health)
  • 지연 및 로그 증가 진단 — 진단: 큐, 처리 속도, 예상 따라잡기 시간 (primary) · 진단: commit 대기 (primary) · 진단: redo가 차단되고 있습니까? (secondary에서) · 해결 방법과 로그 점검
  • 계획된 failover — 진단: 대상이 failover 준비가 되었습니까? (…) · 안전 확인: 장시간 트랜잭션이나 실행 중인 job이 있습니까? (primary) · Failover: …을(를) primary로 전환 (T-SQL) · Failover: …을(를) primary로 전환 (pcs) · 확인: 새 primary와 listener
  • 강제 failover (데이터 손실 가능) — 진단: 대상 상태와 예상 데이터 손실 (…) · WSFC quorum 강제 시작 (…) · Pacemaker의 AG 리소스 관리 중지 (…) · 강제 failover: …을(를) primary로 전환 · 확인: 새 primary 열림, 나머지는 SUSPENDED · 손실된 데이터 복구를 위해 이전 primary에서 snapshot 생성 (…, 복구되었을 때) …
  • 데이터 이동 일시 중단 / 재개 — 진단: 일시 중단된 데이터베이스와 원인 · …데이터 이동 일시 중단 (SUSPEND)…데이터 이동 재개 (RESUME)… · 확인 및 모니터링
  • 가용성 모드 변경 — 진단: 현재 모드와 commit 보호 · … → … · commit 보호 설정 (Windows) · commit 보호 설정 (Pacemaker) · 확인
  • AG에 데이터베이스 추가 — 진단: 데이터베이스를 AG에 추가할 수 있습니까? (primary) · 준비: FULL 복구 모델과 백업 (primary) · replica를 manual seeding으로 전환 (primary) · 데이터베이스를 AG에 추가 (primary) · seeding 모니터링 (primary) · secondary에서 백업으로 준비 (NORECOVERY): … …
  • replica 추가 — 새 node를 WSFC에 추가 (primary) · Always On 활성화 (새 node) · endpoint 생성 및 권한 부여 (새 node) · 새 node 준비: HA 에이전트, Always On, 클러스터 소프트웨어 · endpoint 인증서를 새 node로 복사 (primary) · 인증서, endpoint, Pacemaker 로그인 (새 node) …
  • replica 제거 — 진단: 제거할 replica와 남는 구성 · node를 Pacemaker 클러스터에서 제거 (primary) · replica를 AG에서 제거 (primary) · node를 WSFC에서 제거 (선택 사항) · 제거된 node의 RESTORING 데이터베이스 정리 (…)
  • Read-only routing — 진단: 읽기 액세스와 현재 라우팅 · routing URL과 목록 정의 (primary) · 확인: routing 목록 · 테스트: ReadOnly 연결은 어디로 갑니까? · 테스트: ReadOnly 연결은 어디로 갑니까?
  • Listener — 진단: 현재 listener · virtual IP 리소스와 제약 조건 생성 (Pacemaker) · …listener 만들기…listener 포트 변경…listener에 IP 추가… (primary) · firewall 및 DNS 설정 · firewall 설정 · 확인: listener를 통한 연결
내 환경에 맞춘 단계별 계획 열기 →