SQL Server 버전이 EOS 되면서 버전 업그레이드가 필요한 상황이 되었고,
버전 업그레이드 겸 DB Migration (이전작업)을 진행하면서 체크했던 리스트를 정리해 보았습니다.
SQL Server 기준으로 작성되어 있고
아래에서 작성한 AS-IS 와 TO-BE 는 DB 서버를 의미합니다.
아! 참고로 이전작업을 진행하면서 발생하는 이슈는 연관부서에 바로바로 공유될 수 있도록 해줍시다.
이전 작업 계획 시 예상 일정 수립
1. 연관 부서 확인
2. 이전할 DB 목록 확인에 필요한 일정
- 하나의 SQL Server 내에 다수의 Database 가 있을 수 있고, 사용하지 않는 DB 는 이전 대상에서 제외할 수 있음
3. 호환성 체크 및 수정작업에 필요한 일정
4. DB 이관 작업 시 사용할 스크립트 작성에 필요한 일정
5. TO-BE 서버에서 사전테스트 진행에 필요한 일정
이전 방식 계획 세우기
DB 사이즈가 작은 경우에는, 전체 백업 및 복원 방식으로 진행하면 됩니다.
그러나 DB 사이즈가 100GB 단위 이상 혹은 테라급으로 올라가는 경우 위 방식에 소요되는 시간은 오래걸리게 됩니다.
이관 작업이 진행되는 동안 서비스는 다운되어 있기 때문에,
다운타임을 최소한으로 줄일 수 있도록 사전에 구성이 되어 있어야 합니다.
이런 경우 로그전달 이중화 방식으로, TO-BE 서버에 DB 를 구성 후 AS-IS 의 로그백업을 복원하는 방식으로
이전작업을 진행할 수 있습니다.
이중화 구성 방식 정하기
장애상황에 대비하기 위해 백업과 이중화는 꼭 진행해야 합니다.
서비스 용도에 따라서 어떤 이중화를 구성할지 논의 후 정해야 합니다.
이전 작업 전 체크 리스트
1. 통신 허용 진행
1. AS-IS 서버로 접속하는 서버 IP 를 수집 및 이력관리 테이블에 저장하여 관련자에게 공유 ( 개발팀 )
2. AS-IS 서버에 접근하는 Package, Batch Job, Linked Server, SSIS, SSRS 등이 있는지 확인 ( DB팀 )
- 접근하는 패키지나 배치작업 서버에서 TO-BE 서버 IP 로 통신허용 사전 요청
- 이전 작업 당일에 TO-BE 서버에 접근할 수 있도록 연결관리자 수정 필요
3. AS-IS 서버에서 다른 서버로 접근하는 내역이 있는지 확인
- TO-BE 서버에서 'AS-IS 서버에서 다른 서버로 접속하는 IP' 로 통신허용 사전 요청
2. 호환성 체크
1. AS-IS 와 TO-BE 의 DB 버전이 다른경우 호환성 체크
- DMA 툴을 이용하여 호환성 체크
- 버전이 업그레이드 되면서 동작을 안하는 쿼리는 개발팀에 공유하여 사전에 수정할 수 있도록 요청
3. 보안 체크
1. TO-BE 서버에서 사전 보안 체크
- 보안상 이슈가 될만한 소지가 없는지 확인 필요 ( 예) 관리자 sa 계정 비활성으로 변경 )
4. TO-BE 서버 사전 반영 작업 진행
1. AS-IS 서버의 로그인 계정 사전 반영 ( sp_help_revlogin 을 사용하면 hash 암호 추출됨 )
2. AS-IS 서버에서 수행되는 배치작업, 패키지, SSRS 등 사전 반영
5. TO-BE 서버 환경에 따른 변경점 확인
1. AS-IS DB 서버와 TO-BE DB 서버의 OS 환경 차이 확인 ( 예) 배치작업 경로가 변경되는 경우 등 )
2. TO-BE 서버 성능 향상에 따른 DBMS 환경 재구성 ( 예) MAXMEMORY 설정 등 )
6. TO-BE 서버 배치작업 정상동작 확인
1. TO-BE 서버에 구성된 배치작업이 정상적으로 수행되는지 이전작업 전에 확인
2. TO-BE 서버에서 2차백업서버로 백업이 정상적으로 되는지 확인 ( 보통 배치작업으로 구성되기 떄문에 )
7. TO-BE 서버에서 필요한 프로그램은 사전에 설치하기
1. SSMS, SSDT 등 프로그램 설치
8. 이전 작업에서 사용할 스크립트가 정상 동작하는지 확인
* AS-IS 서버에서 수행해야 하는 스크립트는 하지 말것 ( 더 꼼꼼히 검수 )
9. 개발팀 사전 테스트는 특이사항 없는지 확인
이전 작업 진행 시
1. 클라이언트에서 점검이 설정되었는지 확인
2. AS-IS 서버로 접속하는 배치작업, 패키지, SSRS 등 비활성화
3. AS-IS 서버로 접속하는 세션이 없는지 확인
4. AS-IS 서버에 로그인이 불가능 하도록 로그인 계정 비활성화 혹은 DB 사용자 계정을 다른 로그인 계정으로 매핑
5. AS-IS 서버에서 최종 로그 백업
6. TO-BE 서버에서 최종 로그 복원 ( 이중화 구성을 가정하고 주 / 보조 서버에서 각각 복원 )
7. AS-IS 서버와 TO-BE 서버에서 마지막으로 받은 트랜잭션 로그백업 파일의 lsn 이 동일한지 비교
8. TO-BE 이중화 구성
9. TO-BE DB 백업 ( 데이터 변경 전, 최종 복원 된 DB 백업 보관 )
10. TO-BE DB 호환성 레벨 설정, DB 사용자 로그인 계정과 매핑
11. TO-BE 로그인 계정 활성화
12. TO-BE 서버에서 Failover / Failback 테스트 (feat. 개발팀 확인)
13. 개발팀에서 클라이언트 서버의 DB 서버 접속 IP 를 TO-BE 로 변경
14. 개발팀에서 데이터와 기능(SP) 이슈없는지 QA 검증
15. AS-IS 서버로 접속하는 배치작업, 패키지, Linked Server 등 에서 TO-BE 서버로 IP 변경 후 활성화
16. TO-BE 서버 패키지, SSRS, 배치작업 정상수행되는지 확인 ( 특히 서비스와 연관된 배치작업인 경우 )
17. 서비스 오픈 혹은 롤백 결정
이전 작업 완료 후
1. AS-IS 서버의 DB 는 백업하여 영구보관
2. AS-IS 서버로 접속하는 서버가 있는지 확인
3. TO-BE 서버 트래픽 모니터링
- CPU 는 특이사항 없는지
- DB 요청은 정상적으로 들어오는지
- 쿼리 지연은 발생하지 않는지
- 밀림 현상이 발생하지 않는지
'Database > DBA 의 개인생각' 카테고리의 다른 글
[DBA] 데이터 추출해서 전달할 때 체크해야 할 부분 (0) | 2021.03.09 |
---|---|
[DBA] 로그인 계정을 삭제할 때 체크해야 할 리스트 (0) | 2020.07.06 |
[DBA] 배치작업 만들 때 고려사항, 여러개를 같은시간에 수행할 때 위험성 (0) | 2020.04.03 |
[DBA] Order By 없는 쿼리의 위험성 (0) | 2020.02.03 |
[DBA] 삭제 조건에 적절한 인덱스가 없는 경우 단위처리 및 RowLock 으로 삭제하는 방법 (0) | 2019.12.26 |