Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL 서버 및 서버 시작 프로그램 총정리: mysqld부터 mysqld_multi까지

MySQL은 데이터베이스 서버를 실행하고 관리하기 위한 다양한 서버 및 서버 시작 프로그램을 제공합니다. 대표적인 프로그램은 다음 네 가지입니다.

  • mysqld – MySQL 서버 본체
  • mysqld_safe – 안전 기능이 추가된 서버 시작 스크립트
  • mysql.server – 시스템 부팅용 서버 관리 스크립트
  • mysqld_multi – 여러 서버 프로세스를 동시에 관리하는 도구

1. mysqld – MySQL 서버의 핵심

mysqld(MySQL 데몬)는 흔히 'MySQL 서버'라고 불리는 핵심 프로그램입니다. 단일 멀티스레드(multithreaded) 방식으로 동작하며, MySQL 설치 환경에서 대부분의 실질적인 작업을 수행합니다. 추가로 자식 프로세스를 생성하지 않는다는 점이 특징입니다.

mysqld는 데이터베이스와 테이블이 저장된 MySQL 데이터 디렉터리(data directory)에 대한 접근을 관리합니다. 이 디렉터리는 로그 파일(log files)이나 상태 파일(status files) 같은 기타 정보의 기본 저장 위치이기도 합니다.

서버가 시작되면 클라이언트 프로그램으로부터 들어오는 네트워크 연결을 대기(listen)하고, 연결된 클라이언트를 대신하여 데이터베이스 접근 권한을 관리합니다.

시작 옵션 확인하기

서버 시작 시 지정할 수 있는 옵션 목록을 확인하려면 아래 명령어를 실행합니다.

shell> mysqld --verbose --help

2. mysqld_safe – 안전하게 서버 시작하기

mysqld_safe는 Unix 계열 시스템에서 mysqld 서버를 시작하는 권장(recommended) 방법으로 알려져 있습니다. 기본적인 서버 구동 기능 외에도 다음과 같은 안전 기능(safety features)을 제공합니다.

  • 오류 발생 시 서버를 자동으로 재시작
  • 런타임 정보를 오류 로그(error log)에 기록

이러한 기능 덕분에 운영 환경에서 서버의 안정성을 높일 수 있습니다.

3. mysql.server – 간편한 시작/중지 스크립트

mysql.server 스크립트를 사용하면 명령줄에서 간단히 서버를 시작하거나 중지할 수 있습니다. start 또는 stop 인자와 함께 호출하면 됩니다.

shell> mysql.server start
shell> mysql.server stop

mysql.server가 실행되면 먼저 MySQL 설치 디렉터리로 위치를 변경한 후, 내부적으로 mysqld_safe를 호출하여 서버를 구동합니다.

특정 사용자 권한으로 서버 실행하기

서버를 특정 사용자 계정으로 실행하고 싶다면 전역 옵션 파일인 /etc/my.cnf[mysqld] 그룹에 적절한 user 옵션을 추가하면 됩니다.

4. mysqld_multi – 여러 서버 인스턴스 관리

mysqld_multi는 하나의 호스트에서 여러 개의 mysqld 프로세스를 관리하도록 설계된 도구입니다. 각 서버는 서로 다른 Unix 소켓 파일과 TCP/IP 포트에서 연결을 대기합니다.

mysqld_multi를 활용하면 다음 작업을 수행할 수 있습니다.

  • 여러 서버의 시작(start) 및 중지(stop)
  • 설정 재적용(reload)
  • 각 서버의 현재 상태 보고(report)

사용 문법

shell> mysqld_multi [options] {start|stop|reload|report} [GNR[,GNR] ...]

GNR(Group Number)은 옵션 파일에서 각 서버 그룹을 식별하는 번호로, 특정 서버만 선택적으로 제어할 때 사용됩니다.

마무리

정리하면, mysqld는 서버의 핵심 엔진이고, mysqld_safe는 안전장치를 더한 시작 방식, mysql.server는 편리한 시작/중지 스크립트, mysqld_multi는 다중 인스턴스 관리 도구입니다. 운영 환경과 요구 사항에 맞게 적절한 프로그램을 선택해 사용하면 MySQL 서버를 더욱 효율적으로 관리할 수 있습니다.