Linux 환경에서 MySQL 서비스 제어를 위한 다양한 방법

MySQL 5.6 기준, 서비스 시작 및 종료 방법 정리

Linux 시스템에서 MySQL 데이터베이스 서버를 관리할 때는 여러 가지 방식으로 서비스를 시작하거나 중지할 수 있습니다. 아래는 주로 사용되는 방법들을 정리한 내용입니다.

1. mysqld 직접 실행 방식

mysqld는 MySQL의 실제 데몬 프로세스입니다. 이를 직접 호출하여 서버를 구동할 수 있습니다.
  • RPM 설치 시: /usr/sbin/mysqld
  • 바이너리 설치 시: 설치 디렉터리 내 bin/mysqld
서버 시작 예시:
cd /usr/local/mysql
bin/mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/data &
종료는 일반적으로 mysqladmin을 활용합니다. 직접 프로세스를 종료하는 것은 권장되지 않습니다.

2. mysqld_safe를 통한 안정적 실행

mysqld_safemysqld를 보다 안정적으로 실행하기 위한 래퍼 스크립트입니다. 오류 발생 시 자동 재시작, 에러 로그 기록 등의 기능을 제공합니다. 기본 사용법:
mysqld_safe [옵션] &
주요 옵션 예시:
  • --basedir=/usr/local/mysql: MySQL 설치 경로 지정
  • --datadir=/data/3306/data: 데이터 디렉터리 설정
  • --defaults-file=/etc/my.cnf: 특정 구성 파일 사용
  • --user=mysql: 실행 사용자 지정
실행 예:
mysqld_safe --basedir=/usr/local/mysql --datadir=/data/3306/data --user=mysql &

3. mysql.server 스크립트 사용

mysql.server는 시스템 부팅 시 자동 시작 등을 위해 설계된 스크립트로, 내부적으로 mysqld_safe를 호출합니다. 사용 예:
./mysql.server start
./mysql.server stop
./mysql.server restart
출력 결과:
Starting MySQL... [ OK ]
Shutting down MySQL... [ OK ]
이 스크립트는 일반적으로 /etc/init.d/mysql 또는 /usr/local/mysql/support-files/mysql.server 위치에 존재합니다.

4. mysqld_multi로 다중 인스턴스 관리

단일 서버에서 여러 MySQL 인스턴스를 운영할 경우, mysqld_multi를 사용하면 편리합니다. 이 도구는 각 인스턴스를 그룹별로 관리할 수 있도록 해줍니다. 실행 명령어:
mysqld_multi start 1
mysqld_multi stop 1
설정은 my.cnf 파일 내 [mysqld1], [mysqld2] 등으로 구분되어야 하며, mysqlx 포트, 데이터 디렉터리, 소켓 파일 등을 별도로 지정해야 합니다.

5. service 명령어 활용

시스템 서비스로서 MySQL을 제어할 수 있습니다. 이는 내부적으로 /etc/init.d/mysql 스크립트를 실행합니다. 예시:
service mysql start
service mysql stop
service mysql restart
이 명령은 init 스크립트 기반 시스템(Red Hat 계열 등)에서 일반적으로 사용됩니다.

6. init.d 스크립트 직접 실행

service 명령어와 동일하게, init 스크립트를 직접 호출할 수도 있습니다.
/etc/init.d/mysql start
/etc/init.d/mysql stop
스크립트가 존재하는지 확인:
ls /etc/init.d/mysql*

7. mysqladmin을 통한 안전한 종료

mysqladmin은 관리자용 클라이언트 도구로, 원격 또는 로컬에서 서버를 제어할 수 있습니다. 단, 시작 기능은 없으며 종료만 가능합니다. 사용법:
mysqladmin -u root -p shutdown
입력 후 비밀번호를 입력하면 정상적으로 MySQL 서버가 종료됩니다. 이 방법은 안전한 셧다운을 보장하며, 트랜잭션 정리 및 버퍼 플러시를 수행합니다.

참고 사항

- mysql.servermysqld_safe는 모두 내부적으로 mysqld를 실행합니다. - 다중 인스턴스 운영 시에는 포트, 소켓, 데이터 디렉터리 간 충돌을 반드시 방지해야 합니다. - systemd를 사용하는 최신 배포판에서는 systemctl start mysql과 같은 명령어도 사용 가능합니다 (환경에 따라 이름이 mysqld일 수 있음).

태그: MySQL linux mysqld_safe mysql.server mysqld_multi

6월 3일 20:05에 게시됨