티스토리 뷰

informix

Primary/Mirror Chunk 교체하기

pajama 2019. 5. 19. 17:48
반응형

안녕하세요. 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 명령이 추가됨으로써 인스턴스가 온라인인 상태에서 파일을 교체할 수 있어, 스토리지 위치를 변경할 때 유용하게 사용할 수 있을 것 같습니다.

 

반응형
댓글