대부분의 사람들은 지정된 시스템에서 단일 MySQL 서버를 실행하지만 여러 서버를 실행하는 것이 유익한 상황이 있습니다. 실행 중인 프로덕션 서버에서 서버의 새 버전을 테스트할 수 있습니다. 이 경우 다른 서버가 실행됩니다.
운영 체제는 일반적으로 열린 파일에 대한 설명자 수에 대한 전체 프로세스 제한을 적용합니다. 시스템에서 제한을 높이는 데 어려움이 있는 경우 여러 서버를 실행하는 것이 해결 방법입니다(예를 들어 제한을 높이려면 커널을 다시 컴파일해야 할 수 있으며 시스템이 관할권 밖에 있는 경우 아직 그렇게 하지 못할 수 있습니다). 이 시나리오에서는 동일한 서버의 여러 인스턴스를 실행 중일 수 있습니다.
인터넷 서비스는 종종 고객에게 별도의 서버가 필요한 자체 MySQL 설치를 제공합니다. 이 경우 서로 다른 고객이 서로 다른 버전의 MySQL을 요구하는 경우 동일한 서버 또는 서로 다른 서버의 여러 인스턴스를 실행할 수 있습니다.
물론 여러 서버를 동시에 실행하는 것은 하나만 실행하는 것보다 더 복잡합니다. 여러 버전을 설치하려는 경우 동일한 위치에 모두 설치할 수 없습니다. 서버가 실행 중일 때 특정 매개변수는 각 서버마다 고유해야 합니다. 이러한 매개변수 중 일부에는 서버가 설치된 위치, 즉 데이터 디렉터리의 경로 이름, TCP/IP 포트 및 UNIX 도메인 소켓 경로 이름, 여러 서버를 실행하는 데 사용되는 UNIX 계정(모두 동일한 계정 서버에서 실행되지 않는 경우)이 포함됩니다. 여러 서버를 실행하기로 결정한 경우 실행 추적을 잃지 않도록 사용 중인 매개변수에 대한 설명을 잘 유지해야 합니다.
여러 서버 구성 및 설치
동일한 서버의 여러 인스턴스가 아닌 다른 버전의 서버를 실행하려는 경우 이를 다른 위치에 설치해야 합니다. RPM이 아닌 바이너리 배포 패키지를 설치하는 경우 버전 번호가 포함된 디렉터리 이름에 설치됩니다. 소스 배포판에서 설치하는 경우, 서로 다른 배포판을 별도로 유지하는 가장 쉬운 방법은 각 버전의 MySQL 설치 중에 구성을 실행할 때 --with-prefix 옵션을 사용하는 것입니다. 그러면 배포 버전 번호에 연결될 수 있는 별도의 디렉터리에 설치됩니다. 예를 들어 다음과 같이 MySQL 배포 패키지를 구성할 수 있습니다. 여기서 version은 MySQL 버전 번호입니다.
% ./configure ..with-prefix=/usr/local/mysql-version
with-prefix 옵션은 서버의 고유한 데이터 디렉터리도 결정합니다. TCP/IP 포트 및 소켓 경로 이름(--with-tcp-port 및 --with-unix-socket)과 같은 다른 서버별 값을 구성하는 옵션을 추가할 수 있습니다.
동일한 서버의 여러 인스턴스를 실행하려는 경우 런타임 시 서버와 관련된 모든 옵션을 지정해야 합니다.
다중 서버 시작 프로세스
safe_mysqld와 mysql.server가 모두 단일 서버에서 잘 작동하기 때문에 여러 서버를 시작하는 것은 단일 서버를 사용하는 것보다 더 복잡합니다. 저자는 필요에 맞게 수정된 보다 세부적인 복사본을 사용하지 않는 한 safe_mysqld를 주의 깊게 연구하고 이를 시작 프로세스의 기초로 사용할 것을 권장합니다.
처리해야 할 한 가지 문제는 옵션 파일에서 옵션을 지정하는 방법입니다. 여러 서버를 사용하는 경우 전체 서버를 기준으로 변경되는 설정에는 /etc/my.cnf를 사용할 수 없으며 모든 서버에 대해 동일한 설정에만 이 파일을 사용하십시오. 각 서버의 데이터 디렉터리 위치가 서로 다른 경우 my.cnf 파일에서 각 서버의 데이터 디렉터리에 대한 서버별 매개변수를 지정할 수 있습니다. 즉, 모든 서버에서 사용되는 설정에는 /etc/my.cnf를 사용하고, 서버별로 DATADIR이 변경되는 설정에는 DATA DIR/my.cnf를 사용합니다.
서버 옵션을 지정하는 또 다른 방법은 - - defa ul ts - file =path_name을 명령줄의 첫 번째 옵션으로 사용하여 서버가 path_name에 지정된 파일에서 옵션을 읽도록 지시하는 것입니다. 이런 방식으로 해당 파일의 서버 옵션을 해당 서버에 고유하게 배치한 다음 시작 시 서버에 파일을 읽도록 지시할 수 있습니다. 이 옵션을 지정하면 일반적인 옵션 파일(예: /etc/my.cnf)이 사용되지 않습니다.