Archive for January 2009

MSSQL Mirroring 구현하기 – MSSQL 미러링, FQDN 에러 해결 방법

SQL 2005 가 발표되면서 가장 마음에 들었던 기능중 하나인 Mirroring 을 구현함에 있어서 서버들의 환경이 도메인으로 묶여있는 환경이 아니라면 (보통의 경우는 묶여있는 경우가 드물듯..;; ) 설정을 할 때 이런저런 에러 사항이 꽃을 피게 되는데 대표적인 예가 FQDN (Fully Qualified Domain Name) 을 운운 하면서 에러를 내보내는 경우가 대부분 이라는 것..

이를 해결 하기 위해서는 모든 서버들은 도메인으로 – 액티브디렉토리를 사용하여 도메인 구조로 묶게 되면 해결이 되지만 DBMS하나 깔아서 쓰는 것도 귀찮고 힘들어 죽겠는데 액티브 디렉토리까지 신경쓰기 싫을 경우에 나름의 꼼수로 ㅎ 쓸 수 있는 방법..

나도 IDC에 액티브 디렉토리의 설정을 들여놓긴 싫어서 같은 방법을 쓰고 있으며 뭐 잘 돌아가니 🙂

OS 는 Windows server 2003 이상이면 되고 DBMS는 SQL 2005 이상이면 동작한다
다만 SQL 2005의 서비스팩은 반드시 적용하시길~ SQL 2005의 경우 현재(2009/01/30) SP3 까지 나와있으니 download 페이지에서 받으시면 준비는 끝날듯~

미러링을 위해서는 총 세개의 인스턴스가 설치가 되어있으면 되며 물리적으로 분리가 되어있어도 되며 그게 아니라면 추가 인스턴스로 되어있어도 동작하는데는 문제가 없음..

이제 작업 리스트
내 경우에는 총 3대의 서버에서 진행을 했으며 마스터DB와 미러DB는 SQL 2005 Standard edition 그리고 감시용으로는 SQL 2005 express edition을 사용했음

1. Host file의 수정
172.10.10.10       db1.database.server.hugyou.net
172.10.10.11       db2.database.server.hugyou.net
172.10.10.12       db3.database.server.hugyou.net

뒤에 도메인 네임은 쓰고 싶으신 걸로 🙂 dbserver1.google.com 이라고 해도 상관없음 -_-;;

2. Full backup & Transaction log backup
마스터 DB에서 하나의 Full backup 그리고 그 이후에 생성된 Transaction log backup 을 생성한 후 해당 백업 파일을 미러DB에 복사해놓음

3. 2번에서 생성된 백업 파일을 복원
복원을 할 때 with nocovery 옵션으로 DB를 열어놓은 상태로 만들어 놓는다

4. DB서버 별 인증서 파일 생성
— 마스터DB
create master key encryption by password = ‘마스터DB 비밀번호’;
GO

create certificate DATABASE_A_Cert with subject = ‘DATABASE A Certificate’, start_date = ‘2009/01/01’, expiry_date = ‘2020/12/31’;
GO

Create endpoint endpoint_mirroring state = started
as tcp(listener_port = 7123, listener_ip = all)
for database_mirroring (authentication = certificate DATABASE_A_Cert, encryption = REQUIRED, role = all);
GO

Backup certificate DATABASE_A_Cert to file = ‘c:\DATABASE_A_Cert.cer’;
GO

— 미러DB
create master key encryption by password = ‘미러DB 비밀번호’;
GO

create certificate DATABASE_B_Cert with subject = ‘DATABASE B Certificate’, start_date = ‘2009/01/01’, expiry_date = ‘2020/12/31’;
GO

Create endpoint endpoint_mirroring state = started
as tcp(listener_port = 7123, listener_ip = all)
for database_mirroring (authentication = certificate DATABASE_B_Cert, encryption = REQUIRED, role = all);
GO

Backup certificate DATABASE_B_Cert to file = ‘c:\DATABASE_B_Cert.cer’;
GO

— 감시DB
create master key encryption by password = ‘감시DB 비밀번호’;
GO

create certificate DATABASE_C_Cert with subject = ‘HOST_W certificate’, start_date = ‘2009/01/01’, expiry_date = ‘2020/12/31’;
GO

Create endpoint endpoint_mirroring state = started
as tcp(listener_port = 7123, listener_ip = all)
for database_mirroring (authentication = certificate DATABASE_C_Cert, encryption = REQUIRED, role = witness);
GO

Backup certificate DATABASE_C_Cert to file = ‘c:\DATABASE_C_Cert.cer’;
GO

인증서 생성시 유효 기간은 알아서 적당하게 진행하면 되며 내 경우에는 다시 설정하기 귀찮으니–;; 10년정도 뒤로 -ㅅ-;; 설마 2020년까지 이 시스템을 사용하지는 않겠지 ㅎ

5. 생성된 인증서 파일을 각 서버에 전부 카피 한다
서버는 다른 두 서버에서 생성된 인증서를 가지고 있어야 함

6. 로그인 계정 생성 및 Endpoint 설정 – 가장 긴 부분 🙂
— 마스터DB
create login DATABASE_B_login with PASSWORD = ‘미러DB 로그인 암호’;
GO

create user DATABASE_B_user from login DATABASE_B_login;
GO

Create certificate DATABASE_B_Cert
Authorization DATABASE_B_user
From file = ‘c:\DATABASE_B_Cert.cer’;
GO

Grant CONNECT ON Endpoint::endpoint_mirroring to [DATABASE_B_login];
GO
——
create login DATABASE_C_login with PASSWORD = ‘감시DB 로그인 암호’;
GO

create user DATABASE_C_user from login DATABASE_C_login;
GO

Create certificate DATABASE_C_Cert
Authorization DATABASE_C_user
From file = ‘c:\DATABASE_C_Cert.cer’;
GO

Grant CONNECT ON Endpoint::endpoint_mirroring to [DATABASE_C_login];
GO

— 미러DB
create login DATABASE_A_login with PASSWORD = ‘마스터DB 로그인 암호’;
GO

create user DATABASE_A_user from login DATABASE_A_login;
GO

Create certificate DATABASE_A_Cert
Authorization DATABASE_A_user
From file = ‘c:\DATABASE_A_Cert.cer’;
GO

Grant CONNECT ON Endpoint::Endpoint_mirroring to [DATABASE_A_login];
GO

——-
create login DATABASE_C_login with PASSWORD = ‘감시DB 로그인 암호’;
GO

create user DATABASE_C_user from login DATABASE_C_login;
GO

Create certificate DATABASE_C_Cert
Authorization DATABASE_C_user
From file = ‘c:\DATABASE_C_Cert.cer’;
GO

Grant CONNECT ON Endpoint::Endpoint_mirroring to [DATABASE_C_login];
GO

— 감시DB
create login DATABASE_A_login with PASSWORD = ‘마스터DB 로그인 암호’;
GO

create user DATABASE_A_user from login DATABASE_A_login;
GO

Create certificate DATABASE_A_Cert
Authorization DATABASE_A_user
From file = ‘c:\DATABASE_A_Cert.cer’;
GO

Grant CONNECT ON Endpoint::Endpoint_mirroring to [DATABASE_A_login];
GO

——-
create login DATABASE_B_login with PASSWORD = ‘미러DB 로그인 암호’;
GO

create user DATABASE_B_user from login DATABASE_B_login;
GO

Create certificate DATABASE_B_Cert
Authorization DATABASE_B_user
From file = ‘c:\DATABASE_B_Cert.cer’;
GO

Grant CONNECT ON Endpoint::endpoint_mirroring to [DATABASE_B_login];
GO

7. 미러링 설정 하기
— 미러DB
alter database [DB이름] set partner = ‘TCP://db1.database.hugyou.net:7123’;
GO

— 마스터DB
alter database [DB이름] set partner = ‘TCP://db2.database.hugyou.net:7123’;
GO

alter database [DB이름] set witness = ‘TCP://db3.database.hugyou.net:7123’;
GO

이걸로 미러링 끝~ 🙂 뭐 오타 있을 수 있지만 그건 그 때 알아서 고치면 될 것 같고;;
이제 도메인 걱정없는 미러링을 즐겨봅시다~

마스터가 죽으면 자동으로 미러로 서비스가 옮겨지지만 ip 주소가 다를 경우 어플리케이션 들은 DB가 변경이 되었는지 알길이 없으니 연결을 시도해보고 마스터가 죽었으면 미러로 접속을 하는 설정을 해놓으면 마스터DB의 시간을 벌 수 있을듯~

구슬이 서말이어도 꾀어야 보배

그만큼 알고 있으면 제발 제품에 반영 좀 해줘요 🙂
입으로 떠들고 해당 이유를 설명하는데 모든 에너지를 소비하지 말고

그리 잘 알면 잘 알아서 만들면 되지 뭐 그리 궁시렁 거리기만 하는 겁니까~

행동 좀 해 주세요… 제발 -_-_-_-_-_-_-_-+

email로 메신져로 싸우는 것도 지겨워서 진짜-_-

HDMI, Component cable 의 소중함..

몇일 전에 주문한 HDMI 케이블과 Wii Component cable 이 아기다리고기다려서 오늘에서야 도착을 했다..

케이블을 주문하게 된 이유가 좀 재미있긴한데..

1. 내 모니터는 composite 입력을 받지 않는다
2. 내 모니터는 한 개의 component 입력과 두 개의 HDMI 단자가 있다
3. xbox 360 은 component 단자가 기본제공된다
4. wii 는 composite 가 기본 제공된다
5. wii 의 composite 출력을 component에 연결하면 제대로된 컬러로 할 수가 없다
6. xbox를 component 단자에 연결하면 Wii 를 꼽을 수가 없다
7. 둘다 연결 하기 위해서는 xbox의 HDMI, wii 의 component 입력이 필요하다

마지막 7번의 이유로 결국 케이블을 구매하게 되었다..
xbox의 component케이블이 나쁘진 않았지만 wii 를 연결해야했기에 ㅋㅋ

결과는 완전 대 만족!!
두개 다 해서 배송비까지 한 15불 아래쪽으로 들어간거 같은데 wii 를 제대로 된 화면에서 할 수 있다는 것이 이렇게 즐거운 일이 될 줄 누가 알았겠나 🙂

마리오 카트 wii 를 끊김없이.. 아무런 화면 떨림 없이 플레이 할 수 있는게 얼마나 즐거운 일이던가 ㅠㅠ

이젠 즐겁게 게임을 즐기는 일만 남아있음 ㅎㅎ
나름 작은 지름인 15불로 느낄 수 있는 최고의 즐거움 일듯~ ^^

Bye… Circuit City…

공식 홈페이지
http://www.circuitcity.com/

미국 2위의 전자제품 양판점인 circuit city가 결국 모든 매장의 문을 닫기로 결정을 했다

아마도 저녁 뉴스에 들어갈 영상을 찍고 있었을 것이라고 생각된다..
집에서는 미묘하게 멀어서 자주 놀러가진 못했지만 뭐랄까 놀러갈 곳이 한 곳 줄어 들었다라는 것은 참 아쉽다

Best buy 와 Fry’s 가 잘 버텨주길 바래야지..

매장의 물건들을 처분하기 시작했는데 약 30%정도 까지 할인을 하는 것 같으니 관심이 있으신 분들은 가서 구매해도 나쁘지 않겠다만.. 벌써 세일이 시작한지 하루가 지난 상태.. 물건이 얼마나 남아있을지가 그리고 쓸만한 녀석들의 할인율은 얼마정도나 될지 그게 의문이다 ㅎ

Golden Gate Bridge


각종 영화에 자주 출연하며 샌프란의 소개자료 등에 빠지지 않고 등장하는 Golden Gate Bridge
샌프란에서 소살리토로 가는 북쪽으로는 요금을 받지 않으며 소살리토에서 샌프란으로 가는 남쪽으로 갈 때는 통행요금 6불이 있음.. 작년엔 5불이라고 하던데 왜 6불이 되었는지는 알 수가 없지만 ㅠㅠ 통행료로는 정말 비싼 다리라고 생각 들 수 밖에 없다라는 ㅎ

그래서 인지 어째서 인지는 모르겠지만 다리를 걸어서 또는 자전거로 건너는 관광객들이 많았던 것 같다..
오늘 날씨가 샌프란 치고는 엄청나게 좋은 쪽에 들어갔기에 가능하기도 했겠지만 ^^

Marley & me


미국에서 개라는 녀석이 가지고 있는 사회적 위상과 사고를 보여주는 이야기 🙂
200달러 짜리 ‘할인’ 강아지를 데려와서부터 시작되는 이야기들을 강아지의 성장 과정에 맞춰서 보여주고 있다..
사실 Marley라는 강아지가 주인공이 될 수도 있는 영화이지만 주인공은 Me 인 사람들이고 Marley는 조연일 뿐이지만 정말 주연보다 더 중요한 조연이라는 생각이 들 정도~

저 정도로 지냈으면 ‘가족’ 이라는 이름을 붙여줘도 문제가 없을 것 같다라는 생각이 들었음

Mario Kart Wii

아 닌텐도 이 녀석들이 감사할 뿐 ㅠㅠ

큰 화면에서 제대로 해보고 싶네 ㅎ
NDS로 하는 것과는 또 다른 재미가 느껴진다라는 🙂

메타 데이터의 세계

메타 데이터의 정의 및 설명은 Wikepedia 를 참조 하시면 매우 자세하게 아시겠지만 그냥 대충 생각하면 mp3에 태그 달아주는 것.. 이것 역시 Meta 데이터를 생산하는 일 중에 하나라고 생각 할 수 있을 정도로 그다지 어렵지 않은 일..

사진을 찍어본 사람이라면 한 번 정도는 들어봤을 수 있는 촬영정보 EXIF 정보 역시 찍은 사진의 이미지에 대한 메타 데이터..
카메라, 날짜, 시간, 이용한 렌즈, 감도, 셔터스피드 등등으로 구성이 되어있는 메타 데이터인데 이러한 메타 데이터가 확산되면서 가장 재미있게 떠오르는 것으로 생각 할 수 있는게 재미있게도 파일 정리 관련 분야인것 같다..

최근에 많이 사용되고 있는 구글 데스크탑이나 윈도우 서치, 맥의 스팟라이트 등은 파일에 대한 메타 데이터를 생성하여 자체 프로그램 적으로 데이터 베이스를 만들고 해당 데이터 베이스를 검색 하는 기능을 하는 소프트 웨어들인데 이 개념은 기존에 주로 사용되던 루트-디렉토리-서브디렉토리-파일 의 전통적인 구조를 완전하게 무너트릴 수 있는 개념이라는 것 🙂

c:\windows\system32 라는 폴더에 시스템 관련 정보를 저장하고 d:\music\globe 라는 폴더에 globe의 음악을 넣거나 /home/hugyou/document 라는 디렉토리에 문서를 저장하는 행위 자체가 전통의 파일 관리의 방법이었다라면 메타 데이터가 생성이 되어있다라면 해당 문서가 어디에 존재하는 지는 그닥 중요하지가 않다라는 것..

어디에 저장이 되어있던.. 저장되어있는 경로의 이름이 어떻던.. 중요한건 제대로 된 메타 데이터가 있고 해당 데이터를 검색 할 수 있는 툴만 있으면 된다라는 것.. 이게 무슨 의미가 되냐하면 내가 미친척을 하고 가지고 있는 mp3 파일들의 이름을 1.mp3 2.mp3 ~ x.mp3 등으로 모두 다 변경을 한 후에 폴더/디렉토리를 열어보면 정말 한숨만 나오고-_-;; 이게 무슨 노래인지 알 길이 없어지지만 모든 노래들을 iTunes, Windows media player, Winamp 등에다가 넣어놓으면~? 무슨 노래인지도 알고 누구의 노래인지도 알고~ 🙂 아무런 문제없이 해당 파일을 이용할 수 있다라는 것..

google의 gmail이 받은 편지함에 폴더를 생성하고 메일들을 해당 폴더에 넣지 않고 tag라는 것을 달아놓았는지를.. 그리고 해당 방법이 얼마나 편한지를 생각해보면 메타 데이터의 중요성을 사용을 할 때마다 느낄 수 있는 부분..

Meta, Tag 등으로 이야기 되는 메타 데이터들의 신비한 세계가 전통과 어떻게 융합을 할 수 있을지 궁금해진다 🙂

윈도우에서는 미묘하게 시도 하고 있는 것중에서 오피스 2007에서 파일 저장할때 태그를 넣으라고 나오는 것 이라던가 My Document, My Music 등을 전면에 배치 하고 있는 것을 보면 전통적인 폴더 방식이지만 메타 데이터의 수집을 위해 검색이 쉽도록 한 곳에서 관리를 하려고 하는 노력을 볼 수 있는 부분이라고 생각이 들기도 하고..

갑자기 왜 메타 데이터에 대한 이야기냐하면.. 오래된 mp3 파일을 itunes 에 넣었는데..
추억의 ‘Unknown Artist – Audio Track 01.mp3’ 라는 식의-_-;; 메타 데이터를 보고 어느덧 생활에서 메타 데이터가 얼마나 익숙해졌는지 몸으로 느껴버려서 ㅎ 끄적여봄~

지금부터라도 메타 데이터들 하나씩 챙기세요~ Windows 7에서부터는 저걸로 데이터 관리가 슬슬 될 수도 있을 것 같으니~ 🙂

Opensolaris 오픈솔라리스 설치

Unix 계 OS 의 3인방하면 HP-UX, AIX 그리고 Solaris 이렇게 생각이 되는데 HP-UX야 이름에서 알 수 있듯 HP머신 아니면 돌질 않고–;; AIX는 IBM에서만 돌고 결국 지금 범용으로 쓸 수 있는건 Solaris 말고는 없다라고 결론 🙂

OS 전체를 밀고 다시 까는건 지금 상황에서는 할 수 없으니 가상머신의 도움을 받아서 설치를 시작

1. OS 이미지 다운로드
http://www.opensolaris.com
http://www.opensolaris.org

현재의 최신 버전은 2008년 11월 버전인 08.11
해당 ISO파일을 굽고 부팅하면 사실 설치 하지 않아도 맛은 볼 수 있는 상태가 됨 🙂
물론 LiveCD방식이기에 이것저것 하고 놀기에는 느리긴 하지만.. 그냥 재미삼아.. 그리고 설치를 위해서는 어쩔 수 없이 🙂 일단은 LiveCD로 부팅을 함

2. 설치
우분투를 설치해본 경험이 있다라면 아주 쉽게 적응 할 수 있을 듯..
설치 패키지 부터 한글도 지원을 하니 큰 문제 없이 설치가 완료될 것이라 생각~

3. 첫만남


우분투를 그대로 배껴놓은 듯한 메뉴를 가진 파란 바탕화면을 볼 수 있음 🙂
Firefox도 있고 하니 인터넷이 된다면 그 때부터는 인터넷으로 모든 패키지나 소프트웨어등을 받을 수도 있고 놀 수도 있다 ㅎ



4. 뭔가는 해봐야지–;;

Unix/Linux 계열의 얼굴마담 소프트웨어인 Apache+MySql+PHP를 설치해보기로 결정

# su (관리자 패스워드 입력)
# pkg install amp

기다리면 끝;;

아 쉽다 -ㅅ-;;

데비안 만든 사람이 Sun으로 옮겨 간 후에 참가해서 그런지 데비안 기반의 리눅스가 가지고 있는 설치의 편리함이 솔라리스에도 녹아들어가있음 🙂

5. 모듈들 실행
/usr/apache2/2.2/bin/apachectl start
/usr/mysql/5.0/bin/mysql_install_db –user=mysql
/usr/mysql/5.0/bin/mysqld_safe &

그리고 나서 Firefox 열고 http://localhost 하면

아마도 It works! 화면이 반겨줄듯~ 🙂
mysql 은 경로 찾아 들어가서 접속하면 바로 될듯 하고
php는 phpinfo() 해보니 잘 출력되더라는~ 이렇게까지만 되어도 일단은 만족~ ㅎ

이제 솔라리스로 서버도 깔 수 있게 되었으니 mysql 기본 사용법은 검색하면 아주 많이 나오니 그거 따라하면 되고 백업도 되고 아파치도 돌고 하니 프로덕션으로 써도 큰 문제는 없는 환경까지는 만들었음 🙂

물론-_-;; 이렇게 환경 만들면 난리나지만서도;;;;;
리눅스 말고 솔라리스! 에서 돌아가잖아~ 🙂

ps. 사실 솔라리스 사용자들이 극찬을 마지않는 ZFS 파일 시스템이 써보고 싶어서 솔라리스에 관심이 있었는데 이제서야 내 실력으로 설치 정도는 할 수 있는 패키지가 나오기 시작하는듯.. 기존에는 깔기만 했지 이거 뭐 제대로 돌려본 적이 없었으니 ㅠㅠ

Homewood resort

잠시(?) 스키장에 다녀왔습니다..

잠시 라고 하기에는 이동거리 560마일.. 한국으로 치면 서울 부산을 왕복을 해야지 스키장에 갔다 올 수 있는 거리이기에 이래저래 고생을 좀 하긴 했지만 내가 운전을 안했기에 ㅋㅋ 나름 편안하게 다녀올 수 있었다라는 🙂 그래도.. 서울 부산 왕복 움직이지 않고 차에서 가만히 있는 것도 참 힘들더라는;;

homewood resort라는 곳이 미국에와서 처음으로 가보는 리조트가 되었는데.. 12월말부터 몇백 인치의 눈이 내렸었고 전날에도 한 20~30cm정도의 눈이 내렸던 지라 인공눈이라는 건 찾아보기 힘들정도.. 다만 모두 자연설이라 경사가 조금만 없으면 나가질 않아서 참 힘들더라는 -_-;;; 초급보다 중급이 쉬워요~ 🙂

다만 조심해야 할 것은.. 어딜 가더라도.. 떨어지면 죽을 수 있으니 조심 해야한다는거 –;;

일단 잘 다녀왔으니.. 이제는 긴축제정으로 돌입~!