유닉스 계열 운영체제에서 RPM 패키지로 Mysql을 설치했다면 자동으로 /usr/lib/systemd/system/mysqld.service 파일이 생성되고,
systemctl 유틸리티를 이용해 Mysql을 기동하거나 종료하는 것이 가능하다.
윈도우 인스톨러 버전의 Mysql을 설치했다면 설치 중 선택사항으로 윈도우의 서비스로 Mysql을 등록할 수 있다.
#1) mysql DB 시작
systemctl start mysqld
#주의
앞의 예제와 같이 Mysql 서버의 systemd를 이용해 시작하고 종료할 수도 있지만 Mysql 배포판과 함께
제공되는 mysqld_safe 스크립트를 이용해서 Mysql 서버를 시작하고 종료할 수도 있다.
mysqld_safe 스크립트를 이용하면 Mysql 설정파일(my.cnf)의 [mysqld_safe] 섹션의 설정들을 참조해서
Mysql 서버를 시작하게 되지만,
앞의 예제와 같이 systemd를 이용해서 Mysql 서버를 시작하면 mysqld_safe 스크립트를 사용하지 않고 Mysql 서버를 시작하고 종료하게 된다.
그래서 systemd를 이용하는 경우에는 Mysql 설정 파일의 [mysqld_safe] 섹션을 무시하게 된다.
만약 Mysql 서버의 설정파일에 [mysqld_safe] 섹션에만 설정 가능한 malloc-lib 같은 시스템 설정을 적용하고자 한다면 mysqld_safe 스크립트를 이용해 Mysql 서버를 시작해야 한다.
물론 systemd를 이용해 Mysql 서버를 시작하는 경우에도 메모리 할당(Memory allocator)를 변경하고자 한다면
LD_PRELOAD 환경변수를 이용해서 Mysql 서버를 시작할 수도 있다.
#2) mysql DB 종료
systemctl stop mysqld
Mysql 서버에서는 실제 트랙잭션이 정상적으로 커밋돼도 데이터 파일에
변경된 내용이 기록되지 않고 로그파일(redo log)에만 기록돼 있을 수 있다.
심지어 Mysql 서버가 종료되고 다시 시작된 이후에도 계속 이 상태로 남아있을 수도 있다.
사용량이 많은 Mysql 서버에서는 이런 현상이 더 일반적인데, 이는 결코 비정상적인 상황이 아니다.
하지만 Mysql 서버가 종료될 때 모든 커밋된 내용을 데이터 파일에 기록하고 종료하게 할 수도 있는데, 이 경우에는 다음과 같이 Mysql 서버의 옵션을 변경하고 Mysql 서버를 종료하면 된다.
#클린 셧다운
mysql> SET GLOBAL innodb_fast_shutdown=0;
linux> systemd stop mysqld.service
#원격으로 mysql 서버 종료시
mysql> SET GLOBAL innodb_fast_shutdown=0;
mysql> SHUTDOWN;
이렇게 모든 커밋된 데이터를 데이터 파일에 적용하고 종료하는 것을 클린 셧다운(Clean shutdown)이라고 표현한다.
클린 셧다운으로 종료되면 다시 Mysql 서버가 기동할 때 별도의 트랜잭션 복구 과정을 진행하지 않기 때문에
빠르게 시작할 수 있다.
'쇠똥굴리기(BOOK) > Real mysql 8.0' 카테고리의 다른 글
SET PERSIST 이야기 (0) | 2023.03.27 |
---|---|
Mysql 8.0 업그레이드 시 고려사항 (0) | 2023.03.24 |
mysql 서버 연결 방식 localhost / 127.0.0.1 차이 (0) | 2023.03.15 |
왜 Mysql 인가? (0) | 2023.03.13 |
real mysql 8.0 (0) | 2022.02.16 |