• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 서비스
    • MySQL유지보수
    • MySQL라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL5.1 한글메뉴얼) [close]
  • 1. MySQL 5.1 Reference Manual
  • 2. Installing and MySQL 업그레이드하기
  • 3. 사용 설명서 (Tutorial)
  • 4. MySQL 프로그램 사용하기
  • 5. 데이터베이스 관리
  • 1. 서버 측면 프로그램 개요
    2. mysqld — MySQL 서버
    3. MySQL 서버 스타트업 프로그램
    4. mysqlmanager — MySQL 인스턴스 매니저
    5. 설치-관련 프로그램
    6. 일반적인 보안 이슈
    7. MySQL 접근 권한 시스템
    8. MySQL 사용자 계정 관리
    9. 백업 및 복구
    10. MySQL 자국어 (Localization) 설정 및 국제적인 사용
    11. MySQL 서버 로그
    12. 동일 머신에서 여러 대의 MySQL 서버 구동 시키기
    1. 윈도우 시스템에서 여러 대의 MySQL 서버 구동하기
    2. 유닉스 시스템에서 여러 대의 MySQL 서버 구동하기
    3. 다중 서버 환경에서 클라이언트 프로그램 사용하기
    13. MySQL 쿼리 캐시
  • 6. 리플리케이션
  • 7. 최적화 (Optimization)
  • 8. 클라이언트 및 유틸리티 프로그램
  • 9. 언어 구조 (Language Structure)
  • 10. 문자 셋 지원
  • 24. API 및 라이브러리
  • 25. Connectors

5.12. 동일 머신에서 여러 대의 MySQL 서버 구동 시키기

 

5.12.1. 윈도우 시스템에서 여러 대의 MySQL 서버 구동하기

5.12.2. 유닉스 시스템에서 여러 대의 MySQL 서버 구동하기

5.12.3. 다중 서버 환경에서 클라이언트 프로그램 사용하기

 

동일 머신에서 여러 대의 mysqld 서버를 구동해야 하는 경우가 종종 발생한다. 하나의 머신에서 여러 대의 서버를 구동시키기 위해서는, 각 서버별로 개별적인 여러 가지 동작 파라미터 값이 설정되어야 한다. 이 값들은 명령어 라인 또는 옵션 파일에서 지정할 수 있다. Section 4.3, “프로그램 옵션 지정하기”를 참조.

 

각각의 서버는 아래의 옵션들에 대해서 개별적인 값을 가지고 있어야 한다:

  • --port=port_num

--port는 TCP/IP 접속용 포트 번호를 제어한다.

  • --socket=path

--socket은 유닉스에서 유닉스 소켓 파일 경로를 제어하며, 윈도우에서는 네임드 파이프 이름을 제어한다. 윈도우에서는, 네임드 파이트 접속을 지원하는 서버에 대해서만 정확한 파이프 이름을 지정하면 된다.

  • --shared-memory-base-name=name

이 옵션은 현재 윈도우에서만 사용된다. 이것은 클라이언트가 윈도우 서버가 사용하는 공유 메모리 이름을 사용해서 접속할 수 있도록 하기 위한 것이다. 공유 메모리 접속을 지원하는 서버에 대해서만 정확히 지정하면 된다.

  • --pid-file=file_name

이 옵션은 유닉스에서만 사용된다. 이것은 서버가 자신의 프로세스 ID를 기록하는 파일의 경로 이름을 가리킨다.

 

아래의 로그 파일 옵션을 사용한다면, 이 옵션들은 각 서버 별로 서로 틀리게 지정되어야 한다:

  • --log=file_name
  • --log-bin=file_name
  • --log-update=file_name
  • --log-error=file_name

Section 5.11.6, “서버 로그 유지 관리”에서 로그 파일 옵션에 대한 사항을 자세히 알아보도록 한다.

 

여러 개의 디스크 간에 로드를 분산시키기 위해 각 서버 별로 아래의 옵션을 달리 지정하면 성능을 개선 시킬 수가 있다:

  • --tmpdir=path

서버 별로 임시 디렉토리를 달리 가지면 지정한 임시 파일을 어떤 MySQL 서버가 생성했는지 판단하기가 쉬워진다.

 

각 서버는 서로 다른 데이터 디렉토리를 사용해야 하는데, 이것은 --datadir=path 옵션을 사용해서 지정하도록 한다.

 

Warning: 일반적인 경우, 동일한 데이터 베이스에 두 대의 서버가 동시에 데이터를 업데이트할 수는 없다. 만약에 (이 경고에도 불구하고) 동일한 데이터 디렉토리를 사용해서 여러 개의 서버를 구동 하고 이 서버들의 로깅이 활성화 되어 있다면, 반드시 각 서버 별 로그 파일 이름을 지정하기 위한 옵션을 사용해야 한다. 그렇지 않으면, 서버는 동일한 파일에 로그를 시도할 것이다. 이런 형태의 설정은 MyISAM 과 MERGE 테이블만 지원하도록 해야 하며, 다른 스토리지 엔진에 대해서는 적용하지 않도록 한다.

 

서버간 공유 데이터 디렉토리에 대한 경고는 NFS 환경에서도 적용된다. 여러 대의 MySQL 서버가 NFS를 통해 공통의 데이터 디렉토리에 접근하도록 허용하는 것은 결코 좋은 생각이 아니다.

  • 가장 치명적인 문제는 바로 NFS의 버틀넥 (bottleneck) 발생이다.
  • 또 다른 문제는 두 개 또는 그 이상의 서버가 다른 서버들과 인터페이스를 하지 못하도록 수정을 해야 한다는 것이다. 일반적으로 NFS 파일 잠금은 lockd 데몬이 처리하지만, 모든 상황에서 100% 신뢰성을 제공해 주는 플랫폼은 존재하지 않는다.

보다 쉽게 생각을 하자: NFS를 통해서 서버들이 데이터 디렉토리를 공유하는 것은 잊어 버리자. 보다 좋은 솔루션은 쓰레드를 보다 효과적으로 처리하는 OS를 탑재한 다중 CPU 시스템을 하나 운영하는 것이다.

 

여러 대의 MySQL을 서로 다른 위치에 설치했다면, 각 서버별 베이스 설치 디렉토리를 --basedir=path 옵션으로 지정해서 각각의 서버가 서로 다른 데이터 디렉토리, 로그 파일, 그리고 PID 파일을 사용하도록 만든다. (이러한 모든 것들의 디폴트 값은 베이스 디렉토리와 관련이 있다). 이와 같은 경우, 여러분이 지정을 할 필요가 있는 한가지 다른 옵션은 --socket 과 --port 옵션이다. 예를 들면, tar 파일 바이너리 배포판을 사용해서 서로 다른 MySQL 버전들을 설치했다고 가정하자. 서로 다른 위치에 설치를 하였기 때문에, 여러분은 각각의 베이스 디렉토리 아래에서 명령어bin/mysqld_safe 를 사용해서 각각의 설치 서버를 시작할 수가 있다. mysqld_safe는 --basedir 옵션이 정확한지를 판단해서 mysqld에 전달하며, 여러분은 mysqld_safe에 대한 –socket 및 --port 옵션만 지정하면 된다.

서울시 강남구 영동대로 602 6층  TEL: 02-6061-0006
주식회사 이노클러스터  등록번호 : 727-86-02261
Copyright © innocluster Co. ltd. all rights reserved