5.1.12 종료 프로세스
서버 종료 프로세스는 다음과 같이 실행됩니다.
종료 프로세스가 시작됩니다.
이것은 여러 가지 방법으로 시작할 수 있습니다. 예를 들어,
SHUTDOWN
권한이있는 사용자는 mysqladmin shutdown 명령을 실행할 수 있습니다. mysqladmin은 MySQL이 지원되는 모든 플랫폼에서 사용할 수 있습니다. 운영 체제에 고유 외의 종료 시작 방식도 사용 가능하며, Unix에서는 서버가SIGTERM
신호를 받으면 서버가 종료됩니다. Windows에서 서비스로 실행중인 서버는 서비스 관리자에서 종료를 지시되면 종료합니다.서버는 필요에 따라 종료 스레드를 만듭니다.
종료가 시작 된 방법에 따라 종료 프로세스를 처리하기위한 스레드를 서버가 만들 수 있습니다. 종료가 클라이언트에 의해 요청 된 경우 종료 스레드가 생성됩니다. 종료
SIGTERM
를받은 것에 의한 것 인 경우 신호 스레드 자체가 종료를 처리하거나 처리를 위해 별도의 스레드를 만들 수 있습니다. 서버가 종료 스레드를 만들려고했지만 작성할 수없는 경우 (메모리가 부족한 경우 등), 진단 메시지가 발행되고 오류 로그에 표시됩니다.Error : Can not create thread to kill server
서버는 새로운 연결 승인을 중지합니다.
종료하는 동안 새로운 활동이 시작되는 것을 방지하기 위해 서버는 일반적으로 연결을 listen하는 네트워크 인터페이스의 핸들러를 닫고 새 클라이언트 연결 승인을 중지합니다. 연결은 TCP / IP 포트, Unix 소켓 파일, Windows 명명 된 파이프 및 Windows의 공유 메모리가 있습니다.
서버는 현재 활동을 종료합니다.
클라이언트 연결에 연관된 각 스레드에 대해 서버는 클라이언트 연결을 끊고 스레드 종료로 표시합니다. 스레드는 이러한 마크를 붙인 것이 통지되면 종료합니다. 유휴 연결 스레드는 즉시 종료합니다. 문을 현재 처리중인 스레드는 상태를 정기적으로 점검하기 위해 종료하는 데 시간이 걸립니다. 스레드 종료에 대한 추가 정보 특히
MyISAM
테이블에서 강제 종료 된REPAIR TABLE
또는OPTIMIZE TABLE
조작에 대한 지시 사항은 섹션 13.7.6.4 "KILL"장 을 참조하십시오.열려있는 트랜잭션이있는 스레드는 트랜잭션이 롤백됩니다. 스레드가 비 트랜잭션 테이블을 업데이트하는 경우 여러 줄
UPDATE
또는INSERT
등의 작업이 완료되기 전에 종료 할 수 있기 때문에 테이블이 일부 업데이트 된 상태가 될 수 있습니다.서버가 마스터 복제 서버의 경우 서버는 현재 연결되어있는 슬레이브에 연결된 스레드를 다른 클라이언트 스레드에 같이 취급합니다. 즉, 각각 강제 종료 표시하고 그 상태를 다음 검사 할 때 종료합니다.
서버가 슬레이브 복제 서버의 경우, I / O 및 SQL 쓰레드가 활성화되면 클라이언트 스레드에 종료 마크를 붙이기 전에이를 중지합니다. SQL 스레드 (복제 문제를 일으키는 것을 방지하기 위해) 현재의 문을 완료 할 수 있으며, 그 후에 종료합니다. SQL 쓰레드가이 시점에서 트랜잭션의 중간 인 경우, 서버는 현재 복제 이벤트 그룹 (있는 경우)가 실행을 완료하거나 사용자가
KILL QUERY
또는KILL CONNECTION
문을 실행할 때까지 기다립니다. 섹션 13.4.2.6 "STOP SLAVE 구문" 을 참조하십시오. 비 트랜잭션 문은 롤백 할 수 없기 때문에 충돌에 대한 안전성을 가진 복제를 보장하려면 트랜잭션 테이블 만 사용하십시오.참고노예의 충돌에 대한 안전성을 보장하려면
--relay-log-recovery
를 사용하여 슬레이브을 수행 할 수 있어야합니다.섹션 17.2.2 "복제 릴레이 및 상태 로그" 를 참조하십시오.
서버는 종료하거나 스토리지 엔진을 닫습니다.
이 단계에서 서버는 테이블 캐시를 플러시하고 열려있는 모든 테이블을 닫습니다.
각 스토리지 엔진은 관리 테이블에 필요한 모든 작업을 수행합니다.
InnoDB
버퍼 풀을 디스크에 플러시 (innodb_fast_shutdown
가 2 인 경우를 제외하고) 현재 LSN을 테이블 스페이스에 기록한 자체의 내부 스레드를 종료합니다.MyISAM
테이블의 보류중인 인덱스 쓰기를 플러시합니다.서버가 종료됩니다.