ASP에서 1차 DB 서버 문제 발생시 2차 서버로 우회 하여 연결하기 > MySQL Tip

본문 바로가기
 

ASP에서 1차 DB 서버 문제 발생시 2차 서버로 우회 하여 연결하기

페이지 정보

작성자 차동박 이름으로 검색 댓글 0건 조회 15,558회 작성일 06-12-20 09:00

본문

ASP에서 1차 DB 서버 문제 발생시 2차 서버로 우회 하여 연결하기
저자: wowhoon | 날짜: 2003년 03월 12일 print.gif

6x6.gif
 

동적인 웹사이트 있어서 DB Server의 역할은 대단히 중요하다고 말할 수 있습니다.

이처럼 중요한 DB Server에 문제가 생겨서 서비스에 지장이 생기면 그 사이트는 심각한 타격을 받게 됩니다. 이번에 살펴볼 내용은 주 DB Server (메인)의로의 연결이 실패하면 2차 DB Server (백업 or 스텐바이)로 연결하는 방법에 대하여 이야기 하려 합니다.

강좌에 사용된 코드는 VB Script-x로 작성 하였으며 DB Server는 SQL Server이며 OLEDB를 이용한 연결을 사용하고 있습니다. 또한 아래의 코드는 연결 문자열만 따로 파일로 만들어 SSI를 이용하여 연결을 하겠습니다. 그럼 우선 기존의 코드를 먼저 보도록 하겠습니다.

* DB Connection Code Sample [inc_DBConn.asp]
<%
Dim Dbconn
Set DbConn = Server.CreateObject("ADODB.Connection")
DbConn.Provider = "SQLOLEDB"
DbConn.ConnectionString = "SERVER=(서버명); Database=(DB명); UID=(ID); PWD=(비빌번호)"
DbConn.Open
%>

위의 코드는 일반적인 DB 연결 코드의 예입니다. SQL Server 연결의 전형적인 예라고 할 수 있습니다.

그러나 연결하려 하는 DB Server의 문제가 생겨서 연결을 할 수 없다면 inc_DBConn.asp 를 참조하는 모든 페이지에는 에러를 발생하게 됩니다. 그러나 End User가 이 "DB Server에 연결 할 수 없습니다." 라는 메시지를 보게 되면 사이트의 신뢰도는 떨어지게 될 것이고 이로 인하여 사이트의 전반적인 신뢰도가 떨어질 수 도 있습니다. 위의 코드를 조금만 변환하면 DB Server의 연결 에러를 해결 할 수 있습니다.

우선 서버의 구성은 아래의 그림 1 처럼 Primary DB와 Secondary DB가 존재 해야합니다. 원본 DB Server 가 문제가 생기면 백업이나 스텐바이 서버로 사용자를 우회 시키고 그사이에 관리자는 DB를 복구 하면 사용자는 에러없는 페이지를 볼 수 있습니다.

[그림 1 : 서버구성도]
 

chk_dbconn.gif

 

다만 스텐바이 서버와 원본 서버의 DB의 내용이 두 서버간의 백업이나 복제 인터벌(interval)의 차이로 인하여 다소 다를 수 있으나, 서비스가 안되는 상황보다는 훨씬 상황이 좋은 편이라고 할 수 있습니다.

* 에러 처리가 추가된 소스

<%
'On Error Resume Next를 사용하여 에러처리를 가능하게 한다.
On Error Resume Next
Dim Dbconn
Set DbConn = Server.CreateObject("ADODB.Connection")
DbConn.Provider = "SQLOLEDB"
DbConn.ConnectionString = "SERVER=(서버명); Database=(DB명); UID=(ID); PWD=(비빌번호)"
DbConn.Open

'에러가 나면 Secondry DB로 연결을 시도한다.
If Err.Number <> 0 Then
Err.Clear
DbConn. ConnectionString = "SERVER=(서버명); Database=(DB명); UID=(ID); PWD=(비빌번호)"
DbConn.Open
End If

'Secondry DB의 연결도 실패할경우 에러 메시지를 출력한다.
'다른 서버가 더존재하면 Secondry 루틴을 다시 만든다.

If Err.Number <> 0 Then
'에러 메시지 출력
Response.write "DB 서버 에러 발생"
Response.End
End If


'On Error Goto 0 를 이용하여 에러 처리를 불가능하게 한다.
On Error Goto 0
%>

위의 코드를 보시면 On Error Resume Next를 이용하여 VBScript-x에서 에러처리를 가능하도록 설정하고 Err.Number 를 이용하여 연결 에러를 검출하여 문제가 있으면 Secondry DB로 연결을 시도하게 됩니다.

좀더 추가적으로 루틴을 만들자면 아래 코드처럼 문제가 생기면 관리자에게 메일이나 SMS를 보내는 기능을 추가하여 문제발생시 관리자 빠른시간에 알수 있도록 해주는것도 좋은 방법입니다.

* 에러처리 & 메일 발송이 추가 된 소스

<%
'On Error Resume Next를 사용하여 에러처리를 가능하게 한다.
On Error Resume Next
Dim Dbconn
Set DbConn = Server.CreateObject("ADODB.Connection")
DbConn.Provider = "SQLOLEDB"
DbConn.ConnectionString = "SERVER=(서버명); Database=(DB명); UID=(ID); PWD=(비빌번호)"
DbConn.Open

'에러가 나면 Secondry DB로 연결을 시도한다.
If Err.Number <> 0 Then
'관리자에게 메일로 통보
ufMailSend("Primary Server")

Err.Clear
DbConn. ConnectionString = "SERVER=(서버명); Database=(DB명); UID=(ID); PWD=(비빌번호)"
DbConn.Open
End If

'Secondry DB의 연결도 실패할경우 에러 메시지를 출력한다.
'다른 서버가 더존재하면 Secondry 루틴을 다시 만든다.

If Err.Number <> 0 Then
'관리자에게 메일로 통보
ufMailSend("Secondry Server")

'에러 메시지 출력
Response.write "DB 서버 에러 발생"
Response.End
End If

'메일 보내기 Function
Function ufMailSend (Server_Name)
Dim objMail
SET objMail = Server.CreateObject("CDONTS.NewMail")
With objMail
.To = "ServerAdmin@Domain.com"
.From = "ServerAdmin@Domain.com"
.Subject = "DB 연결 에러발생"
.Body = "에러 발생 시간 : "& New &"
에러 발생 서버 : "& Server_Name
.BodyFormat = 0 '내용 형식(HTML : 0, Text : 1)
.MailFormat = 0 '메일 형식(MIME : 0, Text : 1)
.Send
End With
Set objMail = Nothing
End Function

'On Error Goto 0 를 이용하여 에러 처리를 불가능하게 한다.
On Error Goto 0
%>

 

이러한 ASP Error 객체와, 사용자 오류 페이지를 잘 활용하면 완성도 있는 웹사이트를 만들수 있습니다.

[이 게시물은 human님에 의해 2007-05-14 17:58:49 bilkboard1에서 복사 됨] [이 게시물은 human님에 의해 2007-05-15 09:09:28 bulk3에서 이동 됨]

댓글목록

등록된 댓글이 없습니다.

Total 243건 4 페이지
MySQL Tip 목록
번호 제목 글쓴이 조회 날짜
189 no_profile human 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 11339 09-07
188 no_profile 차동박 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 16990 07-29
187 no_profile 차동박 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 12410 07-26
186 no_profile 차동박 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 12584 07-18
185 no_profile 차동박 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 14162 06-30
184 no_profile human 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 19509 05-21
183 no_profile human 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 19876 05-20
182 no_profile human 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 12935 05-18
181 차동박 이름으로 검색 18639 01-01
180 차동박 이름으로 검색 18590 01-01
179 차동박 이름으로 검색 20459 01-01
178 차동박 이름으로 검색 19013 12-20
177 차동박 이름으로 검색 19630 12-20
176 차동박 이름으로 검색 16869 12-20
175 차동박 이름으로 검색 10892 12-20
174 차동박 이름으로 검색 11318 12-20
열람중 차동박 이름으로 검색 15559 12-20
172 차동박 이름으로 검색 11382 12-19
게시물 검색