반응형

인스턴스 설치 및 예제 데이터베이스 설치

 

안녕하세요 SQLER 강성욱 입니다.

이번 시간에는 인스턴스 설치와 예제 데이터 베이스 설치에 대해서 알아 보도록 한다.

 

1. 인스턴스란? (출처 : 네이버)

①일반적으로 어떤 집합에 대해서, 그 집합의 개별적인 요소. 객체 지향 프로그래밍(OOP)에서, 어떤 등급에 속하는 각 객체를 인스턴스라고 한다. 예를 들면 '목록(list)'이라는 등급을 정의하고 그 다음에 '본인 목록(my list)'이라는 객체를 생성(기억 장치 할당)하면 그 등급의 인스턴스가 생성된다. 또한 변수가 포함되어 있는 어떤 논리식의 변수에 구체적인 값을 대입하여 식을 만들면 원래 식의 인스턴스가 만들어진다. 이런 의미에서 인스턴스를 실현치라고 한다.
프로그램 작성 언어 에이다(Ada)에서 매개 변수를 사용해서 절차를 일반적으로 정의한 범용체(generic package)에 대해, 그것으로부터 도출한 구체적인 실체.

 

SQL Server 2008 (R2) 에서도 이전 버전과 같이 멀티 인스턴스를 지원한다.

위의 용어에서 보면 인스턴스에 대해서 구구절절하게 설명되어 있지만 필자는 무슨 말인지 모르겠다.

필자가 생각하기엔 쉽게 말해서 하나의 컴퓨터에 SQL Server를 여러 개 설치한다고 생각하면 편할 것이다.

 

 

 

물론 추가 인스턴스를 설치 할 때 마다 호스트PC의 자원을 공유해서 사용하기 때문에 시스템 자원이 할당 되고 성능이 저하 된다.

 

그렇다면 왜 우리는 인스턴스를 설치해야 하는가? 의문을 가질 필요가 있다.

 

2. 인스턴스의 필요성?

여러분들이 생각하기에는 왜 추가 인스턴스를 설치해야 한다고 생각하는가?

 

국내 출판된 책에서 인스턴스의 필요성을 살펴보니 간략하게 몇 가지로 정의되어 있었다.

 

(1) 개발 및 테스트 환경이 필요 할 때. :

(2) 보안상 독립적인 DB 환경이 필요 할 때.

(3) 여러 개의 DB를 설치하여 테스트가 필요 할 때.

 

이 외에도 이런 상황에서 필요 하다고 생각한다.

필자는 현업에 있으면서 여러 DB를 다루어 보고 수 많은 DB를 관리해 왔다.

단일 인스턴스에 DB명만 다르게 해서 서비스를 하고 있는 것도 있고 가상화 환경에서 각각 독립적으로 DB를 운영하는 것도 있다.

이처럼 여러 환경에서 늘 고민 되는게 각 서비스의 정확한 요구사항을 파악하기 어렵다는 점에 있다.

예를 들면 어떤 새로운 서비스를 시작한다고 하자. 필자는 게임회사에 몸담고 있기 때문에 게임을 예로 들어 본다.

새로운 게임을 개발해서 오픈 할려고 한다. 그런데 초기 회원이 얼마나 가입할 지, 실제 시스템에 부하가 얼마나 걸릴지 모르게 때문에 무턱대고 비싼 장비와 시스템을 구축 할 수는 없다.

어느 오너가 확실하지도 않은 것에 많은 돈을 투자하려 하겠는가.

그래서 우리는 월드 단위(서버단위)로 인스턴스구성 방법을 생각해 본다.

 

 

이렇게 구성하면 어떤 장점이 있을가?

우리는 늘 의문을 가지고 접근하는 사고 방식을 가져야 한다.

 

통상 게임 서버를 오픈 하고 나면 1번 서버에만 유저가 대거 몰리는 경향이 있다.

즉 GameDB01에만 데이터가 쌓일 것이다. 서비스가 지속 되는 동안 유저 데이터는 점점 늘어날 것이다. 결국 GameDB01의 성능 때문에 다른 GameDB02, GameDB03, GameDB04 의 서비스가 영향을 받게 된다.

물론 유저가 많이 유입되고 매출이 높다면 하드웨어 튜닝을 통한 방법으로 해결 가능할 것이다. 하지만 돈으로 해결 하는데에도 한계가 있는 만큼 하나의 서비스 때문에 다른 서비스가 영향을 받으면 안된다. 또한 DB를 분리하여 확장할 경우에도 최소한의 노력과 비용으로 가능하도록 설계를 해야 한다.

멀티 인스턴스로 구성하였을 경우에는 가장 자원을 많이 먹는 DB만 분리하여 다른 물리적 서버로 이동한 후 접속하는 프로그램들의 IP만 바꾸면 될 것이다.

물론 위의 상황은 지극히 개인적인 생각이다. 사용자들의 환경에 맞게 인스턴스를 적절히 활용하면 쾌적한 시스템 환경을 꾸밀 수 있으리라 생각한다.

 

3. 추가 인스턴스 설치하기

 

설치 CD를 넣고 설치를 시작한다. 전반적인 설치과정은 지난 세션에 다룬 [SQL Server 설치]와 동일하다. 다만 인스턴스 추가 부분만 다르므로 크게 어렵지는 않을 것이다.

 

지난 세션에 다룬 SQL Server에서 인스턴스 추가 부분만 다루도록 한다.

 

기존에 설치 되어 있는 인스턴스 이름이 나타난다. 아무런 SQL Server가 설치되어 있지 않다면 [설치된 인스턴스]항목에는 아무것도 나타나지 않는다.

 

기능 선택창에서 비활성화 되어있는 부분은 SQL Server에서 공유해서 사용하는 것이므로 이미 SQL Server가 설치되어 있다면 체크되어서 비활성화 된다.

 

추가로 설치한 인스턴스의 이름을 지정한다. [SECOND] 라는 이름으로 추가 인스턴스 설치.

 

만약 기본 인스턴스가 설치되어 있는데 또 다시 기본 인스턴스로 설치하려 한다면 아래와 같은 에러가 발생한다.

 

나머지 설치 방법은 기존과 동일함으로 따로 설명하지 않겠다.

 

설치가 완료 되면 SSMS를 이용하여 [SECOND] 서버에 접속을 한다.

IP(또는 컴퓨터 이름) 다음에 \SECOND(인스턴스명)을 입력한다.

 

[SECOND]인스턴스 서버에 정상적으로 접속 되었음을 알 수 있다.

 

SQL 구성관리자에서도 [SECOND]에 대한 정보가 나타남을 확인 할 수 있다.

 

4. 인스턴스에 포트번호 부여하기.

하나의 컴퓨터에 여러 개의 인스턴스를 설치 하였다.

그렇다면 외부에서 SQL Server에 접속할 때 컴퓨터 이름과 인스턴스 이름으로만 접속해야하는가?

SQL Server에서는 인스턴스에 포트번호를 부여함으로써 해당 포트의 DB로 접속 할 수 있다.

(공유기나 기타 현업에서 ip를 여러 개 부여 받을 수 있는 상황이라면 인스턴스별로 IP를 할당하여 사용한다. 이렇게 하면 차후 시스템 분리시 IP 재설정을 하지 않아도 된다.)

 

그럼 인스턴스에 포트번호를 부여해 보자.

SQL Server 구성관리자를 실행한다. SECOND(인스턴스)에 대한 프로토콜 설정에서 TCP/IP속성을 클릭하여 [IP주소]탭에서 IP ALL 항목에서 TCP 포트번호를 부여 한다.

포트번호는 기본적으로 5000 이상을 사용하도록 한다.

5000 이하는 윈도우 시스템에서 사용하므로 가급적 피하는 것이 좋다고 생각한다.

 

설정을 바꾸고 나면 서비스 재시작이 필요하다.

 

지정 포트로 접속을 하여 본다.

 

이렇게 인스턴스를 구분하여 사용하면 마치 독립된 서버를 운영하는 것과 같은 환경을 구축 할 수 있다.

 

5. 예제 데이터 베이스 설치하기.

 

SQL Server2000 에서는 초기 DB를 설치하고 나면 예제 데이터 베이스들이 자동으로 설치되어 사용할 수 있었으나 2005, 2008에서는 따로 추가 설치를 해야 한다.

 

우선 인터넷에서 예제 데이터 베이스를 다운 받도록 하자.

 

MS에서는 필요한 코드 및 정보는 www.codeplex.com를 통하여 배포하고 있다.

예제 데이터 베이스도 여기서 다운받도록 하자.

 

 

 

http://msftdbprodsamples.codeplex.com/releases/view/55926 <- 파일 받기.

 

 

받을 받기 완료 설치를 시작한다.

 

 

 

 

설치가 완료 되었다.

 

[Show Details]를 클릭하면 각종 정보가 나타난다.

 

 

SSMS를 이용하여 예제 DB가 설치되었는지 확인한다.

 

이로써 인스턴스 설치 및 예제 데이터 베이스까지 설치가 완료 되었다.

 

인스턴스에 대한 설계는 지극히 필자의 개인적인 생각이므로 현업에 적용 시 정책 및 환경을 고려하여 설계하여 사용함을 권장한다.

 

CPU affinity mask, NUMA, 최대 메모리설정을 필요에 따라 반드시 설정 할 것

 

 

반응형

+ Recent posts