Loading...
MySQL 9.5 Reference Manual 9.5의 7.7 Running Multiple MySQL Instances on One Machine의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
7.8.1 Setting Up Multiple Data Directories
7.8.2 Running Multiple MySQL Instances on Windows
7.8.3 Running Multiple MySQL Instances on Unix
7.8.4 Using Client Programs in a Multiple-Server Environment
어떤 경우에는 하나의 머신에서 여러 개의 MySQL 인스턴스를 실행하고 싶을 수 있습니다. 예를 들어, 기존의 프로덕션 환경은 그대로 둔 채 새로운 MySQL 릴리스를 테스트하고 싶을 수 있습니다. 혹은 서로 다른 사용자에게, 각자가 직접 관리하는 서로 다른 mysqld 서버에 대한 접근을 제공하고 싶을 수도 있습니다. (예를 들어, 서로 다른 고객에게 독립적인 MySQL 인스톨레이션을 제공하려는 Internet Service Provider일 수 있습니다.)
각 인스턴스마다 서로 다른 MySQL 서버 바이너리를 사용할 수도 있고, 여러 인스턴스에 동일한 바이너리를 사용할 수도 있으며, 이 두 가지 접근법을 조합해서 사용할 수도 있습니다. 예를 들어, 주어진 워크로드를 서로 다른 버전이 어떻게 처리하는지 확인하기 위해 MySQL 9.4와 MySQL 9.5 서버를 각각 실행할 수 있습니다. 또는 각기 다른 데이터베이스 집합을 관리하는 현행 프로덕션 버전의 여러 인스턴스를 실행할 수도 있습니다.
서로 다른 서버 바이너리 사용 여부와 무관하게, 실행하는 각 인스턴스는 여러 운영 파라미터에 대해 고유한 값을 갖도록 설정해야 합니다. 이는 인스턴스 간의 충돌 가능성을 제거합니다. 파라미터는 커맨드 라인, 옵션 파일, 또는 환경 변수 설정을 통해 지정할 수 있습니다. 자세한 내용은
Section 6.2.2, “Specifying Program Options”을 참조하십시오. 특정 인스턴스에서 사용 중인 값을 확인하려면, 그 인스턴스에 접속한 후
SHOW VARIABLES 문을 실행합니다.
MySQL 인스턴스가 관리하는 기본 리소스는 데이터 디렉토리입니다. 각 인스턴스는 서로 다른 데이터 디렉토리를 사용해야 하며, 해당 위치는
--datadir=dir_name
옵션을 사용해 지정합니다. 각 인스턴스를 고유한 데이터 디렉토리로 구성하는 방법과, 이를 수행하지 않았을 때 발생할 수 있는 위험에 대한 경고는
Section 7.8.1, “Setting Up Multiple Data Directories”을 참조하십시오.
서로 다른 데이터 디렉토리를 사용하는 것 외에도, 다음의 여러 옵션은 각 서버 인스턴스마다 서로 다른 값을 가져야 합니다:
--port는 TCP/IP 연결에 사용되는 포트 번호를 제어합니다. 또는 호스트에 여러 개의 네트워크 주소가 있는 경우, 각 서버가 서로 다른 주소를 리슨하도록
bind_address 시스템 변수를 설정할 수 있습니다.
--socket는 Unix에서는 Unix 소켓 파일 경로를, Windows에서는 네임드 파이프 이름을 제어합니다. Windows에서는 네임드 파이프 연결을 허용하도록 설정된 서버에 대해서만 서로 다른 파이프 이름을 지정해야 합니다.
이 옵션은 Windows에서만 사용됩니다. 이는 Windows 서버가 공유 메모리를 사용하여 클라이언트가 공유 메모리를 통해 연결하도록 허용할 때 사용하는 공유 메모리 이름을 지정합니다. 공유 메모리 연결을 허용하도록 설정된 서버에 대해서만 서로 다른 공유 메모리 이름을 지정해야 합니다.
이 옵션은 서버가 자신의 프로세스 ID를 기록하는 파일의 경로 이름을 나타냅니다.
다음과 같은 로그 파일 옵션을 사용하는 경우, 각 서버마다 값이 서로 달라야 합니다:
로그 파일 옵션에 대한 추가 논의는 Section 7.4, “MySQL Server Logs”를 참조하십시오.
더 나은 성능을 위해, 다음 옵션을 서버마다 다르게 지정하여 여러 물리 디스크에 부하를 분산할 수 있습니다:
서로 다른 임시 디렉토리를 사용하면, 특정 임시 파일을 어떤 MySQL 서버가 생성했는지 파악하기도 더 쉬워집니다.
서로 다른 위치에 여러 개의 MySQL 인스톨레이션이 있는 경우, 각 인스톨레이션의 베이스 디렉토리를
--basedir=dir_name
옵션으로 지정할 수 있습니다. 이렇게 하면 각 인스턴스는 자동으로 서로 다른 데이터 디렉토리, 로그 파일, 그리고 PID 파일을 사용하게 되는데, 이는 각 파라미터의 디폴트가 베이스 디렉토리를 기준으로 상대 경로이기 때문입니다.
이 경우, 추가로 지정해야 하는 옵션은
--socket과
--port뿐입니다. 예를 들어, 서로 다른 버전의 MySQL을 tar 파일 바이너리 디스트리뷰션을 사용하여 설치한다고 가정해 봅시다. 이들은 서로 다른 위치에 설치되므로, 각 인스톨레이션의 베이스 디렉토리 아래에서 bin/mysqld_safe 커맨드를 사용해 각 인스톨레이션의 서버를 시작할 수 있습니다.
mysqld_safe는
mysqld에 전달할 적절한
--basedir 옵션을 결정하며, 사용자는
--socket과
--port 옵션만
mysqld_safe에 지정하면 됩니다.
다음 절에서 설명하듯이, 적절한 커맨드 옵션을 지정하거나 환경 변수를 설정하여 추가 서버를 시작하는 것은 가능합니다. 그러나 여러 서버를 보다 영구적으로 실행해야 하는 경우, 각 서버에 대해 고유해야 하는 옵션 값을 옵션 파일에 지정해 두는 편이 더 편리합니다.
--defaults-file 옵션은 이러한 용도로 유용합니다.
7.6.2 Obtaining Information About Loadable Functions
7.8 Debugging MySQL