Loading...
MySQL 9.5 Reference Manual 9.5의 29.12.11 Performance Schema Replication Tables의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
Performance Schema는 replication 정보를 노출하는 테이블들을 제공합니다. 이는 SHOW REPLICA STATUS 스테이트먼트에서 제공되는 정보와 유사하지만, 테이블 형태로 표현되므로 더 접근성이 좋고 사용성 측면에서 이점이 있습니다:
SHOW REPLICA STATUS의 출력은 시각적인 확인에는 유용하지만,
프로그램에서 사용하기에는 그다지 적합하지 않습니다. 반면, Performance Schema
테이블을 사용하면, replica 상태에 대한 정보를 일반적인
SELECT 쿼리로 검색할 수 있고,
복잡한 WHERE 조건, 조인 등도 포함할 수 있습니다.
쿼리 결과를 추가 분석을 위해 다른 테이블에 저장하거나, 변수에 할당하여 저장 프로시저에서 사용할 수 있습니다.
replication 테이블은 더 나은 진단 정보를 제공합니다.
멀티스레드 replica 동작의 경우,
SHOW REPLICA STATUS는 모든 코디네이터 및 워커
스레드 오류를 Last_SQL_Errno
및 Last_SQL_Error 필드를 사용해 보고하므로,
가장 최근 오류만 볼 수 있고 정보가 손실될 수 있습니다.
replication 테이블은 스레드별로 오류를 저장하여 정보 손실이 발생하지 않습니다.
마지막으로 본 트랜잭션은 replication 테이블에서
워커별로 확인할 수 있습니다. 이 정보는
SHOW REPLICA STATUS에서는 제공되지 않습니다.
Performance Schema 인터페이스에 익숙한 개발자는 테이블에 행을 추가하여 replication 테이블을 확장하고 추가 정보를 제공할 수 있습니다.
참고
MySQL Enterprise Edition에는 replication 성능과 관련된 정보를 제공하는 두 가지 컴포넌트가 포함되어 있습니다. Group Replication
Flow Control Statistics 컴포넌트는 Group
Replication 플로우 컨트롤 실행에 대한 정보를 제공하는 여러 서버
상태 변수를 활성화합니다. 자세한 내용은
Section 7.5.6.2, “Group Replication Flow Control Statistics Component”를 참조하십시오.
Replication Applier Metrics 컴포넌트는 두 개의
Performance Schema 테이블,
replication_applier_metrics 및
replication_applier_progress_by_worker를 구현하며,
이 둘은 모두 이 섹션의 후반부에서 설명됩니다. 컴포넌트에 대한 정보는
Section 7.5.6.1, “Replication Applier Metrics Component”를 참조하십시오.
Performance Schema는 다음과 같은 replication 관련 테이블을 제공합니다:
replica의 source에 대한 커넥션 정보를 포함하는 테이블:
replication_connection_configuration:
source에 연결하기 위한 구성 파라미터
replication_connection_status:
source에 대한 커넥션의 현재 상태
replication_asynchronous_connection_failover:
비동기 커넥션 장애 조치
메커니즘을 위한 source 목록
트랜잭션 applier에 대한 일반적인 (스레드 특화가 아닌) 정보를 포함하는 테이블:
replication_applier_configuration:
replica에서 트랜잭션 applier에 대한
구성 파라미터.
replication_applier_status:
replica에서 트랜잭션 applier의
현재 상태.
source로부터 전달된 트랜잭션을 적용하는 작업을 담당하는 특정 스레드에 대한 정보를 포함하는 테이블:
replication_applier_status_by_coordinator:
코디네이터 스레드의 상태 (replica가
멀티스레드가 아니면 비어 있음).
replication_applier_status_by_worker:
replica가 멀티스레드인 경우 applier 스레드 또는 워커 스레드의 상태.
채널 기반 replication 필터에 대한 정보를 포함하는 테이블:
replication_applier_filters:
특정 replication 채널에 설정된
replication 필터에 대한 정보를 제공합니다.
replication_applier_global_filters:
모든 replication 채널에 적용되는
글로벌 replication 필터에 대한 정보를 제공합니다.
Group Replication 멤버에 대한 정보를 포함하는 테이블:
replication_group_members:
group 멤버에 대한 네트워크 및 상태 정보를 제공합니다.
replication_group_member_stats:
group 멤버 및 그들이 참여하는
트랜잭션에 대한 통계 정보를 제공합니다.
자세한 내용은 Section 20.4, “Monitoring Group Replication”을 참조하십시오.
다음 Performance Schema replication 테이블들은 Performance Schema가 비활성화된 경우에도 계속 채워집니다:
예외는 replication 테이블
replication_connection_status,
replication_applier_status_by_coordinator,
및
replication_applier_status_by_worker에 있는
트랜잭션의 시작 및 종료 타임스탬프와 같은 로컬 타이밍 정보입니다.
이 정보는 Performance Schema가 비활성화된 경우에는 수집되지 않습니다.
다음 섹션에서는 각 replication 테이블에 대해 더 자세히 설명하고,
SHOW REPLICA STATUS가 생성하는 컬럼과
동일한 정보가 나타나는 replication 테이블 컬럼 간의 대응 관계를 설명합니다.
이 replication 테이블 소개의 나머지 부분에서는
Performance Schema가 테이블을 채우는 방식과,
SHOW REPLICA STATUS의 어떤 필드가
테이블에 표현되지 않는지에 대해 설명합니다.
Performance Schema는 replication 테이블을 다음과 같이 채웁니다:
CHANGE REPLICATION SOURCE TO가 실행되기 전에는
테이블은 비어 있습니다.
CHANGE REPLICATION SOURCE TO 실행 후에는
구성 파라미터가 테이블에서 보입니다. 이 시점에는
활성 replication 스레드가 없으므로
THREAD_ID 컬럼은
NULL이고,
SERVICE_STATE 컬럼의 값은
OFF입니다.
START REPLICA 이후에는
null이 아닌 THREAD_ID 값을 볼 수 있습니다.
idle 또는 active 상태의 스레드는
SERVICE_STATE 값이
ON입니다. source에 연결하는 스레드는
연결을 설정하는 동안 CONNECTING 값을 가지며,
연결이 유지되는 동안에는 ON 값을 가집니다.
STOP REPLICA 이후에는
THREAD_ID 컬럼이
NULL이 되며,
더 이상 존재하지 않는 스레드의
SERVICE_STATE 컬럼 값은
OFF가 됩니다.
테이블은
STOP REPLICA 이후 또는 오류로 인해
스레드가 중지된 후에도 유지됩니다.
이 테이블은
START REPLICA가 실행될 때 채워지며,
행의 수는 워커의 수를 나타냅니다.
Performance Schema replication 테이블의 정보는
SHOW REPLICA STATUS에서 제공되는 정보와
다소 다릅니다. 이는 테이블이 파일 이름과 위치가 아니라
global transaction identifier (GTID) 사용을 기준으로 하고,
server ID 값이 아닌 서버 UUID 값을 표현하기 때문입니다.
이러한 차이로 인해, Performance Schema replication 테이블에는
몇몇 SHOW REPLICA STATUS 컬럼이
저장되지 않거나, 다른 방식으로 표현됩니다:
1Master_Log_File 2Read_Master_Log_Pos 3Relay_Log_File 4Relay_Log_Pos 5Relay_Master_Log_File 6Exec_Master_Log_Pos 7Until_Condition 8Until_Log_File 9Until_Log_Pos
Master_Info_File 필드는 저장되지 않습니다.
이 필드는 replica의 source 메타데이터 리포지토리에 사용되는
master.info 파일을 참조하는데,
이 파일은 리포지토리에 대해 크래시 세이프 테이블을 사용함으로써
대체되었습니다.
다음 필드는
server_id를 기반으로 하며,
server_uuid를 기반으로 하지 않으므로
저장되지 않습니다:
1Master_Server_Id 2Replicate_Ignore_Server_Ids
Skip_Counter 필드는 이벤트 개수를 기반으로 하며
GTID 기반이 아니므로 저장되지 않습니다.
다음 오류 필드는
Last_SQL_Errno 및
Last_SQL_Error의 별칭이므로
저장되지 않습니다:
1Last_Errno 2Last_Error
Performance Schema에서는 이 오류 정보가
replication_applier_status_by_worker
테이블 (및 replica가 멀티스레드인 경우
replication_applier_status_by_coordinator)의
LAST_ERROR_NUMBER 및
LAST_ERROR_MESSAGE 컬럼에
제공됩니다. 이 테이블들은
Last_Errno 및
Last_Error에서 제공되는 것보다
더 구체적인 스레드별 오류 정보를 제공합니다.
1Replicate_Do_DB 2Replicate_Ignore_DB 3Replicate_Do_Table 4Replicate_Ignore_Table 5Replicate_Wild_Do_Table 6Replicate_Wild_Ignore_Table
Replica_IO_State 및
Replica_SQL_Running_State 필드는
저장되지 않습니다. 필요한 경우, 이러한 값은 적절한
replication 테이블의 THREAD_ID
컬럼을 사용하여 프로세스 리스트에서 가져온 후,
이를 INFORMATION_SCHEMA PROCESSLIST 테이블의
ID 컬럼과 조인하여 후자의
STATE 컬럼을 선택함으로써 얻을 수 있습니다.
Executed_Gtid_Set 필드는
매우 많은 텍스트를 포함하는 큰 집합을 표시할 수 있습니다.
대신 Performance Schema 테이블은
replica에서 현재 적용 중인 트랜잭션의 GTID를 보여줍니다.
또는, 실행된 GTID 집합은
gtid_executed 시스템
변수의 값에서 얻을 수 있습니다.
Seconds_Behind_Master 및
Relay_Log_Space 필드는
결정 예정 상태(to-be-decided)에 있으며 저장되지 않습니다.
replication Performance Schema 테이블의 첫 번째 컬럼은
CHANNEL_NAME입니다. 이를 통해 테이블을
replication 채널별로 볼 수 있습니다. non-multisource replication
구성에서는 단일 기본(default) replication 채널만 존재합니다.
replica에서 여러 replication 채널을 사용하는 경우,
특정 replication 채널을 모니터링하기 위해 테이블을
replication 채널별로 필터할 수 있습니다. 자세한 내용은
Section 19.2.2, “Replication Channels” 및
Section 19.1.5.8, “Monitoring Multi-Source Replication”을 참조하십시오.
29.12.10 Performance Schema User-Defined Variable Tables
29.12.12 Performance Schema NDB Cluster Tables