Posts tagged ‘db’

How to install mongodb on ubuntu 우분투에서 몽고db 설치

How to install MongoDB on Ubuntu
우분투에서 몽고DB 설치 하기
1. sudo su
2. apt-key adv –keyserver keyserver.ubuntu.com –recv 7F0CEB10
3. Add following line on /etc/apt/sourlist.list
deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen
4. apt-get update
5. apt-get install mongodb-10gen
6. type mongo on terminal

그리고 터미널에서 mongo 라고 치면 바로 접속됨..
어떻게 사용하는지는..


ps. 김화백님께 이 글을 바칩니다.. 왜??

mysql clustering 클러스터링 만들기

mysql clustering을 만들어 봅시다

일단 지금 사용하고 있는 데이터의 양을 계산을 하는 것이 먼저

1기가의 데이터가 저장되어있는 테이블이 있다라면 최소로 필요한 메모리는 약 3GB!!

3GB는 최소 사양.. 저기에 옵션이지만 replica를 돌리는 경우 + 3GB 하시고 데이터 늘어나거나 하는 것들 감안해서 1~2GB는 여유있게 마련을

replica 없이 구성을 하면 4~5GB replica가 있는 상태로 구성하면 7~8GB

시간이 지나고 아.. 데이터가 늘어난다
짠~ 하고 10GB가 되었음

위에 굵은 글씨의 메모리 용량에 10배를 해주세요

[……..]

삼성 반도체 아들이 설계 했나-_-;;

결론 : 재미는 있지만 (지금 입장에서는) 쓸모 없다

Cassandra database

많은 Apache 프로젝트 중 하나
Facebook이 사용하고 있고 (라기보단 저기서 부터 시작 되었고) 최근에 Twitter도 사용하기로 했다라는 환상의(?) DB

아직 잘 안써봐서 모르겠지만.. 첫 느낌은..

‘자바를 이용한 배열+배열의 인덱싱’

문서도 안 읽어보고 그냥 내 맘대로 깔고 실행해본 결과의 느낌임 ㅎ
내심 나중에 이 글을 보면서 땅을 치며 후회하길 살짝은 바라고 있기도 함;;

자세한 소감은 좀 써본 다음에 이어서 🙂

DB monitoring 환경을 만들고 있음..

* 가장 큰 이유는 내가 귀찮기에–;; 갑자기 연락 받아서 허둥 대는 것이 그닥 좋지는 않더라

* 중국애들 무섭더라 -_-; 겁나 치고 들어오려고 하는 경우가 많은데 좀 빡시게 감시를 해야할 필요가 생겼음
* 단순 시스템 모니터링으로는 만족스럽지 못한 부분이 역시나 있었다
* 아예 감사 시스템을 도입하려 했다만.. 자원이 너무 많이 필요하다
* 전화기에 목이 메일 수도 있겠다라는 생각..
* 근데 안그러면 다음날 피곤해지는게 대박-_-;;
* 그러다가 정말 목 날아갈 수도 있….   -ㅂ-;;
* 이거 때문에 회사에 블랙베리 신청했는데.. 안 주면 뭐 중요하지 않다라는 것으로 받아들여야 할 것 같음
* 대단한거 아니지만.. 그리고 예전부터 했어야 하는 거지만.. 있는거 그냥 쓰는거지만.. 드디어 시작은 함..
* 01/05/2010 10:22PM 덧붙임
모니터링이고 나발이고 발등에 떨어진 일 처리하기 바쁨 -ㅂ- 잔인한 1월~ 🙂

테이블 Row수가 궁금하다면??

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 갯수를 반환 받을 수 있음..

가끔은 편리함 🙂

DB Migration

이 정도 크기의 마이그레이션은 세 번째 인것 같은데

두번은 일본에 있을때 진행 했었고.. 오늘 미국 입국 1주년 기념으로 ㅋ 날 밤을 홀랑까면서 진행을 하고 이제서야 들어왔다..

언제나 느끼는거지만.. 컴에서 가장 느린 부분은 다름이 아닌 HDD -_-;;
너무 했어-_-;; 좀 큰 녀석 마이그레이션 하다보면 언제나 나오는 하드디스크의 병목 현상..

예정보다 거의 90여분 가까이 더 걸린 작업이 되었지만.. 70여분은 방화벽 때문에 발생한 일이었으니;;
뭐 위안을 삼아봐야지 🙂

그래도 예전에 정리해놨던 문서들이 가끔씩 쓸모가 있을 때가 있어서 은근히 기쁠때가 많다라는 ㅎ
내일부터는 공부 관련 내용으로 잠깐만 집중해봐야지 ㅋ

Microsoft SQL Server 라이센스를 공부해 봅시다.. -_-+

나름 헷갈릴 수 있는 MSSQL 라이센스 나름 간단 요약본..

1. Cal

구입하면 5명 들어있음..
관리자 2명인가? 1명인가.. 는 따라옴.. 따라서 5명은 서버에 접근하려는 사람.. 1명 또는 2명의 관리자 계정해서 총 6~7명이 접근을 할 수 있음..
2. Process license
SQL 라이센스 계의 엄친아.. 모든 것이 이거 한방이면 끝..
Process license를 구매했다면 10명이 접속하던 100만명이 접속하던 상관없음 ㅎ
언제나 궁금한 건.. 웹 서비스 or 미들웨어 서비스.. (요즘 이거 말고 다른게 어디에 있겠냐만 -_-)
웹서버가 DB서버에 접속해서 일반 사용자들에게 데이터를 제공한다면.. 그 접속자 1명 1명 cal을 사던가 (하지 말라고 있는 옵션이랄까) Process license를 구매 해야함.. 한 프로세서 1개당 500만원 정도 할 듯..
그러니.. 듀얼코어 or 쿼드코어 CPU 2개가 들어가 있다라면.. 500만원 x 2 해서 1000만원이 필요함.. 그러니.. 어지간하면 하드웨어는 쿼드코어 이상으로 구매를 추천.. (램처럼 코어도 다다익선 CPU가 조금 비싸져도 라이센스가 싸짐 ㅎ)
미들웨어 서비스의 경우
사용자 – 중간프로그램 – DB 인 경우..
중간 프로그램이 단 이용자를 1개만 이용하더라도 그 데이터를 일반 사용자들이 이용하기에 위의 웹 서비스와 완전 동일.. 별반 다를 것 없음.. 저 중간프로그램을 단지 웹서버 Apache or IIS 등으로 바꾸면 상황이 똑같으니..
금액도 마찬가지로 다 같음
결론.. 뭐라도 유저들에게 서비스(!) 를 하려고 하십니까??
Process license 말고는 답 없습니다 🙂
인트라넷을 만드십니까??
직원이 50명 정도면 그냥 Cal과 Process license 사이에서 갈등을.. 그것 보다  많다면 Process로 적다면 Cal로.. 다만.. Express edition으로 해결이 된다면.. (하드웨어 제한이 있음) 그냥 express 쓰는게 나은 선택..
TCO가 저렴하다는 것은.. Oracle 또는 IBM DB2에 비교해서지.. 일반적인 기준으로도 아주 싸다는 것은 아니니 참고를;;;; (저러고도 싸단 이야기가 나온다라는 것은 Oracle, DB2의 가격은? ㅎㅎ)
ps. 그냥 중소기업이면.. linux + mysql or postgresql + php 로 가는게 답.. MSSQL 을 써야하는 입장에서 현재 호스팅 받고 있다라면 rental 을 하는 것이 나을 것이고.. 한달에 얼마더라..;; 기억이 가물가물..;;

MS 라이센스 삽질.. -_-+

MS제품을 쓰다보면.. 사실 돈 값은 한다라는 느낌이 강하게 드는 편이다..

일반적으로 쓰게되는 XP나 비스타 같은거야.. 컴 사면 딸려서 오기에 상관이 없다만 실제로 좀 큰 돈을 들여서 구매를 해야하는 서버 쪽 제품에서는 들인 돈 만큼 그 정도의 일은 하는 것 같다..
단..
가장 저렴한 가격만 놓고 본다면 -_-;;
예전에 Windows 2000 + MSSQL + ASP 의 조합이 한참 인기몰이를 하고 있을 때 MS에서 삽질을 하나 한게 있는데.. IIS의 익명유저로는 인터넷 서비스를 못하게 하는 라이센스를 만들어 버린 것..
이유인 즉슨.. 일반 가정용 OS와는 달리 서버 쪽에서는 사용자 단위로 과금을 하고 라이센스를 팔고 그랬었는데.. 이게 윈도 관리자 계정 + IIS 익명 유저 1명만 있으면.. 제작 및 수정은 관리자 계정으로 서비스는 익명 유저로 해서 만들어버리면.. 서버 OS의 가장 최초 옵션에 있는 CAL 5 라는 5명 유저만 덜렁 구입을 하고서는 서비스를 해도 어찌 할 방도가 없는 상황이 발생을 해버린 것임;;
돈을 뽑아내야할 기업시장에서.. 돈 줄이 막혀버린셈-_-;;
DB의 경우에도 시작패키지인 5명짜리 계정 하나 산다음에 관리자가 DB설정하고 어플리케이션이 연결하는 DB계정 1개만 설정한 다음에 나머지 권한들을 웹에서 막아버리는 ‘짓’ 을 하게 될 경우 DB 라이센스를 팔아야하는데 살 필요가 없는데 사라고 할 수도 없고 애매한 것이라-_-;;
OS보다 DB는 더 비싼데.. 거기서도 돈 줄이 막혀버림-_-;;
이걸 보다보다 만들어 낸 것이 Internet Connector License 라는 헤괴한 이름의 라이센싱을 만들어서 ‘웹에서 접근을 하는 서비스가 있을 경우에는 이 라이센스를 구매하지 않으면 당신은 불법 사용자’ 라는 정책의 변경을 결정했고 결과로는 엄청난 혼란을 만들어 버리는 짓을 저지르고 말았다라는;;
이해는 가지.. 돈 벌어야 하는데.. 돈을 더 안내도 문제가 없는 구조였었으니까 -ㅂ-;;
그런데 Windows 2000 에서 라이센스 이름을 Internet Connector 라고 지어버리면서 무슨 생각들을 하게 되었냐면.. 난 인터넷 서비스가 아니라 게임 서비스임.. 이라던가.. 난 부동산 뭐 이런식으로.. 나는 인터넷이 아니에요 라는 이야기를 했을 경우에 아무런;; 대책이 없었다라는 것.. 그 결과 Windows 2003 부터는 External connector (EC) 라는 외부 커넥터로 한글로 표현되는 녀석을 탑재 하고 나타났던 것..
이 때 부터 DB는 아예 대놓고.. 그 혹시라도 ‘외부 유저에게 서비스 하는 경우’ 에는 CAL 라이센스가 아니라 Processor 라이센스를 구매하셈.. 이라는 방침이 나왔으며.. 가격은 좀 오버 더 보태서 10배정도를 더 내야하는 상황을 만들어 버림;;
이 고전적인 이야기를 왜 하게 되었냐면.. 갑자기 몇 일 전부터 저 라이센스라는 녀석이 은근히 신경쓰이게 하는 일이 생겼단 말이지;; 내가 소프트웨어를 구매하는 담당자가 아니기 때문에 해당 담당자는 필요하다 할때 구매 또는 기존에 구매했던 라이센스를 검토 후에 사용 이렇게 하게 되는데.. 막상 사놓고 못쓰는 라이센스도 있고.. 아예 몰라서 제대로 못 산 것도 있고.. 하는 문제가 발생했다라는 것..
거기에서도 저 위에 있는 녀석이 그 것의 핵심이라는 것 ㅠㅠ
Windows 2000 사용 할 때 저 이야기 때문에 ‘이건 뭥미’ 했던 나로서는 그 악몽이 다시 떠오르는 일이 아닐 수 없어서.. 그러한 상황을 만들어 준 MS가 미워 -_-;; 라이센스가 얼마나 복잡하면 파는 사람도 잘 몰라–;; 어떤 경우인지 어떻게 해야하는지..; 좀 간단하게 만들어 놨으면 좋겠어 그냥;; 머리 나쁘면 몸이 고생한다던데 이런 케이스인듯
다음 버전이 나올 때는 또 어떠한 제약 조건을 걸어놓고선 사용자들의 선택권을 늘려줄지.. 미묘하게 기대는 하고 있어.. 다만 그 때즈음 되면 선택하지 않았으면 좋겠어;;

IT 로 취직 쉽게 하는 방법

먼저.. 지금 일을 하고 계신 분들께서 보시면 좀 까칠 하게 생각 하실 수 있습니다
그리고 완전 개인적인 생각이니 동의 안하시면 그냥 1박 2일 보세요 ㅋ 그게 더 즐거워요 ㅎ

IT로 돈 벌고 나름 잘 살아남기 위한 방법

1. 지금이라도 늦지 않았습니다. Java를 하십시오
이유 – 지금 MS 기술의 그늘에서 월급 받는 중이라면 상관이 없지만 만약에 지금 시작을 하려는 분이라면.. Java를 하십시오.. 일반 소비자 시장에서 잘 먹히는 C++ 및 각종 MS기술보다 대규모 기업시장에서 많이 쓰이는 Java가 내 주머니에 돈을 가져다줄 확률이 더 높습니다.. 특히 외국에 나갈 생각이 있다라면 Java쪽이 좀 더 유리 할 수 있습니다

2. Web 관련 언어를 하나 정도는 익혀 두는 편이 좋을 수 있습니다
이유 – 전통적인 어플리케이션의 위치가 나름 많이 줄어드는 것 같습니다. 결국 프로그램이 하는 일은  DB에 값을 넣고 저장되어있는 DB의 값을 불러와서 원하는 모양새로 보여주는 것이 대부분인데.. 유지보수 및 관리가 나름 쉬운 웹 기반으로 제작이 되는 경우가 많으니 완전 까막눈만 아닐 정도로는 알아두면 나중에 대처하기가 쉬울듯.. 사실 Java나 C++를 공부 했으면 php에 접근을 하기 매우 쉬울 꺼고 그냥 쉽게 적응 할 수도 있을테니 완전 배척만 하지 말아주세요 🙂

3. DB를 다룰 줄 알면 편합니다
이유 – 한국에서는 개발자가 DB설계도 하고 쿼리도 짜야하고 알아서 다 해야하는 경우가 있으니 더욱 더 -_-;;
나중에 뻑나는건 나중일이 되는 경우가 많으니 일단은 지금 할 줄 아는 것이 중요하고.. DB의 중요성은 어디에서 누구에게 물어봐도 다 인정 할 껍니다.. 물론 DBA가 있다면 DBA를 더욱 괴롭히세요 🙂

4. 소프트웨어 개발을 포기 하세요
이유 – 그게 어찌보면 가장 나은 빠른 방법일 가능성도 있습니다
대안으로 공부를 해야 할 것은 네트워크, 보안 그리고 하드웨어 입니다

네트워크라는 것이 사실 매우 간단한데 프로그램의 어셈블리 같은 느낌이 강해서 접근을 하는 방법이 어렵지 개념이 잡혀 있으면 슬슬 따라오는 경우가 많습니다.. 다 따라오지 않는 것이 문제가 되기는 하지요 -ㅂ-;; 단점은 네트워크라는 것이 언제 장애가 발생을 할 지 모르기 때문에 24/7 대기를 해야하는 경우가 많이 생긴다라는 것..

하드웨어의 경우는 아무리 인터넷이 발전을 하고 컴퓨터가 발전을 해도 결국 어디에선가 서버라는 녀석이 보내주는 데이터에 의존을 해야하고 그 서버를 담당하는 자원이 생각보다는 모자라기에 서버 쪽의 하드웨어 (단순 서버 및 스토리지 포함) 쪽에 대한 이해도가 높다면 매우 큰 도움이 될 것입니다

그리고.. 가장 중요한…
뭔가 똥꼬가 찌릿찌릿하고 머리 속에서 떠나지 않는다라면 잡으세요..

다만 똥인지 된장인지 가려가면서 먹어야합니다 -_-;;
이게 참 어려운데.. 먹어보기 전에는 모르는 경우가 많기에.. 일단 간을 보고 제대로 씹기전에 삼킬지 뱉을지를 잘 결정해야 합니다..

돈 몇 푼 따라 갔다가 그거에 목 매달고 살게 될 수도 있으니.. 하고 싶은거 정해서 그거 잘 밀고 나가면 됩니다 🙂

SQL 2008 Service pack1 이 나왔습니다~

물론 몇 일 전에-_-;;

요즘 이것저것 손볼게 많아지면서 개인적인 시간이 완전 사라져버렸는데 그나마 오늘은 중간중간 짬이라도 좀 나네 🙂
SQL 2008을 사용 하시고 있다라면 필수로 업데이트를 해야하는 서비스 팩이 나왔습니다
다운로드는
이곳에서
물론 전 아직 설치하지 않았습니다
[……]
아 지겹다 -_-;

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의 시간을 벌 수 있을듯~

MySQL 에서 LOAD DATA INFILE 과정을 web에서 처리 할 때 필요한 권한

php등에서 리눅스 서버로 업로드 하고 나면 보통 /tmp 디렉토리에 올라가는데 해당 파일에서 MySQL로 LOAD DATA INFILE을 시도 할 경우 에러가 나게 될 가능성이 있으니 혹시라도.. 업로드 파일을 바로 사용할 경우에는 DB 사용자의 권한을 체크!
use mysql;
select * from user;
하면 유저들 정보가 주욱 다 나오는데 해당 권한들 중에서 import시 사용되는 유저의 file_priv 의 권한을 Y로 바꾸고 flush를 합시다 🙂

MSSQL – 회원들의 email provider를 뽑고 싶을때

다음에 또 치기 싫으니-_-;;
올려놔야지.. ㅋ

select    substring(email, (charindex(‘@’, email)+1), (len(email)-charindex(‘@’, email)+1)) as ‘mail providers’,
    count([id]) as ‘회원수’
from    [회원DB] with (NOLOCK)
group    by substring(email, (charindex(‘@’, email)+1), (len(email)-charindex(‘@’, email)+1))

이걸로 큰 귀찮음을 덜 수 있다면 다행!