Multisubnet환경의 AG 그룹에서 링크드 서버 사용시 주의점
· Version : SQL Server 2012, 2014, 2016
SQL Server 2012부터 도입된 가용성 그룹(AG)은 SQL Server에서 제공할 수 있는 최고의 가용성을 보장하지만 구성이 까다로울 수 있다. 특히 다중 서브넷 환경에서 장애 조치를 구성하는 경우 예상치 못한 문제를 많이 겪을 수 있다. 필자 또한 단일 서브넷에서의 AG 경험은 있었지만 다중 서브넷 환경에서 구성 및 운영은 처음이어서 (Cloud VM으로 다중 서브넷(Multi Region구성) 다양한 이슈를 겪고 있다.(기술적 이슈는 아님)
이번 이슈는 Multisubnet AG구성을 구성한 환경에서 링크드 서버를 구성할때, Native Client를 사용하였을 경우 Node 1에서 Node2로 Failover되었을때 Node2번으로 접속하지 못하는 경우가 발생하였다. 이 문제를 해결하기 위해서는 ODBC를 사용해서 링크드 서버를 구성해야 한다. 아래 구성받법을 참고해서 링크드 서버를 구성 할 수 있도록 한다.
ODBC 드라이버를 다운로드 받아 설치 한다. 이때 11버전 이상을 선택 한다. (SQL 2016의 경우ODBC 드라이버 버전이 13이다.)
· Microsoft® ODBC Driver 13 for SQL Server® - Windows + Linux
https://www.microsoft.com/en-us/download/details.aspx?id=50420
AG에서 사용할 ODBC 연결을 생성한다. System DSN 탭에서 연결을 생성한다.
Datasource로 ODBC Dirver 13 for SQL Server를 선택한다.
ODBC에서 사용할 이름을 지정하고 Server의 경우 AG의 리스너 이름을 입력한다.
기술적으로는 로그인 비밀번호를 넣지 않아도 되지만 링크 서버에 사용할 로그인과 비밀번호를 사용하여 테스트 할 수 있다. 물론 계정 및 비밀번호는 저장되지 않는다.
마지막 단계에서Multisubnet failver 옵션을 체크한다. 이 기능이 Failover 되었을때 다른 노드로 연결을 시도한다.
ODBC 생성이 완료되었으면 SSMS에서 링크드를 구성한다. 공급자는 ODBC 드라이버를 선택한다. 그리고 Datasource부분에 ODBC에서 생성했던 ODBC 이름을 사용하여 링크드 서버를 구성한다.
[참고자료]
2017-08-15 / 강성욱 / http://sqlmvp.kr
SQL Server 2016, MS SQL , SQL Server Always On, AG 구성, 멀티서브넷 이중화, Linked Server, 링크드 서버, ODBC 링크드 구성
'SQL Server > SQL Server Tip' 카테고리의 다른 글
In-Memory OLTP 사용시 메모리 할당량 초과 오류 (0) | 2017.09.13 |
---|---|
SQL Server 2016 쿼리 실행에 대한 각 스레드(오퍼레이터) 성능 통계 (0) | 2017.09.13 |
SQL Server DBA 체크리스트 (0) | 2017.05.31 |
SQL Server 데이터베이스 백업이 성공적인지 확인하는 방법 (0) | 2017.05.31 |
트리거가 적용된 메모리 최적화 테이블에서 alter table 실패 (0) | 2017.05.31 |