이것은 Ubuntu Online, Fedora Online, Windows 온라인 에뮬레이터 또는 MAC OS 온라인 에뮬레이터와 같은 여러 무료 온라인 워크스테이션 중 하나를 사용하여 OnWorks 무료 호스팅 제공업체에서 실행할 수 있는 pt-variable-advisorp 명령입니다.
프로그램:
이름
pt-variable-advisor - MySQL 변수를 분석하고 가능한 문제에 대해 조언합니다.
개요
사용법: pt-variable-advisor [옵션] [DSN]
pt-variable-advisor는 변수를 분석하고 가능한 문제에 대해 조언합니다.
로컬 호스트에서 SHOW VARIABLES 가져오기:
pt-변수-어드바이저 로컬 호스트
vars.txt에 저장된 SHOW VARIABLES 출력 가져오기:
pt-변수 조언자 --source-of-variables vars.txt
위험
Percona Toolkit은 성숙하고 실제 세계에서 입증되었으며 잘 테스트되었지만 모든 데이터베이스
도구는 시스템과 데이터베이스 서버에 위험을 초래할 수 있습니다. 이 도구를 사용하기 전에
부디:
· 도구 설명서 읽기
· 도구의 알려진 "버그" 검토
· 비프로덕션 서버에서 도구 테스트
· 프로덕션 서버 백업 및 백업 확인
기술
pt-variable-advisor는 "SHOW VARIABLES"에 따라 잘못된 값과 설정을 검사합니다.
아래에 설명된 "규칙". 규칙과 일치하는 변수에 대해 보고하므로 다음을 찾을 수 있습니다.
MySQL 서버의 잘못된 설정.
이 릴리스 당시 pt-variable-advisor는 "SHOW VARIABLES"의 예만 사용했지만 다른
입력 소스는 "SHOW STATUS" 및 "SHOW SLAVE STATUS"와 같이 계획됩니다.
규칙
이것은 pt-variable-advisor가 SHOW VARIABLES에 적용할 규칙입니다. 각 규칙에는
세 부분: ID, 심각도 및 설명.
규칙의 ID는 규칙에 대한 짧고 고유한 이름입니다. 일반적으로 변수와 관련이 있습니다.
규칙이 검사하는 것입니다. 변수가 여러 규칙에 의해 검사되는 경우 규칙의 ID는
"-1", "-2", "-N"과 같이 번호가 지정됩니다.
규칙의 심각도는 이 규칙이 일치하는 것이 얼마나 중요한지를 나타냅니다.
질문. 이러한 수준을 나타내기 위해 NOTE, WARN 및 CRIT를 사용합니다.
규칙의 설명은 사람이 읽을 수 있는 텍스트 설명입니다.
변수가 이 규칙과 일치합니다. 생성하는 보고서의 상세 정도에 따라
설명에서 더 많은 텍스트를 볼 수 있습니다. 기본적으로 첫 번째 항목만 표시됩니다.
규칙의 의미를 간략하게 요약한 것입니다. 더 높은 세부 정보에서,
이어지는 문장을 볼 수 있습니다.
자동 증가
심각도: 참고
이중 마스터 또는 링 복제에서 둘 이상의 서버에 쓰려고 합니까?
구성? 이것은 잠재적으로 매우 위험하며 대부분의 경우 심각한
실수. 대부분의 사람들이 이렇게 하는 이유는 실제로 전혀 타당하지 않습니다.
동시 삽입
심각도: 참고
MyISAM 테이블의 구멍(삭제로 인해 남겨진 공간)은 재사용되지 않을 수 있습니다.
연결_시간 초과
심각도: 참고
이 설정의 값이 크면 서비스 거부 취약성이 발생할 수 있습니다.
디버그
심각도: 치명타
디버깅 기능으로 구축된 서버는 다음과 같은 이유로 프로덕션 환경에서 사용해서는 안 됩니다.
큰 성능 영향.
지연_키_쓰기
심각도: 경고
MyISAM 인덱스 블록은 필요할 때까지 플러시되지 않습니다. 서버 크래시가 발생하면
MyISAM 테이블의 데이터 손상은 평소보다 훨씬 심각할 수 있습니다.
플러시
심각도: 경고
이 옵션은 성능을 크게 저하시킬 수 있습니다.
플러시_시간
심각도: 경고
이 옵션은 성능을 크게 저하시킬 수 있습니다.
have_bdb
심각도: 참고
BDB 엔진은 더 이상 사용되지 않습니다. 사용하지 않을 경우 다음과 같이 비활성화해야 합니다.
skip_bdb 옵션.
초기화 연결
심각도: 참고
이 서버에서 init_connect 옵션이 활성화되어 있습니다.
초기화 파일
심각도: 참고
이 서버에서 init_file 옵션이 활성화되어 있습니다.
초기화 슬레이브
심각도: 참고
이 서버에서 init_slave 옵션이 활성화되어 있습니다.
innodb_additional_mem_pool_size
심각도: 경고
이 변수는 일반적으로 20MB보다 클 필요가 없습니다.
innodb_buffer_pool_size
심각도: 경고
InnoDB 버퍼 풀 크기가 구성되지 않았습니다. 프로덕션 환경에서는 다음을 수행해야 합니다.
항상 명시적으로 구성해야 하며 기본 10MB 크기는 좋지 않습니다.
innodb_checksums
심각도: 경고
InnoDB 체크섬이 비활성화됩니다. 귀하의 데이터는 하드웨어 손상 또는
다른 오류!
innodb_doublewrite
심각도: 경고
InnoDB 이중 쓰기가 비활성화됩니다. 보호하는 파일 시스템을 사용하지 않는 한
부분 페이지 쓰기, 데이터가 안전하지 않습니다!
innodb_fast_shutdown
심각도: 경고
InnoDB의 종료 동작은 기본값이 아닙니다. 이로 인해 성능이 저하되거나
시작 시 충돌 복구를 수행해야 합니다.
innodb_flush_log_at_trx_commit-1
심각도: 경고
InnoDB는 엄격하게 ACID 모드로 구성되어 있지 않습니다. 충돌이 발생하면 일부
거래가 손실될 수 있습니다.
innodb_flush_log_at_trx_commit-2
심각도: 경고
innodb_flush_log_at_trx_commit을 0으로 설정하면 설정보다 성능상의 이점이 없습니다.
2로 설정하고 더 많은 유형의 데이터 손실이 가능합니다. 바꾸려고 하면
성능상의 이유로 1에서 2 대신 0로 설정해야 합니다.
innodb_force_recovery
심각도: 경고
InnoDB가 강제 복구 모드에 있습니다! 다음 경우에만 일시적으로 사용해야 합니다.
정상적인 사용이 아닌 데이터 손상 또는 기타 버그로부터 복구.
innodb_lock_wait_timeout
심각도: 경고
이 옵션은 비정상적으로 긴 값을 가지므로 잠금이 해제되면 시스템 과부하가 발생할 수 있습니다.
해제되지 않습니다.
innodb_log_buffer_size
심각도: 경고
InnoDB 로그 버퍼 크기는 일반적으로 16MB보다 크게 설정하면 안 됩니다. 당신이있는 경우
대규모 BLOB 작업을 수행하는 경우 InnoDB는 어쨌든 좋은 엔진 선택이 아닙니다.
innodb_log_file_size
심각도: 경고
InnoDB 로그 파일 크기는 기본값으로 설정되어 있으며
생산 시스템.
innodb_max_dirty_pages_pct
심각도: 참고
innodb_max_dirty_pages_pct는 기본값보다 낮습니다. 이것은 과도하게 발생할 수 있습니다
적극적인 플러싱 및 I/O 시스템에 부하를 추가합니다.
플러시_시간
심각도: 경고
이 설정은 flush_time 초마다 매우 나쁜 성능을 유발할 수 있습니다.
key_buffer_size
심각도: 경고
키 버퍼 크기는 대부분의 프로덕션에 적합하지 않은 기본값으로 설정됩니다.
시스템. 프로덕션 환경에서 key_buffer_size는 다음보다 커야 합니다.
기본 8MB 크기.
큰 페이지
심각도: 참고
큰 페이지가 활성화되었습니다.
lock_in_memory
심각도: 참고
서버는 --memlock으로 메모리에 잠겨 있습니다.
로그_경고-1
심각도: 참고
Log_warnings가 비활성화되어 복제에 안전하지 않은 문과 같은 비정상적인 이벤트
중단된 연결은 오류 로그에 기록되지 않습니다.
로그_경고-2
심각도: 참고
중단과 같은 비정상적인 이벤트를 기록하려면 Log_warnings를 1보다 크게 설정해야 합니다.
연결.
낮은 우선순위_업데이트
심각도: 참고
서버가 업데이트에 대해 기본이 아닌 잠금 우선 순위로 실행 중입니다. 이로 인해
읽기 쿼리를 예기치 않게 기다리도록 쿼리를 업데이트합니다.
max_binlog_size
심각도: 참고
max_binlog_size는 기본값인 1GB보다 작습니다.
max_connect_errors
심각도: 참고
max_connect_errors는 플랫폼이 허용하는 한 크게 설정해야 합니다.
max_connections
심각도: 경고
서버에 실제로 XNUMX개 이상의 스레드가 실행 중인 경우 시스템은
실제로 유용한 작업을 수행하는 것보다 스레드를 예약하는 데 더 많은 시간을 할애할 가능성이 높습니다. 이것
변수의 값은 작업 부하에 비추어 고려되어야 합니다.
myisam_repair_threads
심각도: 참고
myisam_repair_threads > 1은 상대적으로 테스트되지 않은 다중 스레드 복구를 활성화합니다.
공식 문서에는 여전히 베타 품질 코드로 나열되어 있습니다.
이전_비밀번호
심각도: 경고
구식 암호는 안전하지 않습니다. 그들은 유선을 통해 일반 텍스트로 전송됩니다.
Optimizer_prune_level
심각도: 경고
옵티마이저는 복잡한 쿼리를 계획할 때 철저한 검색을 사용합니다.
계획 프로세스에 오랜 시간이 소요됩니다.
포트
심각도: 참고
서버가 기본이 아닌 포트에서 수신 대기 중입니다.
query_cache_size-1
심각도: 참고
쿼리 캐시는 큰 크기로 확장되지 않으며 다음과 같은 경우 불안정한 성능을 유발할 수 있습니다.
특히 멀티 코어 시스템에서 128MB보다 큽니다.
query_cache_size-2
심각도: 경고
쿼리 캐시는 256MB보다 크면 심각한 성능 문제를 일으킬 수 있으며,
특히 멀티 코어 머신에서.
read_buffer_size-1
심각도: 참고
전문가가 아닌 한 read_buffer_size 변수는 일반적으로 기본값으로 두어야 합니다.
변경할 필요가 있다고 판단합니다.
read_buffer_size-2
심각도: 경고
read_buffer_size 변수는 8MB보다 커서는 안 됩니다. 일반적으로
전문가가 변경할 필요가 있다고 판단하지 않는 한 기본값으로 유지됩니다. 만들기
2MB보다 크면 성능이 크게 저하되고 서버 충돌이 발생할 수 있습니다.
죽음으로 바꾸거나 극도로 불안정해집니다.
read_rnd_buffer_size-1
심각도: 참고
read_rnd_buffer_size 변수는 일반적으로 기본값으로 남겨두어야 합니다.
전문가는 그것을 변경할 필요가 있다고 판단합니다.
read_rnd_buffer_size-2
심각도: 경고
read_rnd_buffer_size 변수는 4M보다 커서는 안 됩니다. 그것은 일반적으로
전문가가 변경할 필요가 있다고 판단하지 않는 한 기본값으로 두십시오.
Relay_log_space_limit
심각도: 경고
relay_log_space_limit를 설정하면 복제본이 바이너리 로그 가져오기를 중지할 수 있습니다.
그들의 주인은 즉시. 이렇게 하면 다음과 같은 경우 데이터가 손실될 위험이 증가할 수 있습니다.
마스터가 충돌합니다. 복제본에서 릴레이 로그 공간에 대한 제한이 발생한 경우
최신 트랜잭션이 마스터에만 있고 복제본이 없을 수 있습니다.
검색했습니다.
Slave_net_timeout
심각도: 경고
이 변수가 너무 높게 설정되었습니다. 그 사실을 알아차리기 전에 기다리기에는 너무 길다.
마스터에 대한 연결이 실패했으며 재시도 중입니다. 이것은 아마도 60으로 설정되어야 합니다
초 이하. pt-heartbeat를 사용하여 다음을 확인하는 것도 좋은 생각입니다.
마스터가 단순히 유휴 상태일 때 연결 시간이 초과된 것으로 나타나지 않습니다.
Slave_skip_errors
심각도: 치명타
이 옵션을 설정하면 안 됩니다. 복제에 오류가 있으면 찾아서
그 원인을 해결하십시오. 슬레이브의 데이터가
주인. pt-table-checksum으로 알 수 있습니다.
정렬_버퍼_크기-1
심각도: 참고
전문가가 아닌 한 sort_buffer_size 변수는 일반적으로 기본값으로 두어야 합니다.
변경할 필요가 있다고 판단합니다.
정렬_버퍼_크기-2
심각도: 참고
전문가가 아닌 한 sort_buffer_size 변수는 일반적으로 기본값으로 두어야 합니다.
변경할 필요가 있다고 판단합니다. 몇 MB보다 크게 만들면 문제가 될 수 있습니다.
성능이 크게 저하되고 서버가 충돌하거나 스왑이 죽을 수 있습니다.
극도로 불안정해집니다.
SQL_노트
심각도: 참고
이 서버는 참고 수준 경고를 오류 로그에 기록하지 않도록 구성되어 있습니다.
sync_frm
심각도: 경고
.frm 파일이 다음과 같은 경우 디스크에 안전하게 플러시되도록 sync_frm을 설정하는 것이 가장 좋습니다.
서버 충돌.
tx_isolation-1
심각도: 참고
이 서버의 트랜잭션 격리 수준은 기본값이 아닙니다.
tx_isolation-2
심각도: 경고
대부분의 애플리케이션은 기본 REPEATABLE-READ 트랜잭션 격리 수준을 사용해야 합니다.
또는 몇몇 경우에 READ-COMMITTED.
만료_로그_일
심각도: 경고
바이너리 로그는 활성화되지만 자동 제거는 활성화되지 않습니다. 비우지 않으면
바이너리 로그, 디스크가 가득 찰 것입니다. MySQL 외부에서 바이너리 로그를 삭제하는 경우,
원하지 않는 행동을 하게 됩니다. 항상 사용되지 않는 로그를 제거하도록 MySQL에 요청하십시오.
외부에서 삭제하십시오.
innodb_file_io_threads
심각도: 참고
이 옵션은 Windows를 제외하고는 쓸모가 없습니다.
innodb_data_file_path
심각도: 참고
자동 확장 InnoDB 파일은 많은 디스크 공간을 차지할 수 있어
나중에 회수합니다. 어떤 사람들은 innodb_file_per_table을 설정하고 고정된 값을 할당하는 것을 선호합니다.
ibdata1의 크기 파일입니다.
innodb_flush_method
심각도: 참고
InnoDB를 사용하는 대부분의 프로덕션 데이터베이스 서버는 innodb_flush_method를 다음으로 설정해야 합니다.
I/O 시스템의 성능이 매우 낮은 경우가 아니면 O_DIRECT를 사용하여 이중 버퍼링을 방지합니다.
innodb_locks_unsafe_for_binlog
심각도: 경고
이 옵션은 바이너리 로그에서 특정 시점으로 복구하고 복제,
명령문 기반 로깅이 사용되는 경우 신뢰할 수 없습니다.
innodb_support_xa
심각도: 경고
InnoDB와 바이너리 로그 간의 MySQL 내부 XA 트랜잭션 지원이 비활성화됩니다.
크래시 복구 및 복제 후 바이너리 로그가 InnoDB의 상태와 일치하지 않을 수 있습니다.
바이너리 로그의 순서가 잘못된 명령문으로 인해 동기화되지 않을 수 있습니다.
log_bin
심각도: 경고
바이너리 로깅이 비활성화되어 있어 특정 시점 복구 및 복제가 불가능합니다.
수.
로그 출력
심각도: 경고
로그 출력을 테이블로 지정하면 성능에 높은 영향을 미칩니다.
max_relay_log_size
심각도: 참고
사용자 정의 max_relay_log_size가 정의됩니다.
myisam_recover_options
심각도: 경고
myisam_recover_options는 다음을 보장하기 위해 BACKUP,FORCE와 같은 값으로 설정되어야 합니다.
테이블 손상이 발견되었습니다.
스토리지_엔진
심각도: 참고
서버는 기본적으로 비표준 스토리지 엔진을 사용하고 있습니다.
sync_binlog
심각도: 경고
바이너리 로깅이 활성화되어 있지만 sync_binlog는 모든 트랜잭션이
내구성을 위해 바이너리 로그로 플러시됩니다.
tmp_table_size
심각도: 참고
내부적으로 사용되는 메모리 내 암시적 임시 테이블의 유효 최소 크기
쿼리 실행 중에는 min(tmp_table_size, max_heap_table_size)이므로
max_heap_table_size는 적어도 tmp_table_size만큼 커야 합니다.
이전 mysql 버전
심각도: 경고
다음은 각 주요 릴리스에 대해 권장되는 최소 버전입니다. 3.23, 4.1.20,
5.0.37, 5.1.30.
수명이 다한 mysql 버전
심각도: 참고
5.1보다 오래된 모든 릴리스는 이제 공식적으로 단종됩니다.
옵션
이 도구는 추가 명령줄 인수를 허용합니다. "시놉시스" 및 사용법을 참조하십시오.
자세한 내용은 정보를 참조하십시오.
-- 묻고 통과
MySQL에 연결할 때 암호를 묻습니다.
--문자셋
짧은 형식: -A; 유형: 문자열
기본 문자 집합입니다. 값이 utf8이면 STDOUT에서 Perl의 binmode를 utf8로 설정하고,
mysql_enable_utf8 옵션을 DBD::mysql에 전달하고 SET NAMES UTF8을 실행합니다.
MySQL에 연결합니다. 다른 모든 값은 utf8 레이어 없이 STDOUT에서 binmode를 설정합니다.
MySQL에 연결한 후 SET NAMES를 실행합니다.
--구성
유형: 배열
이 쉼표로 구분된 구성 파일 목록을 읽으십시오. 지정된 경우 첫 번째 항목이어야 합니다.
명령줄의 옵션입니다.
--데몬화
배경으로 포크하고 껍질에서 분리하십시오. POSIX 운영 체제 전용.
--데이터 베이스
약식: -D; 유형: 문자열
이 데이터베이스에 연결합니다.
--기본 파일
약식: -F; 유형: 문자열
주어진 파일에서 mysql 옵션만 읽으십시오. 절대 경로 이름을 지정해야 합니다.
--도움
도움말을 표시하고 종료합니다.
--주인
짧은 형식: -h; 유형: 문자열
호스트에 연결합니다.
--무시 규칙
유형: 해시
이러한 규칙 ID를 무시하십시오.
무시할 규칙 ID의 쉼표로 구분된 목록(예: LIT.001,RES.002 등)을 지정합니다.
--비밀번호
짧은 형식: -p; 유형: 문자열
연결할 때 사용할 비밀번호입니다. 비밀번호에 쉼표가 포함된 경우 이스케이프해야 합니다.
백슬래시 포함: "exam\,ple"
--pid
유형: 문자열
주어진 PID 파일을 생성합니다. PID 파일이 이미 존재하고 도구가 시작되지 않습니다.
포함된 PID가 현재 PID와 다릅니다. 그러나 PID 파일의 경우
존재하고 여기에 포함된 PID가 더 이상 실행되지 않으면 도구가 PID를 덮어씁니다.
현재 PID가 있는 파일 PID 파일은 도구가 종료될 때 자동으로 제거됩니다.
--포트
약식: -P; 유형: 정수
연결에 사용할 포트 번호입니다.
--set-vars
유형: 배열
이 쉼표로 구분된 "변수=값" 쌍 목록에서 MySQL 변수를 설정합니다.
기본적으로 도구는 다음을 설정합니다.
wait_timeout=10000
명령줄에 지정된 변수는 이러한 기본값을 재정의합니다. 예를 들어,
"--set-vars wait_timeout=500"을 지정하면 기본값 10000이 무시됩니다.
도구는 경고를 인쇄하고 변수를 설정할 수 없는 경우 계속합니다.
--소켓
짧은 형식; 유형: 문자열
연결에 사용할 소켓 파일입니다.
--변수의 소스
유형: 문자열; 기본값: mysql
이 소스에서 "변수 표시"를 읽으십시오. 가능한 값은 "mysql", "none" 또는 파일입니다.
이름. "mysql"이 지정되면 명령줄에 DSN도 지정해야 합니다.
--사용자
약식: -u; 유형: 문자열
현재 사용자가 아닌 경우 로그인을 위한 사용자입니다.
--말 수가 많은
짧은 형식: -v; 누적: 예; 기본값: 1
출력의 장황함을 높입니다. 기본 상세 수준에서 프로그램은 다음을 인쇄합니다.
각 규칙 설명의 첫 번째 문장만. 더 높은 수준에서 프로그램
더 많은 설명을 인쇄합니다.
--번역
버전을 표시하고 종료합니다.
--[no]버전 확인
기본값: 예
Percona Toolkit, MySQL 및 기타 프로그램의 최신 버전을 확인하십시오.
이것은 두 가지 추가 기능이 있는 표준 "자동 업데이트 확인" 기능입니다.
특징. 먼저 이 도구는 로컬 시스템의 다른 프로그램 버전을 확인합니다.
자체 버전에 추가. 예를 들어 모든 MySQL 서버의 버전을 확인합니다.
Perl 및 Perl 모듈 DBD::mysql에 연결됩니다. 둘째, 확인하고 경고한다.
알려진 문제가 있는 버전에 대해. 예를 들어 MySQL 5.5.25에는 치명적인 버그가 있었고
5.5.25a로 재발매되었습니다.
모든 업데이트 또는 알려진 문제는 도구의 일반 출력 전에 STDOUT에 인쇄됩니다.
이 기능은 도구의 정상적인 작동을 방해해서는 안 됩니다.
자세한 내용은 다음을 방문하십시오. .
dsn 옵션
이러한 DSN 옵션은 DSN을 만드는 데 사용됩니다. 각 옵션은 "option=value"와 같이 주어집니다.
옵션은 대소문자를 구분하므로 P와 p는 동일한 옵션이 아닙니다. 있을 수 없다
"=" 앞이나 뒤에 공백이 있고 값에 공백이 포함되어 있으면 따옴표로 묶어야 합니다.
DSN 옵션은 쉼표로 구분됩니다. 자세한 내용은 percona-toolkit 맨페이지를 참조하십시오.
· ㅏ
dsn: 문자 집합; 복사: 예
기본 문자 집합입니다.
· NS
dsn: 데이터베이스; 복사: 예
기본 데이터베이스.
· NS
dsn: mysql_read_default_file; 복사: 예
주어진 파일에서 기본 옵션만 읽기
· h
dsn: 호스트; 복사: 예
호스트에 연결합니다.
· NS
dsn: 비밀번호; 복사: 예
연결할 때 사용할 비밀번호입니다. 비밀번호에 쉼표가 포함된 경우 이스케이프해야 합니다.
백슬래시 포함: "exam\,ple"
· 피
dsn: 포트; 복사: 예
연결에 사용할 포트 번호입니다.
· NS
dsn: mysql_socket; 복사: 예
연결에 사용할 소켓 파일입니다.
· 유
dsn: 사용자; 복사: 예
현재 사용자가 아닌 경우 로그인을 위한 사용자입니다.
환경
환경 변수 "PTDEBUG"는 STDERR에 대한 자세한 디버깅 출력을 활성화합니다. 사용하려면
디버깅하고 모든 출력을 파일로 캡처하려면 다음과 같이 도구를 실행하십시오.
PTDEBUG=1 pt-변수-어드바이저 ... > 파일 2>&1
주의: 디버깅 출력은 방대하고 수 메가바이트의 출력을 생성할 수 있습니다.
시스템 요구 사항
Perl, DBI, DBD::mysql 및 모든 시스템에 설치해야 하는 몇 가지 핵심 패키지가 필요합니다.
합리적으로 새로운 버전의 Perl.
onworks.net 서비스를 사용하여 pt-variable-advisorp 온라인 사용