4년만에 Macbook pro
I love it! 🙂
/re:how to be a dolphin?
Archive for the ‘-ㅂ-’ Category.
I love it! 🙂
mysql clustering을 만들어 봅시다
일단 지금 사용하고 있는 데이터의 양을 계산을 하는 것이 먼저
1기가의 데이터가 저장되어있는 테이블이 있다라면 최소로 필요한 메모리는 약 3GB!!
3GB는 최소 사양.. 저기에 옵션이지만 replica를 돌리는 경우 + 3GB 하시고 데이터 늘어나거나 하는 것들 감안해서 1~2GB는 여유있게 마련을
replica 없이 구성을 하면 4~5GB replica가 있는 상태로 구성하면 7~8GB
시간이 지나고 아.. 데이터가 늘어난다
짠~ 하고 10GB가 되었음
위에 굵은 글씨의 메모리 용량에 10배를 해주세요
[……..]
삼성 반도체 아들이 설계 했나-_-;;
결론 : 재미는 있지만 (지금 입장에서는) 쓸모 없다
많은 Apache 프로젝트 중 하나
Facebook이 사용하고 있고 (라기보단 저기서 부터 시작 되었고) 최근에 Twitter도 사용하기로 했다라는 환상의(?) DB
아직 잘 안써봐서 모르겠지만.. 첫 느낌은..
‘자바를 이용한 배열+배열의 인덱싱’
문서도 안 읽어보고 그냥 내 맘대로 깔고 실행해본 결과의 느낌임 ㅎ
내심 나중에 이 글을 보면서 땅을 치며 후회하길 살짝은 바라고 있기도 함;;
자세한 소감은 좀 써본 다음에 이어서 🙂
에사마가 좋아하는 Wow의 레이드 말고-_-;;
sudo do-release-upgrade;
압축 백업 기능.. Backup compression 임..
윈도 2003이 제대로 활성화 될 즈음으로 해서 무르익던 시장이 하나 있었으니.. 그게 바로 가상화..
너가 사용하고 있는 하드웨어는 이미 너무 강력해서 하나만 돌리기엔 아까우니 여러개를 돌리자~ 라는 개념으로 시작된 가상화의 선두주자인.. vmware가 해당 시장을 나름 개척 및 발전을 시켜나가고 있는데 이게 위협? 이라고 생각을 했는지 나중에 돈이 될 것이라 판단을 했는지.. MS에서는.. 해당 기술을 Windows 2008에 추가 기능으로서 내놓으며 vmware에 도전장을 내밀었음.. 물론 첫 번째 버전이고 MS에서 만들었으니 지원되는 OS는 기본적으로 ‘Windows’ 기반의 서버 또는 클라이언트 들을 주로 지원을 하는 형편..
이래저래 궁금하기도 했고 R2 버전들의 RTM도 완성이 되어가고 해서 테스트 컴에다가 깔아놓고 간단하게 테스트를 해봤음..
일단.. vmware를 사용해봤던 사람이라면.. 그리고 윈도 서버군 (아니어도 상관없음) 을 써봤다라면 큰 문제 없이 설치 및 사용을 할 수 있을 정도로 편하게 잘 되어있는듯..
가상 CPU의 설정 및 메모리 설정, 네트워크 카드 추가의 설정 등의 기본 기능들이 잘 지원되서 머신 하나에 여러개의 가상 호스트의 설치가 가능하고 vlan을 지원하니까 서로 같은 물리적 머신에서 돌지만 실제로는 완전 다른 네트워크 상에서 돌리는 것도 가능하게 되어있으니 만약 호스트 서버 (Hyper-v를 돌리는) 의 리소스가 좀 좋은 상황이라면 여러대의 가상 머신을 돌리는 것도 문제는 아니라는 생각.. 물론 가상화 소프트웨어가 할 일이 이것이지만 ㅎ
사용할 수 있는 OS의 폭이 좀 좁다라는 것이 아쉽긴 한 편.. 대부분이 윈도계열 서버이고.. 리눅스의 경우에는 Redhat enterprise 그리고 Suse enterprise를 지원하는데.. 과연 Redhat enterprise를 돌릴 사람들이 윈도에다가 가상호스트로 저걸 굴릴지는-_-; 의문이든다;; 레드햇 깔고 kvm이나 xen으로 ‘윈도’를 돌리면 돌리지 윈도에서 과연 저걸 돌릴까 싶은 ㅋㅋ
사용해보고 hyper-v가 가장 잘 먹혀들어갈 수 있는 곳이라고 생각된 곳은 다름이 아니라 ‘테스트 환경 구축’ 이 부분.. 윈도 환경으로 테스트 환경을 만들어야하는데 테스트 서버는 부족하고 (돈을 안준다라는 소리) 공간도 모자라고 전기세도 아깝고 한다라면 이거 이상 좋은 대안도 없다라고 생각..
호스트 서버를 테스트 서버 1로 가상 호스트 2개 더 설치해서 2, 3번의 테스트 서버를 구축해 놓으면 말 그대로 3대가 필요한 테스트 환경을 약간의 추가 메모리가 들어간 서버 1대로 3대의 OS를 돌릴 수 있는 상황이니까 🙂 나쁘지 않은 계산 ㅎ 거기에 스냅샷 기능이 들어가 있으니 돌리고 싶을 땐 맘대로 돌리고~
실제 제품으로 사용하기에는.. 글쎄다 싶다.. 내가 배정받은 자원으로는 Live migration을 테스트 할 수 없었지만.. 잘 된다라면 좋은 기능이지만.. 한정된 OS지원이 역시나 걸리며 다음 버전 정도 되어서는 이상한 라이센스 정책이 나오면서 한 번 더 망가지지 않을까 싶은 생각이 떠나질 않아서;; (제발 라이센스 좀 쉽게 해줘 -_- 이 사람들아)
vmware도 마찬가지이지만.. 적당한 cpu + 빠른 그리고 많은 Hdd + 많은 또는 아주 많은 Memory 이렇게 된다라면 어지간한 윈도 환경은 만들 수 있을 것 같은 기능을 가지고 있으니… 궁금하면 한 번 정도는 써보고 실제 테스트 환경에서 적용시키는 것도 나쁘지 않을 것 같다 🙂
1. 일일이 카운트 한다 – 정확도 100%
2. System table 에 저장되어있는 row count 를 참조 한다 – 정확도 1번과 비교하면 약간 떨어짐
물론 정확해야한다면 1번으로..
다만.. 데이터의 증감 또는 분위기 파악 정도로 할 때에 테이블 한 두개면 모를까.. 많으면 1번의 경우 토나오는 작업이 되는 것이 현실..
그래서 2번을 사용하는 경우가 있는데.. 이 때 사용하는 쿼리
——————————————
select B.name, A.rowcnt
from sysindexes AS A with (nolock)
JOIN sys.tables as B with (nolock)
ON A.id = B.[object_id] and A.indid < 2
order by [name] asc
——————————————
시스템 테이블에 저장되어있는 row count와 table 이름을 조합하여 테이블의 row 갯수를 반환 받을 수 있음..
가끔은 편리함 🙂
1. Cal
DB서버 두 대가 있음
Linked server 로 묶어도 놨음
다른 쪽 서버의 데이터를 불러오긴 해야함..
select *
from SERVER.DB.SCHEMA.TABLE
vs
select *
from OPENQUERY(SERVER, ‘SELECT * from DB.SCHEMA.TABLE’)
지금까지의 내가 느낀 것으론 승자는 OPENQUERY
이 기종에서도 동일 기종 동일 네트워크에서도 속도 차이는 좀 많이 나는 편..
특별한 상황이 아닌 이상 OPENQUERY를 더 많이 쓰게 되었다라는..
문제는 작성하는게 귀찮다라는거 -ㅂ-;;
윈도에서는 좀 귀찮지만 Windows 2000 Resource kit에 있는 forfiles.exe 라는 파일을 받아야함
Windows NT 5.0 이상이면 적어도 지금까지는 정상적으로 동작을 했으니
자세한 옵션은 forfiles /? 하면 주욱 나올꺼고..
*.log 파일 옮기기
forfiles /P c:\ /S /M *.log /c “cmd move @file d:\backup”
*.log 복사하기
forfiles /P c:\ /S /M *.log /c “cmd copy @file d:\backup”
이렇게 되면 C드라이브 하단에 있는 서브디렉토리까지 싸악다 긁어서 d:\backup 폴더로 옮김
옵션이 많지도 않으니 적당히 조합해서 스케쥴러에 등록해놓으면 편리하다능~
내가 많이 쓰는 옵션은
/S 서브디렉토리
/M 파일 이름 검사
/D 날짜 검사
이정도 인듯.. /D -15 하면 파일의 수정일이 15일 보다 오래된 녀석들이 검사가 됨
혹시나 예전에 DOS를 사용하셨던 분이라면 뒤에 명령어에 도스 명령어 넣으면 무한 확장가능ㅋ하고 ㅋ 잘 기억이 안나서 오타가 있을 수 있지만 큰 뼈대는 저거랑 같으니 에러나면 그냥 적당한 부분 고쳐서 쓰면 될듯;;
내 경우에는 맥에서 사진 파일을 한꺼번에 옮기는거 때문에 사용했지만..
실무에서는 log 파일들을 옮길때 사용하면 참 편할듯 🙂
find 명령어의 옵션이니 . 대신에 경로를 적어주면 해당 경로의 하위 디렉토리를 검사 하게 될테니 그건 알맞게 수정하면 됨..
1. 옮길때
find . \( ! -name “*.log” \) -type f -exec mv {} /목적경로 \;
2. 복사할때
find . \( ! -name “*.log” \) -type f -exec cp {} /목적경로 \;
차이점은 mv냐 cp냐의 차이;;
특정 이름을 가진 파일들 또는 확장자를 가진 파일들을 쉽게 옮겨 봅시다~ 🙂
몇 일 수준을 넘어가 몇달.. 그리고 햇수까지 넘어가서 작년에 벌어진 일이긴 하지만 ㅋ
전자제품, 컴퓨터, 자동차 등 하드웨어의 스펙은 죽어라 읽고 익히고 하면서도 정작 소프트웨어 스펙은 ‘그냥 깔고 쓰면 되지’ 라는 생각이 워낙 강해서-_-;; 당시 베타였던 SQL 2008이 CTP버전으로 제공이 되고 있을때 깔아서 써보고 가장 맘에 들었던 기능중의 하나인 압축백업! compressed backup 이 기능 하나만으로도 SQL 2008은 살 만한 가치가 있다라고 생각했고 정식판이 나오기를 아기다리고기다렸는데..
정식판이 나와서 깔고 두둥~ 압축백업 시작~했는데 안된다.. 메시지가 나왔는데…
‘너가 깐 에디션에서는 안됨(ㅋㅋ), 설명서 좀 읽어보셈’ ← 이렇게 보였음-_- 물론 공손한 말로 적혀있었지만
그래요.. 전 Standard edition을 깔았었지요
저 좋은 기능을 그냥 제공하기는 싫었던 모양;;
사용조건이 Enterprise edition 이었으나.. 소프트웨어 스펙을 제대로 읽어보지 않고 그냥 맘대로 덤빈것이 화근..
후우..
mp3 하나 살때도 8기가짜리네 16기가 짜리네.. 싸구려 이어폰을 볼때도 음역대역이 이건 이렇네 같이 이상한것들은 봤으면서 정작 내가 정말 쓰고 싶은 기능에 대한 요구사항은 제대로 알아보지 못한.. 케이스..
결론 : 압축백업 기능은 SQL 2008 Enterprise edition에서 지원됩니다.. 돈을 바르세요! 싫으면 알아서 압축 하던가 -ㅂ-;
이를 해결 하기 위해서는 모든 서버들은 도메인으로 – 액티브디렉토리를 사용하여 도메인 구조로 묶게 되면 해결이 되지만 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의 시간을 벌 수 있을듯~
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 파일 시스템이 써보고 싶어서 솔라리스에 관심이 있었는데 이제서야 내 실력으로 설치 정도는 할 수 있는 패키지가 나오기 시작하는듯.. 기존에는 깔기만 했지 이거 뭐 제대로 돌려본 적이 없었으니 ㅠㅠ
오늘 간만에 한번 실무에서 써봤으니 까먹지 않게 정리 한판..