• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL5.6 한글메뉴얼) [close]
  • 1. MySQL 5.6 새로운 기능
  • 2. MySQL 설치 및 업그레이드
  • 3. MySQL Tutorial
  • 4. MySQL 프로그램
  • 5. MySQL 서버관리
  • 6. 보안
  • 7. 백업 및 복구
  • 8. 최적화
  • 9. Language Structure(언어구조)
  • 10. Character Sets(Globalization)
  • 11. 데이터형(Data Types)
  • 12. 함수와 연산자
  • 13. SQL 문법
  • 1. 데이터 정의 문
    2. 데이터 조작 문
    3. MySQL 트랜잭션과 잠금 문
    4. 복제 문
    5. Prepared Statements위한 SQL 구문
    6. MySQL 복합문 구문
    7. 데이터베이스 관리 문
    1. 계정 관리 문
    2. 테이블 유지 보수 문
    3. 플러그인 및 사용자 정의 함수 문
    4. SET 구문
    5. SHOW 구문
    6. 기타 관리 문
    1. BINLOG 구문
    2. CACHE INDEX 구문
    3. FLUSH 구문
    4. KILL 구문
    5. LOAD INDEX INTO CACHE 구문
    6. RESET 구문
    8. MySQL 유틸리티 문
  • 14. InnoDB 스토리지 엔진
  • 15. 기타 스토리지 엔진
  • 16. 고가용성 및 확장성
  • 17. 리플리케이션
  • 18. MySQL Cluster
  • 19. 파티셔닝
  • 20. Stored Programs and Views
  • 21. INFORMATION_SCHEMA
  • 22. PERFORMANCE SCHEMA
  • 23. 컨넥터 및 API
  • 24. MySQL 확장
  • 25. MySQL Enterprise Edition
  • 26. MySQL Workbench
  • 27. 제약 및 제한
  • 28. MySQL 5.7 새로운 기능

13.7.6.3 FLUSH 구문

FLUSH [NO_WRITE_TO_BINLOG | LOCAL]
    flush_option [, flush_option] ... 

FLUSH 문은 다양한 내부 캐시를 지우거나 다시로드하거나 테이블을 플러시하거나 잠금을 획득 할 몇 가지 변형 형태가 있습니다. FLUSH 를 실행하려면 RELOAD 권한이 필요합니다. 나중에 설명 된 것처럼 특정 플래시 옵션에는 추가 권한이 필요할 수 있습니다.

기본적으로 서버는 FLUSH 문을 바이너리 로그에 기록하고 또 리플리케이션 슬레이브에 복제되도록합니다. 로깅을하지 않으려면 옵션의 NO_WRITE_TO_BINLOG 키워드 또는 별칭 LOCAL 을 지정합니다.

참고

FLUSH LOGS , FLUSH TABLES WITH READ LOCK (테이블 목록 포함 또는 없음) 및 FLUSH TABLES tbl_name ... FOR EXPORT 는 슬레이브에 복제되는 문제가 발생하기 때문에 어떤 경우에도 바이너리 로그에 기록됩니다 없습니다.

SIGHUP 신호를 서버에 전송하면 다양한 형식의 FLUSH 명령문을 닮은 일부 플래시 동작이 발생합니다. 섹션 5.1.11 "신호에 대한 서버 응답" 을 참조하십시오.

FLUSH 문은 암시 적 커밋을 발생시킵니다. 섹션 13.3.3 "암시 적 커밋을 발생시키는 문" 을 참조하십시오.

RESET 문 FLUSH 와 비슷합니다. 복제의 RESET 문 사용에 대해서는 섹션 13.7.6.6 "RESET 구문" 을 참조하십시오.

flush_option 다음 중 하나의 항목을 지정할 수 있습니다.

  • DES_KEY_FILE

    서버 시작시 --des-key-file 옵션으로 지정된 파일에서 DES 키를 다시로드합니다.

  • HOSTS

    호스트 캐시를 비 웁니다. 호스트 캐시는 일부 호스트가 IP 주소를 변경하거나 Host ' host_name ' is blocked 이라는 에러 메시지가 표시된 경우 플래시하도록하십시오. ( 섹션 B.5.2.6 '호스트'host_name '거부되었습니다 " 를 참조하십시오.) MySQL 서버에 연결하는 동안 특정 호스트에 max_connect_errors 개 이상의 오류가 연속해서 발생하면 MySQL 뭔가 문제가 있다고 간주하고 호스트를 추가 연결 요청에서 차단합니다. 호스트 캐시를 플러시하면 호스트에서 추가 연결 시도 할 수 있습니다. max_connect_errors 의 기본값은 10입니다. 이 오류 메시지를 해결하려면 max_connect_errors 가 큰 값으로 설정된 상태에서 서버를 시작합니다.

  • [ log_type ] LOGS

    log_type 옵션을 지정하지 않는 경우, FLUSH LOGS 모든 로그 파일을 닫고 다시 엽니 다. 바이너리 로깅이 활성화되어있는 경우, 바이너리 로그 파일의 시퀀스 번호가 이전 파일을 기준으로 1 증가됩니다.

    log_type 옵션을 지정하면 지정된 로그 유형 만 플래시됩니다. 다음 log_type 옵션이 허용됩니다.

    • BINARY 는 바이너리 로그 파일을 닫고 다시 엽니 다.

    • ENGINE 설치되어있는 스토리지 엔진 플래시 가능한 로그를 닫고 다시 엽니 다. 현재 이것은 InnoDB 는 로그를 디스크로 플러시합니다.

    • ERROR 는 오류 로그 파일을 닫고 다시 엽니 다.

    • GENERAL 은 일반적인 쿼리 로그 파일을 닫고 다시 엽니 다.

    • RELAY 는 릴레이 로그 파일을 닫고 다시 엽니 다.

    • SLOW 는 슬로우 쿼리 로그 파일을 닫고 다시 엽니 다.

  • PRIVILEGES

    mysql 데이터베이스의 부여 테이블에서 권한을 다시로드합니다.

    GRANT , CREATE USER , CREATE SERVER 및 INSTALL PLUGIN 명령문의 결과로 서버 정보를 메모리에 캐시합니다. 이 메모리는 해당 REVOKE , DROP USER , DROP SERVER 및 UNINSTALL PLUGIN 문에 의해 해제되지 않으므로 캐시를 발생시키는 문 다수의 인스턴스를 실행하는 서버에서는 메모리 사용량이 증가합니다. 이 캐시 된 메모리는 FLUSH PRIVILEGES 에서 해제 할 수 있습니다.

  • QUERY CACHE

    쿼리 캐시를 조각하고 그 메모리를보다 효율적으로 사용합니다. FLUSH QUERY CACHE 는 FLUSH TABLES 와 RESET QUERY CACHE 과는 달리 캐시에서 쿼리를 삭제하지 않습니다.

  • STATUS

    이 옵션은 현재 스레드의 세션 상태 변수 값을 글로벌 값에 추가 세션 값을 0으로 재설정합니다. 일부 글로벌 변수도 0으로 재설정 될 수 있습니다. 또한 (기본 및 지정된) 키 캐시의 카운터를 0으로 재설정하고 Max_used_connections 을 열려있는 연결의 현재 값으로 설정합니다. 이것은 쿼리를 디버깅하는 경우에만 사용하도록하십시오. 섹션 1.7 "질문이나 버그를보고하는 방법" 을 참조하십시오.

  • TABLES

    FLUSH TABLES 테이블을 플래시 해, 사용되는 변형에 따라 잠금을 가져옵니다. 허용되는 구문은이 섹션의 나머지 부분에서 설명되어 있습니다.

  • USER_RESOURCES

    시간당 모든 사용자 자원을 0으로 재설정합니다. 그러면 시간당 연결, 쿼리, 또는 업데이트 제한에 도달 한 클라이언트가 즉시 활동을 재개 할 수 있습니다. FLUSH USER_RESOURCES 는 최대 동시 접속에 대한 제한은 적용되지 않습니다. 섹션 6.3.4 "계정 자원 제한 설정" 을 참조하십시오.

mysqladmin 유틸리티는 flush-hosts , flush-logs , flush-privileges , flush-status , flush-tables 등의 명령을 사용하여 일부 플래시 작업에 대한 명령 줄 인터페이스를 제공합니다. 섹션 4.5.2 "mysqladmin - MySQL 서버를 관리하는 클라이언트" 를 참조하십시오.

참고

스토어드 함수 또는 트리거 내에서 FLUSH 문을 발행 할 수 없습니다. 그러나 저장 프로 시저에서는 그것이 스토어드 함수 또는 트리거에서 호출되지 않는 한, FLUSH 를 사용할 수 있습니다. 섹션 D.1 "저장 프로그램 제한 사항" 을 참조하십시오.

MySQL 5.6.11에서만이 문을 발행하기 전에 gtid_next 를 AUTOMATIC 으로 설정해야합니다. (Bug # 16062608, Bug # 16715809, Bug # 69045)

FLUSH TABLES 구문

FLUSH TABLES 는 다음에 설명되어있는 몇 가지 형식이 있습니다. TABLES 옵션 중 하나 변형이 FLUSH 문에서 사용되는 경우는 그것이 사용되는 유일한 옵션이어야합니다. FLUSH TABLES 는 FLUSH TABLES 의 동의어입니다.

  • FLUSH TABLES

    열려있는 모든 테이블을 닫고 사용되는 모든 테이블을 강제로 닫고 쿼리 캐시를 플러시합니다. FLUSH TABLES 또한 RESET QUERY CACHE 문처럼 쿼리 캐시에서 모든 쿼리 결과를 삭제합니다.

    MySQL 5.6에서는 활성 LOCK TABLES ... READ 가 존재하는 경우, FLUSH TABLES 는 허용되지 않습니다. 테이블을 플러시하고 잠 그려면 대신 FLUSH TABLES tbl_name ... WITH READ LOCK 을 사용합니다.

  • FLUSH TABLES tbl_name [, tbl_name ] ...

    쉼표로 구분 된 하나 이상의 테이블 이름 목록을 지정한 경우,이 문은 서버가 지정된 테이블 만 플래시한다는 점을 제외하고는 이름없는 FLUSH TABLES 와 비슷합니다. 지정된 테이블이 존재하지 않는 경우 오류가 발생하지 않습니다.

  • FLUSH TABLES WITH READ LOCK

    열려있는 모든 테이블을 닫고 글로벌 읽기 잠금을 보유하고있는 모든 데이터베이스의 모든 테이블을 잠급니다. 이것은 특정 시점의 스냅 샷을 할 수있는 Veritas 또는 ZFS 등의 파일 시스템이있는 경우에는 백업을 얻을 수있는 매우 유용한 방법입니다. 이 잠금을 해제하려면 UNLOCK TABLES 를 사용합니다.

    FLUSH TABLES WITH READ LOCK 은 글로벌 읽기 잠금을 가져 오지만 테이블 잠금은 검색하지 않기 때문에 테이블 잠금과 암묵적인 위탁에 관해서 LOCK TABLES 와 UNLOCK TABLES 와 같은 동작을 따르지 않습니다.

    • UNLOCK TABLES 는 현재 LOCK TABLES 에 잠겨있는 테이블이있는 경우에만 활성 트랜잭션을 암시 적으로 커밋합니다. FLUSH TABLES WITH READ LOCK 은 테이블 락을 취득하지 않기 때문에이 문 다음 UNLOCK TABLES 에 커미트가 없습니다.

    • 트랜잭션을 시작하면 사용자가 UNLOCK TABLES 를 실행 한 것처럼, LOCK TABLES 에 의해 취득 된 테이블 잠금이 해제됩니다. 트랜잭션을 시작하고도 FLUSH TABLES WITH READ LOCK 의해 취득 된 글로벌 읽기 잠금이 해제되지 않습니다.

    FLUSH TABLES WITH READ LOCK 에서는 서버가 로그 테이블에 행을 삽입하지 못하는 것은 아닙니다 ( 섹션 5.2.1 "일반 쿼리 로그와 슬로우 쿼리 로그 대상 선택" 을 참조하십시오).

  • FLUSH TABLES tbl_name [, tbl_name ] ... WITH READ LOCK

    이 문은 지정된 테이블을 플러시하고 그에 대한 읽기 잠금을 획득합니다. 이 문은 먼저 테이블에 대한 배타적 인 메타 데이터 잠금을 얻기 위해 이러한 테이블을 열려있는 트랜잭션의 완료를 기다립니다. 그런 다음이 문은 테이블 캐시 테이블을 비우고 테이블을 다시 열고 ( LOCK TABLES ... READ 와 마찬가지로) 테이블 잠금을 획득 한 뒤, 메타 데이터 잠금을 독점에서 공유로 다운 그레이드 합니다. 이 문이 잠금을 획득하고 메타 데이터 잠금 다운 그레이드하면 다른 세션은 그 테이블을 읽을 수 있지만 수정할 수 없습니다.

    이 문은 테이블 락을 취득하기 위해 하나의 FLUSH 문을 사용하는 데 필요한 RELOAD 권한 이외에 각 테이블에 대한 LOCK TABLES 권한이 필요합니다.

    이 문은 기존의 기본 테이블에만 적용됩니다. 이름이 기본 테이블을 참조하는 경우 해당 테이블이 사용됩니다. TEMPORARY 테이블을 참조하는 경우, 그 이름은 무시됩니다. 이름이 뷰에 적용되는 경우 ER_WRONG_OBJECT 오류가 발생합니다. 그렇지 않으면 ER_NO_SUCH_TABLE 오류가 발생합니다.

    잠금을 해제하려면 UNLOCK TABLES 를 잠금을 해제하고 다른 잠금을 얻으려면 LOCK TABLES 를하거나 잠금을 해제하고 새로운 트랜잭션을 시작하려면 START TRANSACTION 을 사용합니다.

    FLUSH 이 변형을 사용하면 테이블의 플래시와 락을 하나의 조작으로 실행할 수 있습니다. 이로 인해 활성 LOCK TABLES ... READ 가 있으면 FLUSH TABLES 가 허용되지 않는다는 MySQL 5.6으로 제한 해결 방법이 제공됩니다.

    이 문장은 암시적인 UNLOCK TABLES 를 실행하지 않기 때문에이 문을 활성 LOCK TABLES 이 존재하는 동안 사용하거나 획득 한 잠금을 먼저 해제하지 않고 다시 사용하거나하면 오류가 발생합니다 .

    플래시 된 테이블이 HANDLER 에서 열린 경우, 그 핸들러는 암묵적으로 플래시되어 그 위치를 잃게됩니다.

  • FLUSH TABLES tbl_name [, tbl_name ] ... FOR EXPORT

    이 FLUSH TABLES 변형은 InnoDB 테이블에 적용됩니다. 이것은 MySQL 5.6.6의 시점에서 사용할 수 있습니다. 이 문은 서버 가동 중에 바이너리 테이블의 복사본 수 있도록 명명 된 테이블에 대한 변경을 디스크로 플러시합니다.

    이 문장은 다음과 같이 작동합니다.

    1. 지정된 테이블에 대한 공유 메타 데이터 잠금을 가져옵니다. 이러한 테이블을 변경했거나 그에 대한 테이블 잠금을 보유하는 활성 트랜잭션이 다른 세션에 존재하는 한,이 문은 차단됩니다. 락이 취득되면이 문은이 테이블을 업데이트하려는 트랜잭션을 차단하는 동안 읽기 전용 작업을 계속할 수 있도록합니다.

    2. 이 테이블의 모든 스토리지 엔진이 FOR EXPORT 를 지원하는지 여부를 확인합니다. 지원하지 않는 것이 있다면, ER_ILLEGAL_HA 오류가 발생하여이 문은 실패합니다.

    3. 이 문은 각 테이블의 스토리지 엔진에 테이블을 내보내기 위해 준비하도록 통지합니다. 스토리지 엔진은 보류중인 변경 내용이 모든 디스크에 쓰여지도록해야합니다.

    4. 이 문은 FOR EXPORT 문이 완료되면 이전에 취득 된 메타 데이터 잠금이 해제되지 않도록 해당 세션을 테이블 잠금 모드로합니다.

    FLUSH TABLES ... FOR EXPORT 문에는 각 테이블에 대한 SELECT 권한이 필요합니다. 이 문은 테이블 락을 취득하기 위해 하나의 FLUSH 문을 사용하는 데 필요한 RELOAD 권한 이외에 각 테이블에 대한 LOCK TABLES 권한도 필요합니다.

    이 문은 기존의 기본 테이블에만 적용됩니다. 이름이 기본 테이블을 참조하는 경우 해당 테이블이 사용됩니다. TEMPORARY 테이블을 참조하는 경우, 그 이름은 무시됩니다. 이름이 뷰에 적용되는 경우 ER_WRONG_OBJECT 오류가 발생합니다. 그렇지 않으면 ER_NO_SUCH_TABLE 오류가 발생합니다.

    InnoDB 는 자신의 .ibd 파일 을 가진 테이블 (즉, innodb_file_per_table 설정이 활성화 된 상태에서 작성된 테이블)에 대한 FOR EXPORT 를 지원하고 있습니다. InnoDB 는 FOR EXPORT 문에서 통지되면 모든 변경 내용을 즉시 디스크에 플래시합니다. .ibd 파일은 트랜잭션 일관성이 있고 서버가 실행되는 동안 복사 할 수 있으므로 이로 인해 FOR EXPORT 문이 활성화되어있는 동안 테이블의 내용의 이진 복사본을 만들 수 있습니다. FOR EXPORT 은 InnoDB 시스템 테이블 공간 파일과 하나의 FULLTEXT 인덱스를 포함 InnoDB 테이블에는 적용되지 않습니다.

    FLUSH TABLES ...FOR EXPORT 는 MySQL 5.6.17 이전의 분할 된 InnoDB 테이블에서는 작동하지 않지만, MySQL 5.6.17 이후에서는 이러한 테이블에 대해서도 지원됩니다. (Bug # 16943907).

    FOR EXPORT 에서 통지되면, InnoDB 는 일반적으로 메모리 또는 테이블 공간 파일의 외부에있는 별도의 디스크 버퍼에 유지되는 특정 유형의 데이터를 디스크에 기록합니다. InnoDB 는 또한 테이블마다 테이블과 같은 데이터베이스 디렉토리에 table_name .cfg 라는 파일을 생성합니다. .cfg 파일은 나중에 테이블 스페이스 파일을 동일한 서버 또는 다른 서버로 다시 가져 오는 데 필요한 메타 데이터가 포함되어 있습니다.

    FOR EXPORT 문이 완료되면 InnoDB 에 의해 모든 더티 페이지 가 테이블 데이터 파일에 플래시되어 있습니다. 변경 버퍼 엔트리는 모두 플래시 전에 병합됩니다. 이 시점에서 테이블은 잠겨 정지합니다. 이 테이블은 디스크에서 트랜잭션으로 일관성있는 상태에 있기 때문에 .ibd 테이블 공간 파일을 지원하는 .cfg 파일과 함께 복사하여 이러한 테이블의 일관된 스냅 샷을 만들 수 있습니다 .

    복사 된 테이블 데이터를 MySQL 인스턴스로 다시 가져올 자세한 내용은 섹션 14.5.5 "테이블 공간의 다른 서버로 복사 (이동 가능한 테이블 스페이스)" 를 참조하십시오.

    테이블의 처리를 완료 한 후 잠금을 해제하려면 UNLOCK TABLES 를 잠금을 해제하고 다른 잠금을 얻으려면 LOCK TABLES 를하거나 잠금을 해제하고 새로운 트랜잭션을 시작하려면 START TRANSACTION 를 사용합니다.

    세션에서 다음 중 하나의 문이 활성화되어있는 동안은 FLUSH TABLES ... FOR EXPORT 를 사용하려고하면 오류가 생성됩니다.

     FLUSH TABLES ... WITH READ LOCK
     FLUSH TABLES ... FOR EXPORT
     LOCK TABLES ... READ
     LOCK TABLES ... WRITE
    

    세션에서 FLUSH TABLES ... FOR EXPORT 가 활성화되어있는 동안은 다음 중 하나의 문을 사용하려고하면 오류가 생성됩니다.

     FLUSH TABLES WITH READ LOCK
     FLUSH TABLES ... WITH READ LOCK
     FLUSH TABLES ... FOR EXPORT
    


서울시 강남구 영동대로 602 6층
TEL: 02-6061-0006  /  E: csr@mysqlkorea.com
주식회사 이노클러스터  등록번호 : 727-86-02261
Copyright © innocluster Co. ltd. all rights reserved