안녕하세요. IBM Informix 12.10.xC10 버전부터 기본(Primary)/미러(Mirror) 청크(Chunk)를 교체하는 기능이 생겨 테스트를 해봤습니다.
제가 미러 청크를 만든 방법과 교체한 내용을 소개해 드리겠습니다.
1. onCONFIG 옵션 변경
미러 청크를 사용하려면 onCONFIG의 MIRROR 옵션을 1로 변경해야 합니다.
그리고 처음 미러 청크를 만드는 경우라면 MIRRORPATH는 공란으로 두어야 합니다.
MIRRORPATH는 root dbspace에 대한 청크 경로이므로 공란으로 두지 않으면 Informix 인스턴스가 시작되지 않습니다.
2. 기존의 청크에 미러 청크 생성하기
미러 청크를 생성하는 것은 onspaces 명령이나 sysadmin api를 통해 가능한데 여기서는 onspaces 명령으로 해보겠습니다.
먼저 기본 청크 경로를 확인합니다.
$ onstat -d
IBM Informix Dynamic Server Version 12.10.FC12W1WE -- on-Line -- Up 00:01:25 -- 227552 Kbytes
Dbspaces
address number flags fchunk nchunks pgsize flags owner name
700000020476028 1 0x4000001 1 2 4096 N BA informix rootdbs
7000000205abbe0 2 0x5000001 2 1 4096 N PBA informix plog
700000020476dc8 3 0x4000001 3 1 4096 N BA informix llog
700000020477bf0 4 0x4000001 4 1 4096 N BA informix datadbs1
70000002058f850 5 0x4000001 5 1 4096 N BA informix datadbs2
70000002058fa90 6 0x4000001 6 1 4096 N BA informix datadbs3
70000002058fcd0 7 0x4000001 7 1 8192 N BA informix data8dbs1
700000022733028 8 0x4000001 8 1 8192 N BA informix data8dbs2
700000022733268 9 0x4000001 9 1 8192 N BA informix data8dbs3
7000000227334a8 10 0x2001 10 1 8192 N TBA informix tmpdbspace
7000000227336e8 11 0x4008001 11 1 4096 N SBA informix sbspace1
700000022733928 12 0xa001 12 1 4096 N UBA informix tmpsbspace
12 active, 2047 maximum
Chunks
address chunk/dbs offset size free bpages flags pathname
700000020476268 1 1 0 38912 5453 PO-B-D /opt/IBM/informix/storage/rootdbs
700000022735028 2 2 0 16384 0 PO-BED /opt/IBM/informix/storage/ol_informix1210_4_plog_p_1
700000022736028 3 3 0 151426 1373 PO-BED /opt/IBM/informix/storage/ol_informix1210_4_llog_p_1
700000022737028 4 4 0 16384 15145 PO-BED /opt/IBM/informix/storage/ol_informix1210_4_datadbs1_p_1
700000022738028 5 5 0 16384 16331 PO-BED /opt/IBM/informix/storage/ol_informix1210_4_datadbs2_p_1
700000022739028 6 6 0 16384 16331 PO-BED /opt/IBM/informix/storage/ol_informix1210_4_datadbs3_p_1
70000002273a028 7 7 0 8192 8139 PO-BED /opt/IBM/informix/storage/ol_informix1210_4_data8dbs1_p_1
70000002273b028 8 8 0 8192 8139 PO-BED /opt/IBM/informix/storage/ol_informix1210_4_data8dbs2_p_1
70000002273c028 9 9 0 8192 8139 PO-BED /opt/IBM/informix/storage/ol_informix1210_4_data8dbs3_p_1
70000002273d028 10 10 0 9216 9163 PO-BE- /opt/IBM/informix/storage/ol_informix1210_4_tmpdbspace_p_1
70000002273e028 11 11 0 16384 11822 11879 POSB-D /opt/IBM/informix/storage/ol_informix1210_4_sbspace1_p_1
Metadata 868 4138 868
70000002273f028 12 12 0 16384 11879 11879 POSB-- /opt/IBM/informix/storage/ol_informix1210_4_tmpsbspace_p_1
Metadata 868 4138 868
700000022734028 13 1 0 16384 11097 PO-BED /opt/IBM/informix/storage/ol_informix1210_4_rootdbs_p_1
13 active, 32766 maximum
NOTE: The values in the "size" and "free" columns for DBspace chunks are
displayed in terms of "pgsize" of the DBspace to which they belong.
Expanded chunk capacity mode: always
여기 예에서는 datadbs1 dbspace의 청크에 미러 청크를 생성해보겠습니다.
$ onspaces -m datadbs1 -p /opt/IBM/informix/storage/ol_informix1210_4_datadbs1_p_1 -o 0 -m /opt/IBM/informix/storage/ol_informix1210_4_datadbs1_p_1_mirror 0
WARNING: Turning mirror on for 'datadbs1'.
Do you really want to continue? (y/n)y
Verifying physical disk space, please wait ...
The Space "datadbs1" is now mirrored.
명령을 실행하면 미러 청크를 만들것인지 확인하는 메시지가 나옵니다.
여기서 'y' 를 입력하고 엔터를 누르면 미러 청크가 생성됩니다.
3. 생성한 미러 청크 확인
onstat -d 명령으로 미러 청크가 생성되었는지 확인합니다.
미러 청크의 경우 flags 값의 맨 처음 값이 M으로 표시됩니다.
$ onstat -d
...
Chunks
address chunk/dbs offset size free bpages flags pathname
700000020476268 1 1 0 38912 5453 PO-B-D /opt/IBM/informix/storage/rootdbs
700000022735028 2 2 0 16384 0 PO-BED /opt/IBM/informix/storage/ol_informix1210_4_plog_p_1
700000022736028 3 3 0 151426 1373 PO-BED /opt/IBM/informix/storage/ol_informix1210_4_llog_p_1
700000022737028 4 4 0 16384 15145 PO-B-D /opt/IBM/informix/storage/ol_informix1210_4_datadbs1_p_1
700000022e2e028 4 4 0 16384 0 MO-B-D /opt/IBM/informix/storage/ol_informix1210_4_datadbs1_p_1_mirror
onstat -m 명령으로 로그 메시지를 확인해보면 아래와 같이 나옵니다.
$ onstat -m
IBM Informix Dynamic Server Version 12.10.FC12W1WE -- on-Line -- Up 00:03:19 -- 227552 Kbytes
Message Log File: /opt/IBM/informix/ol_informix1210_4.log
11:33:05 Checkpoint Statistics - Avg. Txn Block Time 0.000, # Txns blocked 0, Plog used 18, Llog used 2
11:33:06 Checkpoint Completed: duration was 0 seconds.
11:33:06 Thu Apr 11 - loguniq 808, logpos 0x3b94050, timestamp: 0x69dc6db Interval: 284
11:33:06 Maximum server connections 0
11:33:06 Checkpoint Statistics - Avg. Txn Block Time 0.000, # Txns blocked 1, Plog used 0, Llog used 3
11:33:06 The Space "datadbs1" is now mirrored.
11:33:06 Space 'datadbs1' -- Recovery Begins(700000020552ec8)
11:33:06 Chunk Number 4 - '/opt/IBM/informix/storage/ol_informix1210_4_datadbs1_p_1_mirror' -- Recovery Begins(700000020552ec8)
11:33:23 Chunk Number 4 - '/opt/IBM/informix/storage/ol_informix1210_4_datadbs1_p_1_mirror' -- online
11:33:23 Checkpoint Completed: duration was 0 seconds.
11:33:23 Thu Apr 11 - loguniq 808, logpos 0x3b97018, timestamp: 0x69dc6e8 Interval: 285
11:33:23 Maximum server connections 0
11:33:23 Checkpoint Statistics - Avg. Txn Block Time 0.000, # Txns blocked 0, Plog used 0, Llog used 3
11:33:23 Space 'datadbs1' -- Recovery Complete(700000020552ec8)
Recovery Complete 메시지가 보이는 순간부터 미러링(Mirroring)이 시작됩니다.
4. 기본 청크와 미러 청크 교체하기
기본 청크와 미러 청크를 교체하려면 sysadmin의 task function의 swap_mirror 명령을 사용합니다.
$ dbaccess sysadmin -
Database selected.
> execute function task('modify chunk swap_mirror',4);
(expression) Primary/mirror swap for chunk 4 succeeded.
1 row(s) retrieved.
5. 기본 청크와 미러 청크가 교체되었는지 확인
onstat -d 명령으로 기본 청크와 미러 청크가 교체되었는지 확인합니다.
$ onstat -d
...
Chunks
address chunk/dbs offset size free bpages flags pathname
700000020476268 1 1 0 38912 5453 PO-B-D /opt/IBM/informix/storage/rootdbs
700000022735028 2 2 0 16384 0 PO-BED /opt/IBM/informix/storage/ol_informix1210_4_plog_p_1
700000022736028 3 3 0 151426 1373 PO-BED /opt/IBM/informix/storage/ol_informix1210_4_llog_p_1
700000022737028 4 4 0 16384 15145 PO-B-D /opt/IBM/informix/storage/ol_informix1210_4_datadbs1_p_1_mirror
700000022e2e028 4 4 0 16384 0 MO-B-D /opt/IBM/informix/storage/ol_informix1210_4_datadbs1_p_1
onstat -m 명령으로 로그 메시지를 확인해보면 아래와 같이 나옵니다.
$ onstat -m
...
11:36:36 Primary/mirror swap for chunk 4 succeeded.
11:36:36 Checkpoint Completed: duration was 1 seconds.
11:36:36 Thu Apr 11 - loguniq 808, logpos 0x3b9a07c, timestamp: 0x69dc70c Interval: 286
11:36:36 Maximum server connections 1
11:36:36 Checkpoint Statistics - Avg. Txn Block Time 0.000, # Txns blocked 0, Plog used 6, Llog used 3
미러링은 일반적으로 디스크 오류가 발생했을 때 데이터베이스 서버를 온라인에서 복구하기 위한 기능이지만,
swap_mirror 명령이 추가됨으로써 인스턴스가 온라인인 상태에서 파일을 교체할 수 있어, 스토리지 위치를 변경할 때 유용하게 사용할 수 있을 것 같습니다.
'Informix > informix reference' 카테고리의 다른 글
How to enable JDBC tracing starting with JDBC version 3.0.x (0) | 2019.05.19 |
---|---|
Onbar에서 사용되는 XBSA API 설명 (0) | 2019.05.19 |
UNIQUE 제약조건과 UNIQUE 인덱스의 차이 (0) | 2019.02.21 |
인포믹스 14.10 버전의 새로운 기능 정리 (0) | 2019.02.08 |
sysadmin 데이터베이스 초기화하기 (0) | 2019.01.24 |