Open Source RDBMS - Seamless, Scalable, Stable and Free

한국어 | Login |Register

Versions available for this page: CUBRID 8.4.3 |  CUBRID 9.0.0 | 

cubrid shard 유틸리티

cubrid shard 유틸리티를 이용하여 CUBRID SHARD를 구동하거나 정지할 수 있고, 각종 상태 정보를 조회할 수 있다.

CUBRID SHARD 구동

CUBRID SHARD를 구동하기 위해서는 다음과 같이 입력한다.

% cubrid shard start

@ cubrid shard start

++ cubrid shard start: success

이미 CUBRID SHARD가 구동 중이면 다음과 같은 메시지가 출력된다.

% cubrid shard start

@ cubrid shard start

++ cubrid shard is running.

cubrid shard start 수행 시 CUBRID SHARD 환경 설정 파일(shard.conf) 의 설정을 읽어 설정 상의 모든 구성 요소를 구동한다. 구동 시 메타데이터 DB 및 shard DB에 접속을 하므로, CUBRID SHARD의 구동 전 메타데이터 DB 및 shard DB 들이 모두 구동되어 있어야 한다.

CUBRID SHARD 정지

CUBRID SHARD 를 종료하기 위하여 다음과 같이 입력한다.

% cubrid shard stop

@ cubrid shard stop

++ cubrid shard stop: success

이미 CUBRID SHARD 가 종료되었다면 다음과 같은 메시지가 출력된다.

$ cubrid shard stop

@ cubrid shard stop

++ cubrid shard is not running.

CUBRID SHARD 파라미터의 동적 변경
설명

CUBRID SHARD의 구동과 관련된 파라미터는 CUBRID SHARD 환경 설정 파일(shard.conf) 에서 설정할 수 있다. 그 밖에, shard_broker_changer 유틸리티를 이용하여 구동 중에만 한시적으로 일부 CUBRID SHARD 파라미터를 동적으로 변경할 수 있다. CUBRID SHARD 파라미터 설정 및 동적으로 변경 가능한 파라미터 등 기타 자세한 내용은 CUBRID SHARD > 구성 및 설정을 참조한다.

구문

CUBRID SHARD 구동 중에 파라미터를 변경하기 위한 shard_broker_changer 유틸리티의 구문은 다음과 같다. shard-name에는 구동 중인 CUBRID SHARD 이름을 입력하고 parameter에는 동적으로 변경할 수 있는 파라미터를 입력한다. 변경하고자 하는 파라미터에 따라 value가 지정되어야 한다. CUBRID SHARD의 식별 번호를 지정하여 특정 CUBRID SHARD에만 변경을 적용할 수 있다. proxy-numbercubrid shard status 명령에서 출력되는 PROXY-ID이다.

shard_broker_changer shard-name [proxy-number] parameter value

예제

구동 중인 CUBRID SHARD에서 SQL 로그가 기록되도록 SQL_LOG 파라미터를 ON으로 설정하기 위하여 다음과 같이 입력한다. 이와 같은 파라미터의 동적 변경은 CUBRID SHARD가 구동 중일 때만 한시적으로 효력이 있다.

% shard_broker_changer shard1 sql_log on

OK

CUBRID SHARD 상태 확인

cubrid shard status는 여러 옵션을 제공하며, 각 shard broker 및 shard proxy, shard cas의 상태 정보를 확인할 수 있도록 한다. 또한 메타데이터 정보 및 shard proxy에 접속한 클라이언트의 정보를 확인 가능하다.

구문

<expr>이 주어지면 해당 CUBRID SHARD에 대한 상태 모니터링을 수행하고, 생략되면 CUBRID SHARD 환경 설정 파일(shard.conf)에 등록된 전체 CUBRID SHARD에 대해 상태 모니터링을 수행한다.

cubrid shard status options [<expr>]

options : [-b | -f [-l sec] | -t | -c | -m | -s <sec>]

옵션

다음은 결합할 수 있는 옵션에 관해 설명한 표이다.

옵션

설명

<expr>

CUBRID SHARD 이름이 <expr>을 포함하는 CUBRID SHARD에 관한 상태 정보를 출력한다. 지정되지 않으면 전체 CUBRID SHARD의 상태 정보를 출력한다.

-b

CUBRID proxy나 CUBRID CAS에 관한 정보는 포함하지 않고, CUBRID broker에 관한 상태 정보만 출력한다.

-c

CUBRID proxy에 접속한 클라이언트 정보를 출력한다.

-m

메타데이터 정보를 출력한다.

-t

화면 출력시 tty mode로 출력한다. 출력 내용을 리다이렉션하여 파일로 쓸 수 있다.

-f [-l secs]

CUBRID SHARD에 대한 좀 더 상세한 정보를 출력한다.

-s secs

CUBRID SHARD에 대한 상태 정보를 지정된 시간마다 주기적으로 출력한다. q를 입력하면 명령 프롬프트로 복귀한다.

예제

전체 CUBRID SHARD 상태 정보를 확인하기 위하여 옵션 및 인수를 입력하지 않으면 다음과 같이 출력된다.

$ cubrid shard status

@ cubrid shard status

% test_shard  - shard_cas [2576,45000] /home/CUBRID/log/broker/test_shard.err

 JOB QUEUE:0, AUTO_ADD_APPL_SERVER:ON, SQL_LOG_MODE:ALL:100000

 LONG_TRANSACTION_TIME:60.00, LONG_QUERY_TIME:60.00, SESSION_TIMEOUT:10

 KEEP_CONNECTION:AUTO, ACCESS_MODE:RW

----------------------------------------------------------------

PROXY_ID SHARD_ID   CAS_ID   PID   QPS   LQS PSIZE STATUS

----------------------------------------------------------------

       1        1        1  2580     100     3 55968 IDLE

       1        2        1  2581     200     4 55968 IDLE

  • % test_shard : proxy의 이름
  • shard_cas : 응용 서버의 형태. [shard_cas | shard_cas_myqsl]
  • [2576, 45000] : proxy 프로세스 ID와 proxy 접속 포트 번호
  • /home/CUBRID/log/broker/test_shard.err : test_shard의 에러 로그 파일
  • JOB QUEUE : 작업 큐에 대기 중인 작업 개수
  • SQL_LOG_MODE : 모든 SQL에 대해 로그를 기록하기 위해 shard.conf 파일의 SQL_LOG 파라미터 값을 ALL로 지정했다.
  • SLOW_LOG : 장기 실행 질의문 또는 에러가 발생한 질의문을 SLOW SQL LOG 파일에 기록하기 위해 shard.conf 파일의 SLOW_LOG 파라미터 값을 ON으로 지정했다.
  • LONG_TRANSACTION_TIME : 장기 실행(long-duration) 트랜잭션으로 판단하는 트랜잭션의 실행 시간. 트랜잭션의 실행시간이 60초를 넘으면 장기 실행 트랜잭션이다.
  • LONG_QUERY_TIME : 장기 실행 질의(long-duration query)으로 판단하는 질의의 실행 시간. 질의의 실행 시간이 60초를 넘으면 장기 실행 질의이다.
  • SESSION_TIMEOUT : 트랜잭션 시작 이후 커밋 혹은 롤백하지 않은 채로 아무런 요청이 없는 상태의 응용 서버(CAS) 세션을 종료하기 위한 타임아웃 값. 이 상태에서 이 시간을 초과하면 응용 클라이언트와 응용 서버(CAS) 간의 접속이 종료된다. shard.confSESSION_TIMEOUT 파라미터 값이 300(초)이다.
  • ACCESS_MODE : shard broker의 동작 모드. RW는 데이터베이스 조회 뿐만 아니라 수정도 가능한 모드이다.
  • PROXY_ID : shard broker 내부에서 순차적으로 부여된 proxy의 일련번호
  • SHARD_ID : proxy에 설정된 shard DB의 일련번호
  • CAS_ID : shard DB에 접속하는 응용 서버(CAS)의 일련번호
  • PID : shard DB에 접속하는 응용 서버(CAS) 프로세스의 ID
  • QPS : 초당 처리된 질의의 수
  • LQS : 초당 처리되는 장기 실행 질의의 수
  • PSIZE : 응용 서버 프로세스 크기
  • STATUS : 응용 서버의 현재 상태로서, BUSY/IDLE/CLIENT_WAIT/CLOSE_WAIT/CON_WAIT가 있다.

shard broker에 관한 상태 정보를 확인하려면 다음과 같이 입력한다.

$ cubrid shard status -b

@ cubrid shard status

  NAME           PID  PORT  Active-P  Active-C      REQ  TPS  QPS  K-QPS NK-QPS    LONG-T    LONG-Q  ERR-Q

==========================================================================================================

* test_shard    3548 45000         1         2        0    0    0      0      0    0/60.0    0/60.0      0

  • NAME : proxy의 이름
  • PID : proxy의 프로세스 ID
  • PORT : proxy의 포트 번호
  • Active-P : proxy의 개수
  • Active-C : 응용 서버(CAS)의 개수
  • REQ : proxy가 처리한 클라이언트 요청 개수
  • TPS : 초당 처리된 트랜잭션의 수(옵션이 -b -s <sec>일 때만 계산됨)
  • QPS : 초당 처리된 질의의 수(옵션이 -b -s <sec>일 때만 계산됨)
  • K-QPS : shard key가 포함된 질의에 대한 QPS
  • NK-QPS : shard key가 포함되지 않은 질의에 대한 QPS
  • LONG-T : LONG_TRANSACTION_TIME 시간을 초과한 트랜잭션 수 / LONG_TRANSACTION_TIME 파라미터의 값
  • LONG-Q : LONG_QUERY_TIME 시간을 초과한 질의의 수 / LONG_QUERY_TIME 파라미터의 값
  • ERR-Q : 에러가 발생한 질의의 수

shard broker에 관한 좀 더 상세한 상태 정보를 확인하려면 다음과 같이 입력한다.

$ cubrid shard status -b -f

@ cubrid shard status

NAME           PID  PSIZE  PORT  Active-P  Active-C      REQ  TPS  QPS  K-QPS (H-KEY   H-ID H-ALL) NK-QPS    LONG-T    LONG-Q  ERR-Q  CANCELED  ACCESS_MODE  SQL_LOG

======================================================================================================================================================================

* test_shard 3548 100644 45000         1         2        0    0    0      0      0      0      0      0    0/60.0    0/60.0      0         0           RW      ALL

  • NAME : proxy의 이름
  • PID : proxy의 프로세스 ID
  • PSIZE : proxy의 프로세스 크기
  • PORT : proxy의 포트 번호
  • Active-P : proxy의 개수
  • Active-C : 응용 서버(CAS)의 개수
  • REQ : proxy가 처리한 클라이언트 요청 개수
  • TPS : 초당 처리된 트랜잭션의 수(옵션이 -b -s <sec>일 때만 계산됨)
  • QPS : 초당 처리된 질의의 수(옵션이 -b -s <sec>일 때만 계산됨)
  • K-QPS : shard key가 포함된 질의에 대한 QPS
  • H-KEY : shard_key 힌트가 포함된 질의에 대한 QPS
  • H-ID : shard_id 힌트가 포함된 질의에 대한 QPS
  • H-ALL : shard_all 힌트가 포함된 질의에 대한 QPS
  • NK-QPS : shard key가 포함되지 않은 질의에 대한 QPS
  • LONG-T : LONG_TRANSACTION_TIME 시간을 초과한 트랜잭션 수 / LONG_TRANSACTION_TIME 파라미터의 값
  • LONG-Q : LONG_QUERY_TIME 시간을 초과한 질의의 수 / LONG_QUERY_TIME 파라미터의 값
  • ERR-Q : 에러가 발생한 질의의 수
  • CANCELED : shard broker 시작 이후 사용자 인터럽트로 인해 취소된 질의의 개수 (-l N 옵션과 함께 사용하면 N 초 동안 누적된 개수)
  • ACCESS_MODE : shard broker의 동작 모드. RW는 데이터베이스 조회 뿐만 아니라 수정도 가능한 모드이다.
  • SQL_LOG : SQL 로그를 남기도록 shard.conf 파일의 SQL_LOG 파라미터 값이 ALL이다.

-s 옵션을 이용하여 test_shard를 포함하는 이름을 가진 shard broker의 모니터링 주기를 입력하고, 주기적으로 shard broker의 상태를 모니터링하기 위해 다음과 같이 입력한다. 인수로 test_shard를 입력하지 않으면 모든 shard broker에 대하여 상태 모니터링이 주기적으로 수행된다. 또한, q를 입력하면 모니터링 화면에서 명령 프롬프트로 복귀한다.

$ cubrid shard status -b test_shard -s 1 -t

@ cubrid shard status

  NAME           PID  PORT  Active-P  Active-C      REQ  TPS  QPS  K-QPS NK-QPS    LONG-T    LONG-Q  ERR-Q

==========================================================================================================

* test_shard    3548 45000         1         2        0    0    0      0      0    0/60.0    0/60.0      0

-t 옵션을 사용하여, TPS 와 QPS 정보를 파일로 출력한다. 파일로 출력하는 것을 중단하려면 <Crtl+C> 키를 눌러서 프로그램을 정지시킨다.

% cubrid shard status -b -s 1 -t  > log_file

-m 옵션을 사용하여 메타데이터 정보를 출력한다. shard.conf의 파라미터에 대한 내용은 기본 설정 파일 shard.conf을 참고한다.

$ cubrid shard status -m

@ cubrid shard status

% test_shard [299009]

MODULAR : 256, LIBRARY_NAME : NOT DEFINED, FUNCTION_NAME : NOT DEFINED

SHARD STATISTICS

           ID  NUM-KEY-Q  NUM-ID-Q   NUM-NO-HINT-Q       SUM

        -----------------------------------------------------

            0          0         0               0         0

            1          0         0               0         0

            2          0         0               0         0

            3          0         0               0         0

  • test_shard : proxy의 이름
  • [299009] : shard.confMETADATA_SHM_ID 파라미터의 decimal 값
  • MODULAR : shard.confSHARD_KEY_MODULR 파라미터 값
  • LIBRARY_NAME : shard.confSHARD_KEY_LIBRARY_NAME 파라미터 값
  • FUNCTION_NAME : shard.confSHARD_KEY_FUNCTION_NAME 파라미터 값
  • SHARD STATISTICS : shard ID 질의 정보
    • ID : shard DB 일련번호(shard ID)
    • NUM-KEY-Q : shard key가 포함된 질의 요청 수
    • NUM-ID-Q : shard ID가 포함된 질의 요청 수
    • NUM-NO-HINT-Q : IGNORE_SHARD_HINT가 설정된 경우 hint 없이 load balancing되어 처리된 요청 수
    • SUM : NUM-KEY-Q + NUM-ID-Q

-m -f 옵션을 사용하면 좀 더 상세한 메타데이터 정보를 출력한다. shard.conf의 파라미터에 대한 내용은 기본 설정 파일 shard.conf을 참고한다.

$ cubrid shard status –m -f

@ cubrid shard status

% test_shard [299009]

MODULAR : 256, LIBRARY_NAME : NOT DEFINED, FUNCTION_NAME : NOT DEFINED

SHARD : 0 [HostA] [shard1], 1 [HostB] [shard1], 2 [HostC] [shard1], 3 [HostD] [shard1]

SHARD STATISTICS

           ID  NUM-KEY-Q  NUM-ID-Q   NUM-NO-HINT-Q       SUM

        -----------------------------------------------------

            0          0         0               0         0

            1          0         0               0         0

            2          0         0               0         0

            3          0         0               0         0

 

RANGE STATISTICS : user_no

          MIN ~   MAX :      SHARD     NUM-Q

        ------------------------------------

            0 ~    31 :          0         0

           32 ~    63 :          1         0

           64 ~    95 :          2         0

           96 ~   127 :          3         0

          128 ~   159 :          0         0

          160 ~   191 :          1         0

          192 ~   223 :          2         0

          224 ~   255 :          3         0

DB Alias : shard1 [USER : shard, PASSWD : shard123]

  • test_shard : proxy의 이름
  • [299009] : shard.confMETADATA_SHM_ID 파라미터의 decimal 값
  • MODULAR : shard.confSHARD_KEY_MODULR 파라미터 값
  • LIBRARY_NAME : shard.confSHARD_KEY_LIBRARY_NAME 파라미터 값
  • FUNCTION_NAME : shard.confSHARD_KEY_FUNCTION_NAME 파라미터 값
  • SHARD : proxy 내의 shard DB 정보
    • 0 : shard DB 일련번호(shard ID)
    • [HostA] : shard 접속 정보
    • [shard1] : 실제 DB 이름
  • ID : shard DB 일련번호(shard ID)
  • NUM-KEY-Q : shard key가 포함된 질의 요청 수
  • NUM-ID-Q : shard ID가 포함된 질의 요청 수
  • SUM : NUM-KEY-Q + NUM-ID-Q
  • RANGE STATISTICS : shard key 질의 정보
    • user_no : shard key 이름
    • MIN : shard key 최소 범위
    • MAX : shard key 최대 범위
    • SHARD : shard DB 일련번호(shard ID)
    • NUM-Q : shard key가 포함된 질의 요청 수

-c 옵션을 사용하여 shard proxy에 접속한 클라이언트 정보를 출력한다.

$ cubrid shard status -c

@ cubrid shard status

% test_shard(0), MAX-CLIENT : 10000

------------------------------------------------------------------------------------------------

 CLIENT-ID           CLIENT-IP             CONN-TIME            L-REQ-TIME            L-RES-TIME

------------------------------------------------------------------------------------------------

         0         10.24.18.68   2011/12/15 16:33:31   2011/12/15 16:33:31   2011/12/15 16:33:31

  • CLIENT-ID : proxy 내에서 순차적으로 부여한 클라이언트 일련 번호
  • CLIENT-IP : 클라이언트 IP 주소
  • CONN-TIME : proxy에 접속한 시각
  • L-REQ-TIME : proxy에 마지막으로 질의를 요청한 시각
  • L-RES-TIME : proxy로부터 마지막으로 응답을 받은 시각
shard proxy 접속 제한
설명

shard proxy에 접속하는 응용 클라이언트를 제한하려면 cubrid_shard.confACCESS_CONTROL 파라미터 값을 ON으로 설정하고, ACCESS_CONTROL_FILE 파라미터 값에 접속을 허용하는 사용자와 데이터베이스 및 IP 목록을 작성한 파일 이름을 입력한다. ACCESS_CONTROL 파라미터의 기본값은 OFF이다.

ACCESS_CONTROL, ACCESS_CONTROL_FILE 파라미터는 공통 적용 파라미터가 위치하는 [shard] 아래에 작성해야 한다.

ACCESS_CONTROL_FILE의 형식은 다음과 같다.

[%<shard_name>]

<db_name>:<db_user>:<ip_list_file>

  • <shard_name> : shard proxy 이름. cubrid_broker.conf에서 지정한 shard proxy 이름 중 하나이다.
  • <db_name> : 데이터베이스 이름. *로 지정하면 모든 데이터베이스를 허용한다.
  • <db_user> : 데이터베이스 사용자 ID. *로 지정하면 모든 데이터베이스 사용자 ID를 허용한다.
  • <ip_list_file> : 접속 가능한 IP 목록을 저장한 파일의 이름. ip_list_file1, ip_list_file2, …와 같이 파일 여러 개를 쉼표(,)로 구분하여 지정할 수 있다.

shard proxy별로 [%<broker_name>]과 <db_name>:<db_user>:<ip_list_file>을 추가로 지정할 수 있으며, 같은 <db_name>, 같은 <db_user>에 대해 별도의 라인으로 추가 지정할 수 있다.

ip_list_file의 작성 형식은 다음과 같다.

<ip_addr>

  • <ip_addr> : 접근을 허용할 IP 명. 뒷자리를 *로 입력하면 뒷자리의 모든 IP를 허용한다.

ACCESS_CONTROL 값이 ON인 상태에서 ACCESS_CONTROL_FILE이 지정되지 않으면 shard proxy는 localhost에서의 접속 요청만을 허용한다. shard proxy 구동 시 ACCESS_CONTROL_FILE 및 ip_list_file 분석에 실패하면 shard proxy 는 localhost에서의 접속 요청만을 허용한다.

shard proxy 구동 시 ACCESS_CONTROL_FILE 및 ip_list_file 분석에 실패하는 경우 shard proxy는 구동되지 않는다.

# cubrid_broker.conf

[broker]

MASTER_SHM_ID           =30001

ADMIN_LOG_FILE          =log/broker/cubrid_broker.log

ACCESS_CONTROL   =ON

ACCESS_CONTROL_FILE     =/home1/cubrid/access_file.txt

[%QUERY_EDITOR]

SERVICE                 =ON

BROKER_PORT             =30000

......

다음은 ACCESS_CONTROL_FILE의 한 예이다. 파일 내에서 사용하는 *는 모든 것을 나타내며, 데이터베이스 이름, 데이터베이스 사용자 ID, 접속을 허용하는 IP 리스트 파일 내의 IP에 대해 지정할 때 사용할 수 있다.

[%QUERY_EDITOR]

dbname1:dbuser1:READIP.txt

dbname1:dbuser2:WRITEIP1.txt,WRITEIP2.txt

*:dba:READIP.txt

*:dba:WRITEIP1.txt

*:dba:WRITEIP2.txt

 

[%SHARD2]

dbname:dbuser:iplist2.txt

 

[%SHARD3]

dbname:dbuser:iplist2.txt

 

[%SHARD4]

dbname:dbuser:iplist2.txt

위의 예에서 지정한 shard proxy는 QUERY_EDITOR, SHARD2, SHARD3, SHARD4이다.

위 설정에서 QUERY_EDITOR shard proxy는 다음과 같은 응용의 접속 요청만을 허용한다.

  • dbname1에 dbuser1으로 로그인하는 사용자가 READIP.txt에 등록된 IP에서 접속
  • dbname1에 dbuser2로 로그인하는 사용자가 WRITEIP1.txt나 WRITEIP2.txt에 등록된 IP에서 접속
  • 모든 데이터베이스에 DBA로 로그인하는 사용자가 READIP.txt나 WRITEIP1.txt 또는 WRITEIP2.txt에 등록된 IP에서 접속

다음은 ip_list_file에서 허용하는 IP를 설정하는 예이다.

192.168.1.25

192.168.*

10.*

*

위의 예에서 지정한 IP를 보면 다음과 같다.

  • 첫 번째 줄의 설정은 192.168.1.25을 허용한다.
  • 두 번째 줄의 설정은 192.168 로 시작하는 모든 IP를 허용한다.
  • 세 번째 줄의 설정은 10으로 시작하는 모든 IP를 허용한다.
  • 네 번째 줄의 설정은 모든 IP를 허용한다.

이미 구동되어 있는 shard proxy에 대해서는 다음 명령어를 통해 설정 파일을 다시 적용하거나 현재 적용 상태를 확인할 수 있다.

구문

shard proxy에서 허용하는 데이터베이스, 데이터베이스 사용자 ID, IP를 설정한 후 변경된 내용을 서버에 적용하려면 다음 명령어를 사용한다.

cubrid shard acl reload [<SP_NAME>]

  • SP_NAME : shard proxy 이름. 이 값을 지정하면 특정 shard proxy에만 변경 내용을 적용할 수 있으며, 생략하면 전체 shard proxy에 변경 내용을 적용한다.

현재 구동 중인 shard proxy에서 허용하는 데이터베이스, 데이터베이스 사용자 ID, IP의 설정을 화면에 출력하려면 다음 명령어를 사용한다.

cubrid shard acl status [<SP_NAME>]

  • SP_NAME : shard proxy 이름. 이 값을 지정하면 특정 shard proxy의 설정을 출력할 수 있으며, 생략하면 전체 shard proxy의 설정을 출력한다.

참고 데이터베이스 서버의 접속 제한에 대한 자세한 내용은 데이터베이스 서버 접속 제한을 참고한다.

특정 shard 관리

shard1만 구동하려면 다음과 같이 입력한다.

$ cubrid shard on shard1

만약, shard1이 공유 메모리에 설정되지 않은 상태라면 다음과 같은 메시지가 출력된다.

% cubrid shard on shard1

Cannot open shared memory

shard1만 종료하려면 다음과 같이 입력한다.

$ cubrid shard off shard1

shard1을 재시작하려면 다음과 같이 입력한다.

$ cubrhd shard restart shard1

shard proxy 리셋 기능은 HA에서 failover 등으로 shard proxy가 원하지 않는 데이터베이스 서버에 연결되었을 때, 기존 연결을 끊고 새로 연결할 수 있도록 한다. 만약 동적으로 SHARD_DB_NAME, SHARD_DB_USER, SHARD_DB_PASSWORD를 변경했다면, 변경된 값으로 접속을 시도한다.

% cubrid shard reset shard1