이중화 프로퍼티#
다음 속성값들은 데이터베이스의 이중화 기능을 위한 값들이다. 데이터베이스 이중화에 대한 자세한 내용은 Getting Started Guide의 6장. 데이터베이스 이중화와 Replication Manual을 참조하기 바란다.
REPLICATION_ACK_XLOG_COUNT#
데이터 타입#
Unsigned Integer
기본값#
100
속성#
변경 가능, 단일 값
값의 범위#
[0, 232-1]
설명#
수신 쓰레드가 송신 쓰레드에게 ACK를 보내는 주기를 나타낸다.
수신 쓰레드는 XLog를 받아서 하나씩 반영하는 작업을 하는데, 반영한 XLog의 개수가 REPLICATION_ACK_XLOG_COUNT를 넘게 되면 송신 쓰레드에게 ACK를 전송한다.
이 값이 너무 작으면 송신 쓰레드에 ACK를 자주 보내게 되어 성능 저하를 가져올 수 있다.
너무 큰 경우에는 송신 쓰레드가 ACK를 받기 위해 대기하는 시간을 초과하여 네트워크 장애로 판단할 수 있다. 또한, 오랜 시간 ACK를 받지 못하는 경우 이중화 재시작 SN이 갱신되지 않아, 체크포인트시 송신 쓰레드가 가장 최근의 로그 레코드부터 다시 시작되며, 이중화하지 못한 로그 파일이 삭제되는 현상이 발생할 수 있다.
REPLICATION_ALLOW_DUPLICATE_HOSTS#
데이터 타입#
Unsigned Integer
기본값#
0
속성#
변경 가능, 단일 값
값의 범위#
[0, 1]
설명#
이중화 객체들의 원격 서버 IP 주소와 포트 번호를 서로 동일하게 설정하는 것을 허용할 것인지 지정한다.
0: 허용하지 않는다.
1: 허용한다.
REPLICATION_BEFORE_IMAGE_LOG_ENABLE#
데이터 타입#
Unsigned Integer
기본값#
0
속성#
변경 가능, 단일 값
값의 범위#
[0, 1]
설명#
이중화 수신자의 "이전 이미지(before image)"가 송신자로부터 받은 XLog의 이전 이미지와 다르면 데이터 충돌이 발생할 수 있다.
사용자가 충돌이 발생한 데이터를 확인할 수 있도록, 이 프로퍼티를 설정하여 트레이스 로그에 이중화 수신자의 이전 이미지를 기록할 수 있다.
0: 기록하지 않음
1: 기록함
Altibase 운영 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.
REPLICATION_COMMIT_WRITE_WAIT_MODE#
데이터 타입#
Unsigned Integer
기본값#
0
속성#
변경 가능, 단일 값
값의 범위#
[0, 1]
설명#
이중화 수신자가 수신한 XLOG를 복제 트랜잭션으로 수행 완료한 후에 디스크에 반영될 때까지 기다릴지 여부를 지정한다. 이 값이 0이면 기다리지 않으며, 1이면 디스크에 반영될 때까지 기다린다.
REPLICATION_CONNECT_RECEIVE_TIMEOUT (단위: 초)#
데이터 타입#
Unsigned Integer
기본값#
60
속성#
변경 가능, 단일 값
값의 범위#
[0, 232-1]
설명#
이중화 시작시 대상 호스트에 접속을 시도한 후, 대기하는 시간이다.
Altibase 운영 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.
REPLICATION_CONNECT_TIMEOUT (단위: 초)#
데이터 타입#
Unsigned Integer
기본값#
10
속성#
변경 가능, 단일 값
값의 범위#
[0, 232-1]
설명#
이중화를 수행하기 위해 대상 호스트에 대한 연결 수행 시, 이 프로퍼티에 설정된 시간 값 이상 응답이 없을 경우 연결을 더 이상 시도하지 않는다.
Altibase 운영 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.
REPLICATION_DDL_ENABLE#
데이터 타입#
Unsigned Integer
기본값#
0
속성#
변경 가능, 단일 값
값의 범위#
[0, 1]
설명#
이중화 대상 테이블에 DDL 구문을 허용할 것인지를 나타낸다. 1로 설정한 경우 이중화 대상 테이블에 DDL을 실행할 수 있다.
DDL을 수행하기 전에 현재 세션에서 수행하는 트랜잭션의 이중화 프로퍼티를 NONE 이외의 값으로 설정해야 송신 쓰레드에서 DDL 실행을 알 수 있다. 이중화에서 허용하는 DDL 목록과 제약사항은 Replication Manual을 참조한다.
Altibase 운영 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.
REPLICATION_DDL_ENABLE_LEVEL#
데이터 타입#
Unsigned Integer
기본값#
0
속성#
변경 가능, 단일 값
값의 범위#
[0, 1]
설명#
이중화 대상 테이블에 사용할 수 있는 DDL 구문의 범위를 결정한다. 이 프로퍼티를 사용하려면 먼저 REPLICATION_DDL_ENABLE 프로퍼티의 값을 1로 설정해야 한다. REPLICATION_DDL_ENABLE_LEVEL 값에 따라 허용되는 DDL 구문은 Replication Manual을 참조한다.
Altibase 운영 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.
REPLICATION_DDL_SYNC#
데이터 타입#
Unsigned Integer
기본값#
0
속성#
변경 가능, 단일 값
값의 범위#
[0, 1]
설명#
이중화중 DDL 복제 여부를 나타낸다.
0 : 이중화중 DDL 복제를 허용하지 않음. DDL 수행 시 이중화 지역 서버 ( Local Server ) 에서만 수행된다.
1 : 이중화중 DDL 복제를 허용함. DDL 수행 시 이중화 원격 서버 ( Remote Server )에 DDL 이 복제된다.
Altibase 운영 중 ALTER SYSTEM 문 또는 ALTER SESSION 문을 이용하여 이 프로퍼티 값을 변경할 수 있다.
REPLICATION_DDL_SYNC_TIMEOUT (단위: 초)#
데이터 타입#
Unsigned Integer
기본값#
7200
속성#
변경 가능, 단일 값
값의 범위#
[0, 232-1]
설명#
DDL 문장 실행시간이 이 프로퍼티에서 설정한 시간을 초과하면 해당 DDL 문장은 지역 서버, 원격 서버에서 모두 롤백 된다.
DDL 복제 시 테이블 잠금 획득 실패(DDL_LOCK_TIMEOUT)와 같이 재시도 가능한 에러가 발생하면 이 프로퍼티에서 설정한 시간 동안 DDL 복제를 재시도한다.
DDL 복제 대상 구문의 수행 시간은 DDL_TIMEOUT 프로퍼티와 REPLICATION_DDL_SYNC_TIMEOUT 프로퍼티 중 더 작은 값에 영향을 받는다.
Altibase 운영 중 ALTER SYSTEM 문 또는 ALTER SESSION 문을 이용하여 이 프로퍼티 값을 변경할 수 있다.
REPLICATION_EAGER_PARALLEL_FACTOR#
데이터 타입#
Unsigned Integer
기본값#
'논리 코어 수/2'와 '512' 중 작은 값
속성#
읽기 전용, 단일 값
값의 범위#
[2, 512]
설명#
EAGER 모드로 이중화 수행시 여러 개의 송신 쓰레드가 병렬로 작업을 하게 된다. 이 프로퍼티는 병렬 작업할 송신 쓰레드의 개수를 지정한다. 이중화 송신 쓰레드의 개수를 늘리면 이중화 성능이 향상될 수 있다.
그러나, 이 프로퍼티를 사용하여 송신 쓰레드 개수를 늘릴 경우, 송신 쓰레드가 보내는 트랜잭션의 순서가 보장되지 않는다는 점을 주의해야 한다. 이에 대한 자세한 내용은 Replication Manual을 참고한다.
이 프로퍼티를 설정하지 않으면 기본값은 논리 코어 수와 512 중 더 작은 값이 된다.
REPLICATION_EAGER_RECEIVER_MAX_ERROR_COUNT#
데이터 타입#
Unsigned Integer
기본값#
5
속성#
변경 가능, 단일 값
값의 범위#
[0, 232-1]
설명#
Eager 모드로 이중화를 진행할 때, 이중화 수신자가 데이터 복제를 재시도하는 횟수를 설정할 수 있는 프로퍼티이다.
만약 이 값이 5로 설정되었을 때, Xlog 복제에 오류가 발생하면 이중화 수신자는 최대 5회까지 복제를 재시도한다. 재시도에서도 성공하지 못하면 Altibase 서버를 강제로 종료한다. 이 값을 0으로 설정하면, 이중화 수신자가 Xlog 복제에 실패할 경우 성공할 때까지 복제를 재시도하며, 서버를 강제 종료하지 않는다.
Eager 모드의 이중화는 이중화 수신자와 송신자간의 데이터 일치가 중요한 환경에서 주로 사용된다. 따라서 사전에 데이터 불일치를 예방하기 위해 데이터 복제를 중단하고 서버를 종료하는 것이다.
Altibase 운영 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.
REPLICATION_FAILBACK_INCREMENTAL_SYNC#
데이터 타입#
Unsigned Integer
기본값#
1
속성#
읽기 전용, 단일 값
값의 범위#
[0, 1]
설명#
이 프로퍼티는 증분 동기화(Incremental Sync) 수행 여부를 설정한다. 증분 동기화란 EAGER 모드의 이중화 작업 중 한 쪽 서버의 장애로 인해 데이터 불일치가 발생한 경우, 이 후 장애 서버가 다시 구동되는 중에 서버가 불일치 데이터를 동기화하는 것을 말한다.
- 0: 증분 동기화를 비활성화시킨다.
- 1: 증분 동기화를 활성화시킨다.
이중화에 참가하는 양쪽 Altibase 서버 모두 이 프로퍼티를 같은 값으로 설정해야 한다. 증분 동기화 및 Eager 이중화 장애 복구에 대한 자세한 내용은 Replication Manual을 참고한다.
REPLICATION_GAP_UNIT (단위: 바이트)#
데이터 타입#
Unsigned Long
기본값#
1048576 (1MB)
속성#
변경 가능, 단일 값
값의 범위#
[1, 264-1]
설명#
이중화 갭의 크기를 조회하는 REP_GAP의 값을 표현하는 단위를 설정한다.
REP_GAP의 값은 REP_GAP_SIZE의 값을 이 프로퍼티로 나눈 결괏값이며, 나머지는 올림한다.
기본값이면 V$REPGAP의 REP_GAP_SIZE는 바이트 단위로, REP_GAP은 메가바이트 단위로 조회된다.
REPLICATION_GAPLESS_ALLOW_TIME (단위: 마이크로초)#
데이터 타입#
Unsigned Integer
기본값#
2000
속성#
변경 가능, 단일 값
값의 범위#
[0, 232-1]
설명#
갭 해소 옵션이 설정된 이중화 송신자는 이 프로퍼티에 설정한 시간만큼 이중화 격차(Replication Gap)를 허용한다. 이중화 송신자는 이 프로퍼티에 설정된 시간 안에 이중화 격차를 해소할 수 없다고 판단하면 서비스 트랜잭션의 커밋을 지연시키는 기능이 동작한다.
예를 들어 이 프로퍼티가 5이고, 송신자가 초당 처리하는 로그가 1,000건이라면 이중화 격차를 허용할 수 있는 로그의 개수는 5,000건이다. 만약 현재의 이중화 격차가 10,000건이라면, 허용하는 로그의 개수보다 5,000건을 초과하였으므로, 이중화 격차가 허용하는 로그 개수에 만족하기 위해서 트랜잭션이 5초간 지연되어야 한다는 것을 의미한다.
이 값이 0이면 이중화 격차를 허용하지 않는다는 의미이므로, 트랜잭션이 커밋되기 전에 이중화 격차를 해소시키고 커밋을 수행한다.
Altibase 운영 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.
REPLICATION_GAPLESS_MAX_WAIT_TIME (단위: 마이크로초)#
데이터 타입#
Unsigned Integer
기본값#
10,000,000
속성#
변경 가능, 단일 값
값의 범위#
[0, 232-1]
설명#
이중화 갭 해소(Gapless) 옵션이 설정된 이중화 송신자가 이중화 격차를 해소하기 위하여 트랜잭션 커밋을 지연시킬 수 있는 최대 시간을 의미한다.
이 값이 0이면 이중화 격차를 해소할 때까지 트랜잭션의 커밋을 지연시킨다.
Altibase 운영 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.
REPLICATION_GROUPING_AHEAD_READ_NEXT_LOG_FILE (단위: 개수)#
데이터 타입#
Unsigned Integer
기본값#
2
속성#
읽기 전용, 단일 값
값의 범위#
[1, 232-1]
설명#
선행 분석(Ahead Analyzer) 쓰레드가 분석을 시작할 때, 송신자(Sender)가 현재 읽는 로그 파일 번호보다 얼마나 큰 번호의 로그 파일을 읽을 것인지 설정한다.
Altibase 운영 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.
REPLICATION_GROUPING_TRANSACTION_MAX_COUNT (단위: 개수)#
데이터 타입#
Unsigned Integer
기본값#
5
속성#
읽기 전용, 단일 값
값의 범위#
[1, 1000]
설명#
Ahead Analyzer 쓰레드가 복수의 트랜잭션을 한 번에 최대 몇 개까지 그룹화하여 수신자에 전송할 것인지 정하는 프로퍼티이다.
Altibase 운영 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.
REPLICATION_HBT_DETECT_HIGHWATER_MARK#
데이터 타입#
Unsigned Integer
기본값#
5
속성#
변경 가능, 단일 값
값의 범위#
[0, 232-1]
설명#
연결(Connection) 응답을 하지 않는 경우 몇 회 이후에 장애로 판단할 것인지 결정한다. 따라서, 임의의 호스트의 장애를 판단하는 최대 시간은 REPLICATION_HBT_DETECT_TIME * REPLICATION_HBT_DETECT_HIGHWATER_MARK 이다.
즉, HeartBeat 쓰레드는 기본값인 30초 (5회 시도* 6초) 동안 연결이 되지 않을 경우 장애로 판단한다.
Altibase 운영 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.
REPLICATION_HBT_DETECT_TIME(단위: 초)#
데이터 타입#
Unsigned Integer
기본값#
6
속성#
변경 가능, 단일 값
값의 범위#
[0, 2592000]
설명#
HeartBeat 쓰레드1의 검사 주기를 설정한다. 기본값인 6초 마다 HeartBeat 쓰레드는 해당 호스트에 대한 장애를 검사한다.
Altibase 운영 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.
REPLICATION_IB_LATENCY#
데이터 타입#
Unsigned Integer
기본값#
0
속성#
읽기 전용, 단일 값
값의 범위#
[0, 1]
설명#
rsocket의 RDMA_LATENCY 옵션 값이다.
이 값이 1이면 CPU 자원을 소모하더라도, 적은 대기 시간을 사용한다.
REPLICATION_IB_PORT_NO#
데이터 타입#
Unsigned Integer
기본값#
0
속성#
읽기 전용, 단일 값
값의 범위#
[0, 65535]
설명#
이중화로 연결할 때 인피니밴드(InfiniBand)를 이용하여 접속할 경우 지역 서버의 이중화 포트 번호를 나타낸다.
인피니밴드를 이용하기 위해 IB_ENABLE 프로퍼티의 값이 1이어야 한다. 이 값이 0인 경우에는 인피니밴드로 이중화를 연결할 수 없다.
REPLICATION_INSERT_REPLACE#
데이터 타입#
Unsigned Integer
기본값#
0
속성#
변경 가능, 단일 값
값의 범위#
[0, 1]
설명#
이 프로퍼티는 이중화 중 INSERT 충돌이 발생했을 때 삽입된 내용을 유지할 지를 결정한다. 이 값이 0이면, INSERT는 커밋되지 않고 데이터 충돌은 에러 처리 된다. 반면에 이 값이 1이면 데이터 충돌은 무시되고 INSERT는 커밋된다.
Altibase 운영 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.
REPLICATION_KEEP_ALIVE_CNT#
데이터 타입#
Unsigned Integer
기본값#
600
속성#
읽기 전용, 단일 값
값의 범위#
[0, 232-1]
설명#
송신 쓰레드가 패킷을 전송하지 않고 (REPLICATION_SENDER_SLEEP_TIME * REPLICATION_KEEP_ALIVE_CNT) 시간 동안 Sleep하면, KEEP_ALIVE신호를 전송한다.
REPLICATION_LOCK_TIMEOUT (단위: 초)#
데이터 타입#
Unsigned Integer
기본값#
5
속성#
변경 가능, 단일 값
값의 범위#
[0, 3600]
설명#
이중화 데드락이 발생하는 경우 수신 쓰레드 쪽에서는 무한정 잠금을 기다리게 되어 서비스가 중단될 수 있다. 이러한 경우를 방지하기 위해 수신 쓰레드는 해당 작업의 수행에 대해 잠금을 요구할 때, 최대 이 프로퍼티에 설정된 시간만큼만 잠금을 획득하기 위해 기다린다.
명시된 시간 내에 잠금을 획득하지 못하는 경우 해당 작업은 철회된다.
REPLICATION_LOG_BUFFER_SIZE (단위: 메가바이트)#
데이터 타입#
Unsigned Integer
기본값#
0
속성#
읽기 전용, 단일 값
값의 범위#
[0, 212-1]
설명#
이중화 전용 로그 버퍼를 사용함으로써 이중화 성능을 개선하는 프로퍼티이다. 이중화 전용 로그 버퍼에는 이중화에 필요한 로그만 필터링하여 저장하기 때문에 더 많은 로그가 버퍼에 존재한다.
송신 쓰레드는 로그를 읽기 위해서 로그 버퍼 또는 디스크에서 로그를 읽는다. 그러나 디스크에서 로그를 읽는 경우 송신 쓰레드의 처리 속도가 현저히 떨어질 수 있다. 더욱이 이중화를 실행하면 필요하지 않은 로그까지 읽어야 하는 부담이 발생한다. 이중화 전용 로그 버퍼는 이러한 부담을 완화시켜준다.
다수의 이중화 송신 쓰레드가 수행중일 때는 이중화 성능과 서비스 성능이 저하될 수 있다. 이중화 로그 버퍼가 하나이므로 다수의 송신 쓰레드가 접근한다면 동기화 오버헤드가 발생할 확률이 높아지기 때문이다.
이중화 로그 버퍼에서 읽은 로그는 REPLICATION_SYNC_LOG 값을 1로 하여도 디스크에 기록되지 않은 상태에서 수신 쓰레드로 전송될 수 있다.
REPLICATION_LOG_BUFFER_SIZE를 너무 작게 설정하면, 사용하지 않는 것(0)보다 더 좋지 못한 성능을 낼 수 있다.
REPLICATION_MAX_COUNT (단위: 개수)#
데이터 타입#
Unsigned Integer
기본값#
32
속성#
읽기 전용, 단일 값
값의 범위#
[0, 10240]
설명#
Altibase에 생성할 수 있는 이중화 객체의 최대 개수를 지정한다.
기본값은 32이며, 한 서버에서 최대 32개의 원격 서버와 이중화로 연결할 수 있음을 의미한다.
REPLICATION_MAX_LISTEN#
데이터 타입#
Unsigned Integer
기본값#
32
속성#
읽기 전용, 단일 값
값의 범위#
[0, 512]
설명#
이중화 송신 쓰레드와 수신 쓰레드를 관리하는 Altibase 서버간의 통신 시 TCP/IP 소켓을 사용하는 경우 대기 큐(listen queue)의 크기를 지정하는 값이다.
REPLICATION_MAX_LOGFILE#
데이터 타입#
Unsigned Integer
기본값#
0
속성#
변경 가능, 단일 값
값의 범위#
[0, 65535]
설명#
이중화를 위하여 재시작 리두 시점(Restart Redo Point)을 기준으로 삭제하지 않을 최대 로그파일의 개수이다.
이중화 시작 후, 지역 서버와 원격 서버간의 네트워크 속도 등의 문제로 지역 서버의 변경내용이 아직 원격 서버에 반영되지 않았을 경우, 체크포인트가 발생해도 서버는 로그 파일을 삭제할 수 없다. 이러한 문제가 발생하면, 지역서버의 로그파일 개수가 계속 증가하게 되고 결국 디스크가 가득 차버릴 수 있다(Disk Full).
따라서 체크포인트가 발생하였을 때, 재시작 리두 시점 (Restart Redo Point) 이전 로그 파일들의 개수가 이 프로퍼티로 정해 놓은 값보다 클 경우 이중화는 잠시 중단되며, Altibase는 중단된 시점의 일시 (날짜, 시각)와 "재시작 SN"을 SYS_REPLICATION_ 메타 테이블의 GIVE_UP_TIME과 GIVE_UP_XSN 칼럼에 각각 저장한다. 그리고 재시작 리두 시점 이전 로그파일들을 삭제한다. 현재 로그파일의 마지막(가장 큰) SN값이 새로운 이중화 "재시작 SN" 이 되며, 이 값도 SYS_REPLICATION_ 메타 테이블의 XSN 칼럼에 저장된다. 이중화는 이 새로운 "재시작SN"부터 다시 수행될 것이다. 이런 디폴트 작업 방식을 변경하고 싶다면, REPLICATION_SENDER_START_AFTER_GIVING_UP 프로퍼티 값을 변경하면 된다. 또, SYS_REPLICATION_ 메타 테이블에서 특정 replication과 관련된 모든 정보들을 초기화하고 싶다면, "ALTER REPLICATION replication_name RESET" 을 실행해라.
0으로 설정한 경우에는 이 기능을 적용하지 않는다. 참고로 체크포인트를 수행할 때 로그파일을 지우기 때문에, CHECKPOINT_INTERVAL_IN_SEC와 CHECKPOINT_IN_LOG의 값을 함께 고려해야 한다.
REPLICATION_POOL_ELEMENT_COUNT(단위: 개수)#
데이터 타입#
Unsigned Integer
기본값#
10
속성#
변경 가능, 단일 값
값의 범위#
[1, 1024]
설명#
송신 쓰레드가 로그를 분석하여 칼럼 값을 복사할 때 사용하는 메모리의 개수이다. 이 때 메모리는 메모리 풀에서 미리 할당하며, 메모리 크기는 REPLICATION_POOL_ELEMENT_SIZE에서 지정한다.
Altibase 운영 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.
REPLICATION_POOL_ELEMENT_SIZE(단위: 바이트)#
데이터 타입#
Unsigned Integer
기본값#
256
속성#
변경 가능, 단일 값
값의 범위#
[128, 65536]
설명#
송신 쓰레드가 로그를 분석하여 각각의 칼럼 값을 복사할 때 사용하는 메모리의 크기이다.
Altibase 운영 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.
REPLICATION_PORT_NO#
데이터 타입#
Unsigned Integer
기본값#
0
속성#
읽기 전용, 단일 값
값의 범위#
[0, 65535]
설명#
이중화 연결을 할 때 지역 서버의 이중화 포트 번호이다. 이중화를 사용하지 않으려면 이 프로퍼티를 0으로 설정한다.
REPLICATION_PREFETCH_LOGFILE_COUNT#
데이터 타입#
Unsigned Integer
기본값#
3
속성#
변경 가능, 단일 값
값의 범위#
[0, 1024]
설명#
각각의 로그 파일 그룹에 대해서 미리 읽을 로그 파일의 수를 나타낸다. 로그 파일을 미리 읽어 둠으로써 송신 쓰레드가 파일에서 로그 레코드를 읽는 시간을 줄인다.
REPLICATION_RECEIVE_TIMEOUT(단위: 초)#
데이터 타입#
Unsigned Integer
기본값#
7200
속성#
변경 가능, 단일 값
값의 범위#
[0, 232-1]
설명#
송신 쓰레드와 수신 쓰레드에서 공통적으로 사용하는 프로퍼티로 송신/수신 쓰레드로부터 어떤 메시지를 기다리는 최대 시간을 지정하는 프로퍼티이다.
송신 쓰레드에서는 상대편 수신 쓰레드로부터 응답을 기다리는 최대 시간이며 명시된 시간이 경과하게 되면 REPLICATION_SENDER_SLEEP_TIMEOUT에서 지정된 시간만큼 sleep한 후 다시 상대편 수신 쓰레드와의 접속을 시도한다. 이 경우 기존 사용하던 소켓은 닫고 새로운 소켓을 생성하여 재연결을 시도한다.
수신 쓰레드에서는 상대편 송신 쓰레드로부터 어떤 메시지를 기다리는 최대 시간이다. 명시된 시간이 경과하게 되면 수신 쓰레드는 자동 종료되며 이후 상대편 송신 쓰레드가 어떤 메시지를 다시 보내게 되는 경우 다시 생성된다.
Altibase 운영 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.
REPLICATION_RECEIVER_APPLIER_ASSIGN_MODE#
데이터 타입#
Unsigned Integer
기본값#
0
속성#
변경 가능, 단일 값
값의 범위#
[0, 1]
설명#
이중화 수신자가 적용자(Applier)에게 XLog를 할당할 때 어떤 모드로 적용자에게 분배할 것인지를 선택하는 프로퍼티이다.
0: Transaction Count Mode
1: XLog Count Mode
이 값이 0이면 수신자는 할당된 트랜잭션이 가장 적은 적용자에게 XLog를 할당한다. 1인 경우에는 XLog 개수가 가장 적게 할당된 적용자에게 XLog를 할당한다.
Altibase 운영 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.
REPLICATION_RECEIVER_APPLIER_QUEUE_SIZE#
데이터 타입#
Unsigned Integer
기본값#
20
속성#
변경 가능, 단일 값
값의 범위#
[2, 232-1]
설명#
수신자가 적용자 쓰레드들의 대기 큐에 전달할 수 있는 최대 XLog의 개수이다.
이 값이 클수록 적용자(Applier)에 전달하는 XLog의 개수가 많아질 수 있으나, 대기 큐에 XLog 들이 쌓이므로 메모리를 보다 많이 사용하게 된다. 이 값은 적용자 숫자의 2배 가량으로 설정하는 것을 권고한다.
Altibase 운영 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.
REPLICATION_RECEIVER_APPLIER_YIELD_COUNT#
데이터 타입#
Unsigned Integer
기본값#
20000
속성#
변경 가능, 단일 값
값의 범위#
[0, 232-1]
설명#
Applier 가 다른 Applier 의 Transaction 반영 대기시 시스템 함수인 yield 를 이용하여 대기 하는 횟수.
yield 함수를 사용시 CPU 사용을 하기 때문에 이 횟수 이상 호출 이후에는 CPU 자원을 사용안하는 timed_wait 함수를 호출 한다.
REPLICATION_RECOVERY_MAX_LOGFILE#
데이터 타입#
Unsigned Integer
기본값#
0
속성#
변경 가능, 단일 값
값의 범위#
[0, 232-1]
설명#
이중화를 이용한 데이터 복구를 위하여 재시작 리두 시점(Restart Redo Point)을 기준으로 삭제하지 않을 최대 로그 파일의 개수를 의미한다.
이중화를 이용한 데이터 복구를 하기 위하여 원격 서버에서 디스크에 반영(flush)되지 않은 로그에 해당하는 지역 서버의 로그를 삭제하지 않고 유지한다. 이 때 체크포인트가 발생해도 로그 파일을 삭제할 수 없어 지역 서버의 로그파일 개수가 계속 증가하게 되면 결국 디스크 풀이 발생할 수 있다.
따라서 체크포인트가 발생하였을 때 복구 옵션을 위한 로그 파일 개수의 최대 값을 넘는 경우, 이중화를 이용한 복구를 포기하고, 로그 파일들을 삭제한다. 그리고 이중화를 다시 시작한다.
0으로 설정한 경우, 이 기능을 적용하지 않는다.
체크포인트를 수행할 때 로그 파일을 지우기 때문에, CHECKPOINT_INTERVAL_IN_SEC와 CHECKPOINT_IN_LOG의 값을 함께 고려해야 한다.
REPLICATION_RECOVERY_MAX_TIME (단위: 초)#
데이터 타입#
Unsigned Integer
기본값#
232-1
속성#
읽기 전용, 단일 값
값의 범위#
[0, 232-1]
설명#
이중화 모듈이 복구를 진행하는 중에 최대 시간이 지나면, 복구를 중단하고 지금까지 복구된 상태로 서비스를 진행할 수 있도록 한다.
이 값을 0으로 설정하는 경우, 이중화를 이용한 복구 과정을 진행하지 않는다.
Altibase는 이중화를 이용한 데이터 복구가 완료하기 전에 서비스 단계로 진행할 수 없어, 서비스 지연을 가져올 수 있다.
REPLICATION_SENDER_AUTO_START#
데이터 타입#
Unsigned Integer
기본값#
1
속성#
읽기 전용, 단일 값
값의 범위#
[0, 1]
설명#
Altibase가 서버 종료시 stop 시키지 않은 이중화 객체가 있었다면, 서버 재구동 시 이러한 이중화 객체들이 자동으로 시작되는 것이 기본 동작이다. 이 값을 0으로 설정하면, 서버 구동 시 이중화 객체가 자동으로 시작되는 것을 막을 수 있다.
REPLICATION_SENDER_COMPRESS_XLOG#
데이터 타입#
Unsigned Integer
기본값#
0
속성#
변경 가능, 단일 값
값의 범위#
[0, 1]
설명#
이 프로퍼티는 이중화를 위해 데이터가 네트워크 상에서 전송될 때, 전송하는 패킷의 압축 여부를 지정한다.
0: 전송할 데이터를 압축하지 않음
1: 전송할 데이터를 압축함
Altibase 운영 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.
REPLICATION_SENDER_ENCRYPT_XLOG#
데이터 타입#
Unsigned Integer
기본값#
0
속성#
변경 가능, 단일 값
값의 범위#
[0, 1]
설명#
이 프로퍼티는 이중화를 수행할 때 송신 쓰레드의 로그를 암호화하여 전송할 것인지 여부를 지정할 수 있다.
0: 전송 로그를 비암호화
1: 전송 로그를 암호화
REPLICATION_SENDER_IP#
데이터 타입#
String
기본값#
ANY
속성#
읽기 전용, 다중 값
값의 범위#
없음
설명#
이중화 송신자의 IP 주소를 설정하는 프로퍼티이다. 값으로 ANY나 IP 주소를 입력할 수 있다.
기본값 ANY는 이중화 객체를 생성하는 지역 서버의 모든 IP 주소가 이중화 통신에 사용될 수 있으며 OS에서 할당한 IP 주소가 송신자 IP 주소로 사용된다. IP 주소를 값으로 설정하면 원격 서버(수신자)와 통신할 때 설정한 IP 주소만 사용된다. REPLICATION_SENDER_IP = value를 추가하여 여러 개의 IP 주소를 설정할 수 있으며 순서대로 송신자 IP 주소로 사용된다. IP 주소는 IPv4, IPv6, IPv6 확장 주소 형태로 입력할 수 있다.
예:
REPLICATION_SENDER_IP = 10.0.0.1
REPLICATION_SENDER_IP = 0000:0000:0000:0000:0000:ffff:1400:0001
자세한 내용은 Replication Manual에서 송신자 IP 주소 설정 설명을 참고한다.
REPLICATION_SENDER_SEND_TIMEOUT (단위: 초)#
데이터 타입#
Unsigned Integer
기본값#
7200
속성#
변경 가능, 단일 값
값의 범위#
[0, 232-1]
설명#
송신 쓰레드가 원격 서버로 패킷을 전송할 때 대기하는 최대 시간을 지정하는 프로퍼티이다.
이 값은 REPLICATION_RECEIVE_TIMEOUT(기본값:7200초) 프로퍼티의 값과 동일한 값을 설정할 것을 권고한다. 이 값을 0으로 설정하면 송신 쓰레드가 블로킹 소켓(blocking socket)을 사용한다.
Altibase 운영 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.
REPLICATION_SENDER_SLEEP_TIME (단위: 마이크로초)#
데이터 타입#
Unsigned Integer
기본값#
10000
속성#
변경 가능, 단일 값
값의 범위#
[0, 232-1]
설명#
이 프로퍼티는 송신 쓰레드가 더 이상 읽을 로그가 없을 때, Sleep하는 시간을 지정한다. 특정 플랫폼에서는 짧은 시간의 Sleep이 무시되므로, 적당한 값을 지정해야 한다. REPLICATION_KEEP_ALIVE_CNT와 함께 KEEP_ALIVE를 전송하는 데 사용된다.
REPLICATION_SENDER_SLEEP_TIMEOUT(단위: 초)#
데이터 타입#
Unsigned Integer
기본값#
60
속성#
변경가능, 단일 값
값의 범위#
[0, 2592000]
설명#
이중화 송신 쓰레드가 오류 상황에서 sleep을 해야 할 때 얼마나 할 것인지를 결정한다.
Altibase 운영 중에 ALTER SYSTEM 구문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.
REPLICATION_SENDER_START_AFTER_GIVING_UP#
데이터 타입#
Unsigned Integer
기본값#
1
속성#
변경 가능, 단일 값
값의 범위#
[0, 1]
설명#
이 프로퍼티는 재시작 리두 시점 (Restart Redo Point) 이전 로그 파일들의 개수가 REPLICATION_MAX_LOGFILE 프로퍼티로 설정된 값을 초과하여 이중화가 잠시 중단된 이후, 다시 시작하는 방식을 결정한다.
0으로 설정된 경우에는, 이중화 "재시작 SN" (즉 SYS_REPLICATIONS_ 메타 테이블의 XSN 칼럼의 값)이 -1로 초기화되며, 이중화는 중지된다. 그리고, SYS_REPLICATIONS_ 메타 테이블의 IS_STARTED 칼럼의 값이 0으로 바뀐다.
1로 설정된 경우, 이중화 "재시작 SN" 값은 현재 로그 파일의 마지막 (가장 큰) SN으로 변경되고, 이중화는 이 "재시작 SN" 부터 다시 수행된다.
REPLICATION_SERVER_FAILBACK_MAX_TIME#
데이터 타입#
Unsigned Integer
기본값#
232-1
속성#
읽기 전용, 단일 값
값의 범위#
[0, 232-1]
설명#
EAGER 모드 이중화에서, 비정상 종료된 서버가 재구동 될 때, 다른 쪽(즉, 원격) 서버의 데이터와 동기화된 후에야 서비스가 재개된다. 이 때, 다른 서버의 로그를 비정상 종료했던 서버에 반영하는 과정이 이 프로퍼티에 설정된 시간(초)보다 오래 걸린다면, 비정상 종료했던 서버는 동기화가 완료되는 것을 포기하게 된다.
REPLICATION_SQL_APPLY_ENABLE#
데이터 타입#
Unsigned Integer
기본값#
0
속성#
변경 가능, 단일 값
값의 범위#
[0, 1]
설명#
Lazy 모드로 이중화 수행 과정에서 Active 서버와 Standby 서버의 이중화 테이블 메타 정보가 다른 경우, 아래의 조건에 따라 XLog가 SQL 문으로 변환되어 반영된다.
- 0: XLog를 이용하여 이중화가 동작한다. 이때, 메타 정보가 다르면 Handshaking 에러가 발생한다.
- 1: 아래의 조건에서 이중화를 수행하면, XLog가 SQL 문으로 변환이 되어 이중화 테이블에 반영한다.
- 칼럼 정보
데이터 타입이 다를 경우
size, precision, scale 이 다를 경우 - 제약 조건
check 제약 조건이 다를 경우
Not Null 제약 조건이 다를 경우
다른 메타 정보 중 LOB 칼럼이 포함된 경우 - 인덱스
유니크 인덱스나 Function-based 인덱스가 이중화 대상 칼럼과 이중화 대상이 아닌 칼럼으로 구성되어 있을 경우
유니크 인덱스의 구성 정보가 다를 경우
Function-based 인덱스의 구성 정보가 다를 경우
- 칼럼 정보
REPLICATION_SYNC_APPLY_METHOD#
데이터 타입#
Unsigned Integer
기본값#
0
속성#
변경 가능, 단일 값
값의 범위#
[0, 1]
설명#
이중화 수행 중에 지역 서버와 원격 서버간의 불일치한 데이터를 어떤 방식으로 동기화 할 것인지 설정한다.
- 0: Normal Insert
- 1: Direct-Path Insert
이중화 SYNC 과정에서 Direct-Path Insert 방식을 이용할 경우, 데이터 동기화 이후 Index를 재생성한다. 따라서, 이중화 SYNC 과정이 도중에 실패할 경우, Index inconsistent 가 발생할 수 있다.
Direct-Path Insert에 대한 자세한 설명은 Administrator's Manual을 참조하기 바란다. Altibase 운영 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.
REPLICATION_SYNC_LOCK_TIMEOUT (단위: 초)#
데이터 타입#
Unsigned Integer
기본값#
30
속성#
변경 가능, 단일 값
값의 범위#
[0, 232-1]
설명#
이중화 송신 쓰레드가 동기화 대상 테이블의 잠금(Lock)을 획득하기 위해 대기하는 시간을 정하는 프로퍼티이다. ALTER REPLICATION .. SYNC 구문으로 이중화 동기화를 실행하면, 이중화 송신 쓰레드는 데이터 동기화를 수행한 후 계속해서 이중화를 시작할 로그 위치를 결정한다. 이 때 동기화 대상 테이블이 다른 트랜잭션에 의해 데이터가 변경되지 않도록 송신 쓰레드는 공유 잠금(S Lock)을 획득한다. 그러나 이미 다른 트랜잭션에 의해 잠금이 되었다면, 이 프로퍼티에 지정한 시간만큼 대기한다.
예를 들어 이 프로퍼티의 값이 30인 경우, 30초 동안 잠금을 획득할 수 없으면 동기화 시도는 오류 처리된다. 만약 이 값을 0으로 설정하면 이중화 대상 테이블에 대한 잠금은 획득하지 않지만, 데이터의 충돌이 발생할 수 있다.
Altibase 운영 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.
REPLICATION_SYNC_LOG#
데이터 타입#
Unsigned Integer
기본값#
0
속성#
읽기 전용, 단일 값
값의 범위#
[0, 1]
설명#
이중화 수행 시 송신 쓰레드가 보내는 로그는 디스크에 내려갔는지의 여부에 관계없이 메모리 상의 로그를 보내기 때문에, 시스템 또는 매체 장애(media failure)와 같은 상황에서 데이터 불일치 등의 문제가 발생할 소지가 있다.
이러한 문제를 해결하기 위해서 이 값을 1로 설정하면, 송신 쓰레드는 디스크에 내려간 로그만 보내게 된다.
REPLICATION_SYNC_TUPLE_COUNT#
데이터 타입#
Unsigned long
기본값#
500000
속성#
변경 가능, 단일 값
값의 범위#
[0, 264-1]
설명#
병렬 동기화시 송신 쓰레드가 한번에 읽어서 처리할 수 있는 레코드의 최대 개수를 지정한다.
Altibase 운영 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.
REPLICATION_TIMESTAMP_RESOLUTION#
데이터 타입#
Unsigned Integer
기본값#
1
속성#
변경 가능, 단일 값
값의 범위#
[0, 1]
설명#
Active-Active 이중화 환경에서 데이터 충돌이 발생하였을 때 이 프로퍼티의 값에 따라 해결방식이 다르게 적용된다.
이 프로퍼티의 값이 1로 설정되고, 이중화 대상 테이블에 TIMESTAMP 칼럼이 있는 경우에 Timestamp-based Scheme 방식으로 충돌이 해결된다.
그러나 이중화 대상 테이블에 TIMESTAMP 칼럼이 있어도, 이 프로퍼티의 값이 0이면 이미 설정되어 있는 Conflict Resolution Scheme 방식이 사용된다.
데이터 충돌에 대한 자세한 설명은 Replication Manual을 참고한다.
Altibase 운영 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.
REPLICATION_TRANSACTION_POOL_SIZE#
데이터 타입#
Unsigned Integer
기본값#
2
속성#
변경 가능, 단일 값
값의 범위#
[0, 232-1]
설명#
이 프로퍼티는 트랜잭션 풀에 미리 생성해 두는 트랜잭션의 개수를 지정한다. 이중화 수신자는 데이터를 복제할 때 트랜잭션을 사용한다. 그리고 성능 향상을 위해 이중화 수신자 별로 트랜잭션 풀(pool)을 만들고, 이 곳에 트랜잭션들을 미리 생성해 두고 사용할 수 있다.
만약 풀에 존재하는 트랜잭션의 수가 부족하다면, 이중화 수신자는 새로운 트랜잭션을 생성하여 이를 사용할 것이다. 그리고 사용이 끝난 트랜잭션은 풀에 반환되는데, 이 때 존재하는 트랜잭션의 개수가 이 프로퍼티에 지정된 값보다 크면, 풀에 반환되지 않고 바로 해제된다.
이 값을 너무 크게 지정하면, 일반 트랜잭션의 개수에 제한을 줄 수 있으므로 적절한 값으로 설정해야 한다. 이 프로퍼티에 허용된 최댓값은 2³²-1이지만, 실제 최댓값은 TRANSACTION_TABLE_SIZE 프로퍼티에 지정한 값과 같다. 만약 사용자가 이 값을 TRANSACTION_TABLE_SIZE의 값보다 크게 지정하면, 내부적으로 이 프로퍼티의 값이 TRANSACTION_TABLE_SIZE의 값으로 설정된다.
Altibase 구동 중에 이 프로퍼티의 값을 변경할 수 있다. 하지만 이중화 수신 쓰레드 생성시 트랜잭션 풀이 초기화되므로, 이중화를 재시작해야 변경된 프로퍼티의 값이 적용된다.
Altibase 운영 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.
REPLICATION_UPDATE_REPLACE#
데이터 타입#
Unsigned Integer
기본값#
0
속성#
변경 가능, 단일 값
값의 범위#
[0, 1]
설명#
이중화 작업중 변경작업 충돌(update conflict) 시 변경된 내용의 반영을 결정한다. 값이 0 이면 충돌이 있을 경우 반영하지 않고 오류 처리하며, 1일 경우 충돌을 무시하고 반영한다.
Altibase 운영 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.
REPLICATION_META_ITEM_COUNT_DIFF_ENABLE#
데이터 타입#
Unsigned Integer
기본값#
0
속성#
변경 가능, 단일 값
값의 범위#
[0, 1]
설명#
Lazy 모드로 이중화 수행 과정에서 SPLIT PARTITION과 MERGE PARTITION, DROP PARTITION을 수행하여 Active 서버와 Standby 서버의 이중화 테이블 파티션 메타 아이템 개수가 다른 경우에 이중화를 START 할 수 있는 프로퍼티이다. 이 값을 1로 설정하면 이중화 테이블 파티션 메타 아이템 개수가 다른 경우에도 이중화를 START 할 수 있다.
Altibase 운영 중 ALTER SYSTEM 문을 이용하여 이 프로퍼티의 값을 변경할 수 있다.
-
HeartBeat 쓰레드: Altibase의 리플리케이션은 송신 쓰레드와 수신 쓰레드 간에 데이터 통신 수행 시 물리적인 장애가 발생했을 때, 신속하게 장애를 검출하기 위하여 HeartBeat 쓰레드를 만들어서 상대 호스트의 상태를 주기적으로 검사하는 기법을 도입했다. ↩