CUBRID LOG

호밀빵 굽는 쿼카·2022년 9월 17일
0

Cubrid

목록 보기
3/6

CUBRID 시스템 카탈로그(db_ha_apply_info)

시스템 카탈로그는 데이터베이스 관리자의 도구로, 데이터베이스에 저장되어 있는 모든 데이터 개체들에 대한 정의나 명세에 대한 정보가 수록되어 있는 시스템 테이블

CUBRID HA 구성완료 후, ./sync_check.sh DB 명령어를 실행해서 복제지연을 확인했습니다. 이때 나오는 log_commit_time 등의 항목들이 CUBRID db_ha_apply_info 카탈로그에 해당하는 것을 확인했습니다. 각각의 항목이 어떤 것을 의미하는지를 확인하기 위해 시스템 카탈로그 중 db_ha_apply_info를 찾아보고 이에 대해 숙지하려고 합니다.

db_ha_apply_info

복제 로그 반영 프로세스(applylogdb) : 복제 로그 복사 프로세스에 의해 복사된 로그를 노드에 반영. 반영한 복제 정보는 내부 카탈로그(db_ha_apply_info)에 저장하며, 이 정보는 cubrid applyinfo 유틸리티로 확인 가능

cubrid applyinfo [options] <database-name>

db_ha_apply_infoapplylogdb 유틸리티가 복제 로그를 반영할 때마다 그 진행 상태를 저장하기 위한 테이블이다. 이 테이블은 applylogdb 유틸리티가 커밋하는 시점마다 갱신되며, _counter 칼럼에는 수행 연산의 누적 카운트 값이 저장된다. 각 칼럼의 의미는 다음과 같다.

  • lsa (Log Sequence Address) : 로그 레코드의 식별자
  • 참고) 복제 로그 복사 프로세스(copylogdb)
  • log_record_time, log_commit_time이 차이가 없으면 됨
  • fail_counter가 0으로 나오면 됨 -> fail_counter가 증가하면 데이터가 틀어졌다는 의미






LOG 파일

브로커 로그

브로커 관련 로그에는 접속 로그, 오류 로그, SQL 로그가 있으며 각각의 로그는 설치 디렉터리의 log 디렉터리에서 확인할 수 있습니다.

접속 로그

  • WEB/APP 서버를 구동하면 데이터베이스와 연결을 맺기 위해 브로커의 CAS에 접속하는데, 이때 접속 성 공 및 실패에 대한 내용을 로그로 남긴다
  • 접속 로그는 응용 클라이언트 접속에 관한 정보를 기록하며 $CUBRID/log/broker의 위치의 {broker_name}.access 형태로 저장됩니다.
  • {broker_name}.access 파일 : 정상적으로 접속한 이력을 기록한 로그
    {broker_name}.access.denied 파일 : 접속에 실패한 이력을 기록한 로그

오류 로그

  • 오류 로그는 응용 클라이언트의 요청을 처리하는 도중에 발생한 오류에 관한 정보를 기록하며, $CUBRID/log/broker/error_log 위치의 {broker_name}_{app_server_num}.err 형태로 저장됩니다.

SQL 로그

  • SQL 로그를 남기려면 cubrid_broker.conf 파일에서 다 음과 같이 브로커를 설정한다.
	SQL_LOG                 =ON
	LOG_DIR                 =log/broker/sql_log/qe_rw
  • SQL 로그는 응용 클라이언트가 요청하는 SQL을 기록하며, $CUBRID/log/broker/sql_log 위치의 {broker_name}_{app_server_num}.sql.log 형태로 저장된다.
  • 저장여부 및 위치,용량(기본값 : 10MB)을 파라메타 설정으로 변경할 수 있다.
  • SQL 로그는 CAS별로 각각의 로그 파일에 시간순으로 기록된다.
  • SQL 로그 파일에는 질의가 수행된 시간과 질의 수행 결과 건수, 질의의 내용, 변수의 값이 포함
  • 질의 수행 시 오류가 발생하면 해당 내용을 별도의 로그로 기록할 수 있다. 오류 로그를 남기려면 cubrid_ broker.conf 파일에서 다음과 같이 브로커를 설정한다.
	ERROR_LOG_DIR =log/broker/error_log/qe_rw

데이터베이스 서버 로그

데이터베이스 서버 로그는 master에서 발생하는 로그, 각 유틸리티에서 발생하는 로그, 데이터베이스 서버에서 발생하는 로그로 구분됩니다.

master 로그

  • master 로그는 HA에 대한 정보와 서버들의 연결에서 발생하는 오류 정보를 확인할 수 있습니다. 위치는 $CUBRID/log/{hostname}_master.err 입니다.

각 유틸리티에서 발생하는 로그

  • 각 유틸리티에서 발생하는 로그는 유틸리티 실행시 발생하는 로그를 저장하는 것으로 위치는 $CUBRID/log/{db name}_{utility name}.err 입니다.
  • 대표적으로 cubrid_utility.err 로그는 DB 기동 및 정지와 관련 유틸리티들이 실행된 로그를 저장하는 로그 파일입니다.

데이터베이스 서버

  • 데이터베이스 서버에서 발생하는 로그는 제한된 IP에서 접속을 시도하거나 정상 임계치를 벋어난 성능 이슈 및 오류 발생 등의 로그입니다.
  • 오류 로그는 $CUBRID/log/server 디렉터리에 생성되며, 데이터베이스 ACL로 인해 접속 실패한 로그나 고유 키 위반(unique violation) 등의 오류 내용, 체크포인트(checkpoint) 수행 로그 등이 기록됩니다.
  • {db name}_{start date_time}.[access | event | err] 의 파일명으로 저장됩니다.
  • 서버 이벤트 로그(*.event) 에 기록되는 이벤트로는 SLOW_QUERY, MANY_ IOREADS, LOCK_TIMEOUT, DEADLOCK, TEMP_VOLUME_EXPAND
  • 아래는 $CUBRID/log/server/{}.err 의 내용입니다. 아래 내용은 ERROR 메세지가 아닌 NOTIFICATION 메세지로 서버에 접속했다는 것을 의미합니다.
Time: 09/17/22 23:04:45.053 - NOTIFICATION *** file ../../src/transaction/log_page_buffer.c, line 9120  CODE = -978 Tran = 0, CLIENT = (unknown):(unknown)(-1), EID = 19
Checkpoint finished (checkpoint page id: 875, checkpoint redo page id: 875).

cubrid 유틸리티 로그

  • CUBRID는 cubrid 유틸리티의 수행 결과에 대한 로깅 기능을 제공한다.
  • 위치는 $CUBRID/log/cubrid_utility.log
  • cubrid 유틸리티를 통해 수행된 모든 명령: usage, version, parsing 에러는 제외
  • cubrid 유틸리티 명령들의 수행 결과: 성공/실패, 실패 시 오류메시지, 로그 파일 크기
  • cubrid_utility.log 파일의 크기는 cubrid.conf의 error_log_size 파라미터에 설정한 값만큼 커지고, 해당 크기만큼 커지면 cubrid_utility.log.bak 파일로 백업된다.
  • 출력되는 로그 파일의 예는 다음과 같다.
13-11-19 15:27:19.426 (17724) cubrid manager stop
13-11-19 15:27:19.430 (17724) FAILURE: ++ cubrid manager server is not running.
13-11-19 15:27:19.434 (17726) cubrid service start
13-11-19 15:27:19.439 (17726) FAILURE: ++ cubrid master is running.
13-11-19 15:27:22.931 (17726) SUCCESS
13-11-19 15:27:22.936 (17756) cubrid service restart
13-11-19 15:27:31.667 (17756) SUCCESS
13-11-19 15:27:31.671 (17868) cubrid service stop
13-11-19 15:27:34.909 (17868) SUCCESS
profile
열심히 굽고 있어요🍞

0개의 댓글