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_safe는
mysqld를 보다 안정적으로 실행하기 위한 래퍼 스크립트입니다. 오류 발생 시 자동 재시작, 에러 로그 기록 등의 기능을 제공합니다.
기본 사용법:
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.server와
mysqld_safe는 모두 내부적으로
mysqld를 실행합니다.
- 다중 인스턴스 운영 시에는 포트, 소켓, 데이터 디렉터리 간 충돌을 반드시 방지해야 합니다.
- systemd를 사용하는 최신 배포판에서는
systemctl start mysql과 같은 명령어도 사용 가능합니다 (환경에 따라 이름이
mysqld일 수 있음).