Background Image

FORUM

조회 수 22281 추천 수 0 댓글 9
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

안녕하세요.

 

CUBRID 2008 R2.2를 HA 구성하여 사용하고 있습니다.

Broker 에서 RW 브로커와 RO 브로커를 분리하여 사용하고 있습니다.

데이터베이스는 Master와 Slave로 동작하는 DB1, DB2가 있습니다.

 

웹에서 RO 브로커를 연결하여 SELECT 시 결과 값이 다르게 나타나는 현상이 있습니다.

 

DB1(Master) - 큐브리드 매니저로 연결하여 SELECT 한 결과 값

DB2(Slave) - 큐브리드 매니저로 연결하여 SELECT 한 결과 값

RW 브로커(Master 연결) - PHP 페이지를 이용하여 SELECT 한 결과 값

 

위의 값은 모두 동일하게 보이며,

RO 브로커(Slave 연결) - PHP 페이지를 이용하여 SELECT 한 결과 값

은 목록이 2개 정도 적게 나타나며,

특정 필드 값이 데이터베이스에 있는 값과 다르게 나타납니다. (많거나 적거나)

 

데이터베이스에는 동일하게 값이 있는데 다르게 나타나는 이유를 모르겠습니다.

 

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

 

RO 브로커 연결시 나오는 값이 항상 다른 것은 아니고

같은 값이 나오거나 다른 값이 나오는 현상이 나타납니다.

 

  • ?
    손승일 2012.02.28 02:04
    메일로 보내 주신 소스를 확인해보니 slave broker를 통해 master에 접속하고 있었습니다.

    HA가 구성된 상태에서 dbsl.php와 같이 slave에 있는 broker에 접속해서 DB에 접속하더라도 slave에 있는 broker RO 또는 SO가 아닌 이상 master DB에 접속합니다.

    따라서 slave DB에 데이터를 확인하려면 telnet으로 접속하여 csql을 통해 확인해야 합니다.

    방법은

    -       slave 장비에 CUBRID 설치한 계정으로 접속한 후

    -       csql -u mynews p xxxxxxxxxxxx newdaily4@localhost 실행하시고 Csql> 가 떨어지면

    -       Sql 구문을 입력하고 끝에 ; (쎄미콜론)을 입력하면 결과가 나옵니다.

    현재 추측하건대 복제 불일치가 발생하고 있는 것 같습니다.

    HA 재 구성 작업이 필요해 보입니다.

  • ?
    샤롱스판 2012.02.29 00:42

    http://www.cubrid.org/manual/ko/8.4.4/ha.html#cubrid-applyinfo

    매뉴얼>예제를 참고하시어(-a, -L옵션을 반드시 주셔야함) fail count가 있는지 확인 부탁 드립니다. fail count>0이어야 DB생성 이후에 슬레이브에 반영되지 않은 데이터가 존재한다는 의미입니다(복제 불일치). fail count=0이라는 DB는 동일하다고 보시면 되겠습니다.

  • ?
    샤롱스판 2012.02.29 00:55

    요말씀이 특히 걸립니다. -->  

    RO 브로커 연결시 나오는 값이 항상 다른 것은 아니고, 같은 값이 나오거나 다른 값이 나오는 현상이 나타납니다.

    RO브로커를 통해서는 Slave DB에만 접속을 하는데, 동일 쿼리에 대해서 값이 같을 때도 있고 다를 때도 있다는 것은.. DB 불일치 문제가 아니라 인덱스 등 다른 문제일 수도 있다는 생각이 듭니다. 일단, cubrid applyinfo 정보를 알려주셔요~

  • ?
    freemir 2012.03.02 19:47

    해당 정보 올려드립니다.

     

    $ cubrid applyinfo -L /home/cubrid/cubrid822/databases/DBNAME_db-master -r db-master -a DBNAME

     *** Applied Info. ***
    Committed page                 : 2550649 | 0
    Insert count                   : 17836
    Update count                   : 1786284
    Delete count                   : 2936
    Schema count                   : 0
    Commit count                   : 567271
    Fail count                     : 0

     *** Copied Active Info. ***
    DB name                        : DBNAME
    DB creation time               : 12:43:56.000 AM 02/08/2012  (1328629436)
    EOF LSA                        : 2551209 | 984
    Append LSA                     : 2551209 | 984
    HA server state                : active

     ***  Active Info. ***
    DB name                        : DBNAME
    DB creation time               : 12:43:56.000 AM 02/08/2012  (1328629436)
    EOF LSA                        : 2551209 | 984
    Append LSA                     : 2551449 | 1608
    HA server state                : active

     


    $ cubrid applyinfo -L /home/cubrid/cubrid822/databases/DBNAME_db-slave -r db-slave -a DBNAME

     *** Applied Info. ***
    Committed page                 : 1753666 | 1432
    Insert count                   : 30
    Update count                   : 233
    Delete count                   : 24
    Schema count                   : 0
    Commit count                   : 193
    Fail count                     : 0

     *** Copied Active Info. ***
    DB name                        : DBNAME
    DB creation time               : 04:11:34.000 AM 02/09/2012  (1328728294)
    EOF LSA                        : 1755143 | 2896
    Append LSA                     : 1755143 | 2896
    HA server state                : standby

     ***  Active Info. ***
    DB name                        : DBNAME
    DB creation time               : 04:11:34.000 AM 02/09/2012  (1328728294)
    EOF LSA                        : 1755143 | 2896
    Append LSA                     : 1755143 | 2896
    HA server state                : standby

  • ?
    샤롱스판 2012.03.02 21:25

    흠 일단, fail count는 DB생성 이후 누적하여 복제 실패 카운트 값을 가지고 있는데, 0인 것을 보니 복제 불일치는 아닌 것으로 보입니다. 아래 사항을 추가 확인 부탁 드리겠습니다.

    1) cubrid heartbeat status 명령어( http://www.cubrid.org/manual/ko/8.4.4/ha.html#cubrid-heartbeat )를 통해 applylogdb 프로세스가 정상 실행 중인지 확인하여 주세요.

    2)  applylogdb 프로세스가 생성한 로그파일을 확인하여 주세요. $CUBRID/log/db-name@local-node-name_applylogdb_db-name_remote-node-name.err 파일입니다. http://www.cubrid.org/manual/ko/8.4.4/ha.html#ha-error 참고

    3) 혹시 다른 트랜잭션이 commit없이 점유하고 있는 것은 아닌지 확인하여 주세요. cubrid killtran으로 해당 트랜잭션을 죽일 수 있습니다. applylogdb는 커밋없이는 후행 로그들을 슬레이브에 반영하지 않습니다. 현재 올려주신 상태 스냅샷을 보면, applylogdb가 반영해야할 로그가 600페이지(2551209-2550649)정도 있는데, 이게 스냅샷 순간 롱트랜잭션으로 인해 반영 속도가 느린 것인지, 커밋을 못만나서 쌓아두고 있는지 확인이 필요합니다. http://www.cubrid.org/manual/ko/8.4.4/admin/admin_utils.html#killtran

    4) 응용 패턴이 어떤지 모르겠는데, 인서트나 업데이트가 많고 트랜잭션이 길다면, 저정도 반영 지연은 일어날 수 있습니다. 이 명령어는 그 순간의 상태만 보여주므로 수분 동안 보시면서, applylogdb가 로그를 반영하고 있는지 상태 모니터링이 필요합니다.

    *** Applied Info. ***
    Committed page : 2550649 | 0 -->여기의 페이지id인 2550649가 아래 copied active info>EOF LSA>2551209를 따라가야 합니다.

    *** Copied Active Info. ***
    DB name : DBNAME
    DB creation time : 12:43:56.000 AM 02/08/2012 (1328629436)
    EOF LSA : 2551209 | 984

  • ?
    freemir 2012.03.03 02:56
    1. 상태
    [master]
    $ cubrid heartbeat status 
    @ cubrid heartbeat list

     HA-Node Info (current db-master, state master)
       Node db-slave (priority 2, state slave)
       Node db-master (priority 1, state master)

     HA-Process Info (master 9105, state master)
       Server DBNAME (pid 10251, state registered_and_active)
       Applylogdb DBNAME@localhost:/home/cubrid/cubrid822/databases/DBNAME_db-slave (pid 10392, state registered)
       Copylogdb DBNAME@db-slave:/home/cubrid/cubrid822/databases/DBNAME_db-slave (pid 10354, state registered)


    [slave]
    $ cubrid heartbeat status 
    @ cubrid heartbeat list

     HA-Node Info (current db-slave, state slave)
       Node db-slave (priority 2, state slave)
       Node db-master (priority 1, state master)

     HA-Process Info (master 1225, state slave)
       Server DBNAME (pid 2465, state registered)
       Applylogdb DBNAME@localhost:/home/cubrid/cubrid822/databases/DBNAME_db-master (pid 2652, state registered)
       Copylogdb DBNAME@db-master:/home/cubrid/cubrid822/databases/DBNAME_db-master (pid 2625, state registered)


    2. 에러 로그
    master 쪽은 에러가 없으며 slave 쪽에 다음 로그가 있습니다.

    Time: 02/19/12 21:18:09.173 - ERROR *** ERROR CODE = -1030, Tran = 1, EID = 32
    log applier: invalid replication record. LSA: 1414716|3104, forw LSA: -1|-1, backw LSA: 1414716|3064, Trid: 1145988, prev tran LSA: -1|-1, type: 43.

    Time: 02/19/12 21:18:09.173 - ERROR *** ERROR CODE = -1030, Tran = 1, EID = 33
    log applier: invalid replication record. LSA: 1414716|3104, forw LSA: -1|-1, backw LSA: 1414716|3064, Trid: 1145988, prev tran LSA: -1|-1, type: 43.

    Time: 02/20/12 17:42:09.325 - ERROR *** ERROR CODE = -1029, Tran = 1, EID = 34
    log applier: invalid replication log page/offset. page HDR: 1497803|-1, final: 1497803|8, append LSA: 1497804|168, EOF LSA: 1497804|168, ha file status: 2, is end-of-log: 0.

    Time: 02/22/12 18:01:41.853 - ERROR *** ERROR CODE = -1030, Tran = 1, EID = 35
    log applier: invalid replication record. LSA: 1719655|3960, forw LSA: -1|-1, backw LSA: 1719655|3824, Trid: 1408863, prev tran LSA: 1719655|3824, type: 2.

    Time: 02/22/12 18:01:41.853 - ERROR *** ERROR CODE = -1030, Tran = 1, EID = 36
    log applier: invalid replication record. LSA: 1719655|3960, forw LSA: -1|-1, backw LSA: 1719655|3824, Trid: 1408863, prev tran LSA: 1719655|3824, type: 2.

    Time: 02/24/12 09:19:04.382 - ERROR *** ERROR CODE = -1030, Tran = 1, EID = 37
    log applier: invalid replication record. LSA: 1869625|3376, forw LSA: -1|-1, backw LSA: 1869625|3336, Trid: 1546097, prev tran LSA: -1|-1, type: 43.

    Time: 02/25/12 14:18:07.634 - ERROR *** ERROR CODE = -1030, Tran = 1, EID = 38
    log applier: invalid replication record. LSA: 1984602|3888, forw LSA: -1|-1, backw LSA: 1984602|3848, Trid: 1658242, prev tran LSA: -1|-1, type: 43.

    Time: 02/25/12 14:18:07.634 - ERROR *** ERROR CODE = -1030, Tran = 1, EID = 39
    log applier: invalid replication record. LSA: 1984602|3888, forw LSA: -1|-1, backw LSA: 1984602|3848, Trid: 1658242, prev tran LSA: -1|-1, type: 43.

    Time: 02/28/12 22:30:10.128 - ERROR *** ERROR CODE = -1030, Tran = 1, EID = 40
    log applier: invalid replication record. LSA: 2319535|3848, forw LSA: -1|-1, backw LSA: 2319535|3808, Trid: 1925722, prev tran LSA: -1|-1, type: 43.

    Time: 02/28/12 22:30:10.131 - ERROR *** ERROR CODE = -1030, Tran = 1, EID = 41
    log applier: invalid replication record. LSA: 2319535|3848, forw LSA: -1|-1, backw LSA: 2319535|3808, Trid: 1925722, prev tran LSA: -1|-1, type: 43.

    Time: 02/29/12 00:12:39.781 - ERROR *** ERROR CODE = -1030, Tran = 1, EID = 42
    log applier: invalid replication record. LSA: 2324534|3992, forw LSA: -1|-1, backw LSA: 2324534|3856, Trid: 1931190, prev tran LSA: 2324534|3856, type: 2.

    Time: 02/29/12 00:12:39.781 - ERROR *** ERROR CODE = -1030, Tran = 1, EID = 43
    log applier: invalid replication record. LSA: 2324534|3992, forw LSA: -1|-1, backw LSA: 2324534|3856, Trid: 1931190, prev tran LSA: 2324534|3856, type: 2.

    Time: 02/29/12 14:27:24.837 - ERROR *** ERROR CODE = -1029, Tran = 1, EID = 44
    log applier: invalid replication log page/offset. page HDR: 2392957|-1, final: 2392957|8, append LSA: 2392962|3096, EOF LSA: 2392962|3096, ha file status: 2, is end-of-log: 0.

    Time: 02/29/12 18:10:08.471 - ERROR *** ERROR CODE = -1029, Tran = 1, EID = 45
    log applier: invalid replication log page/offset. page HDR: 2411928|-1, final: 2411928|8, append LSA: 2411929|624, EOF LSA: 2411929|624, ha file status: 2, is end-of-log: 0.

    Time: 02/29/12 23:27:10.442 - ERROR *** ERROR CODE = -1029, Tran = 1, EID = 46
    log applier: invalid replication log page/offset. page HDR: 2430541|-1, final: 2430541|8, append LSA: 2430542|184, EOF LSA: 2430542|184, ha file status: 2, is end-of-log: 0.

    Time: 03/02/12 00:29:09.738 - ERROR *** ERROR CODE = -1030, Tran = 1, EID = 47
    log applier: invalid replication record. LSA: 2519495|4000, forw LSA: -1|-1, backw LSA: 2519495|3864, Trid: 2093669, prev tran LSA: 2519495|3864, type: 2.

    Time: 03/02/12 00:29:09.738 - ERROR *** ERROR CODE = -1030, Tran = 1, EID = 48
    log applier: invalid replication record. LSA: 2519495|4000, forw LSA: -1|-1, backw LSA: 2519495|3864, Trid: 2093669, prev tran LSA: 2519495|3864, type: 2.

    Time: 03/02/12 02:31:03.905 - ERROR *** ERROR CODE = -1029, Tran = 1, EID = 49
    log applier: invalid replication log page/offset. page HDR: 2524282|-1, final: 2524282|8, append LSA: 2524283|296, EOF LSA: 2524283|296, ha file status: 2, is end-of-log: 0.

    *** The previous error message is the last one. ***



    3. applyinfo 관련

    현재는 적용이 된 상태로 보입니다.

    $  cubrid applyinfo -L /home/cubrid/cubrid822/databases/DBNAME_db-slave -r db-slave -a DBNAME

     *** Applied Info. *** 
    Committed page                 : 1763690 | 408
    Insert count                   : 30
    Update count                   : 233
    Delete count                   : 24
    Schema count                   : 0
    Commit count                   : 194
    Fail count                     : 0

     *** Copied Active Info. *** 
    DB name                        : DBNAME
    DB creation time               : 04:11:34.000 AM 02/09/2012  (1328728294)
    EOF LSA                        : 1772554 | 2344
    Append LSA                     : 1772554 | 2344
    HA server state                : standby

     ***  Active Info. *** 
    DB name                        : DBNAME
    DB creation time               : 04:11:34.000 AM 02/09/2012  (1328728294)
    EOF LSA                        : 1772554 | 2344
    Append LSA                     : 1772554 | 2344
    HA server state                : standby


    $ cubrid applyinfo -L /home/cubrid/cubrid822/databases/DBNAME_db-master -r db-master -a DBNAME

     *** Applied Info. *** 
    Committed page                 : 2594706 | 1752
    Insert count                   : 18402
    Update count                   : 1813139
    Delete count                   : 3049
    Schema count                   : 0
    Commit count                   : 574494
    Fail count                     : 0

     *** Copied Active Info. *** 
    DB name                        : DBNAME
    DB creation time               : 12:43:56.000 AM 02/08/2012  (1328629436)
    EOF LSA                        : 2594706 | 1824
    Append LSA                     : 2594706 | 1824
    HA server state                : active

     ***  Active Info. *** 
    DB name                        : DBNAME
    DB creation time               : 12:43:56.000 AM 02/08/2012  (1328629436)
    EOF LSA                        : 2594706 | 1824
    Append LSA                     : 2594706 | 1824
    HA server state                : active


    기존에 slave 재설치 시 master unloaddb -> slave loaddb 로 복구한 것이 문제가 될 수도 있을 것 같습니다.

  • ?
    샤롱스판 2012.03.03 04:51

    1. 슬레이브에서 복제를 재구축할 때 마스터DB를 unload ->슬레이브 load하는 것은 절대 권장하지 않습니다. 저희가 로그기반으로 복제하기 때문에, 문제가 될 수 있기 때문입니다. CUBRD 8.4.0부터는 복제 재구축을 간단하게 할 수 있는 스크립트를 별도 제공하고 있으니, 현재 서비스에 문제가 되지 않는다면 8.4.0이상으로 업그레이드를 권장합니다.


    2. 현재 슬레이브에서 SELECT Count가 적거나 동일한 현상이 일어나는 이유:

    복제 지연으로 인해 그런 것 같습니다. 아까 스냅샷에서도 보았지만, 그 순간 복제 지연이 발생하면 슬레이브에 데이터가 미반영될 수 있고, 그 순간 SELECT를 하면 카운트가 적을 수 있습니다. 복제 지연을 최소화하기 위해서는 롱트랜잭션을 작은 단위로 끊어줄 필요가 있겠습니다.

     

    3. 서비스 패턴을 저희가 잘 모르는데, 인서트/업데이트가 얼마나 많은지, 커밋주기(레코드 몇건마다 커밋하는지)를 알 수 있을까요?

     

    4. 로그를 살펴보니, 워닝수준의 에러라서 큰 문제는 없는 것으로 보입니다.

     

  • ?
    freemir 2012.03.09 20:52

    1. 8.2.2도 해당 스크립트가 있는 것으로 보이는데, 8.2.2에서는 사용을 권장하지 않으신지 궁금합니다.


    2. 복제 지연과 관계없이 해당 부분이 발생하는 것으로 보입니다.

     - 외부 접속을 제한하고 확인 시에도 동일합니다.


    3. 지속적으로 인서트/업데이트가 발생합니다. 작성,수정 등의 동작 발생시마다 커밋되고 있습니다.

  • ?
    샤롱스판 2012.03.10 00:47

    답변 드립니다.

    1. cubrid_rel 명령어를 통해 현재 운영 중인 cubrid 버전 확인 부탁 드립니다. cubrid patch9이상( 8.2.2.9002 이상) 버전인 경우에는 최신 복제재구축 스크립트 파일이 있고, 이것을 사용하시면 되겠습니다. 

    2.3 복제 지연과 관계없다면, 마스터->슬레이브로 unload/load했을 당시 의도치않게 불일치가 발생하여 그것이 지속된 상태로 추측할 수 있겠습니다. 슬레이브 재구축이 필요해보입니다.

    4. 스크립트를 사용한 복제 재구축 방법: 현재 HA상태에서 슬레이브 DB를 중단시키고 DB를 삭제하여 주세요. 그 다음에 스크립트 설정을 확인하시고 복제 재구축 스크립트를 실행하시면 됩니다. 반드시 매뉴얼 보시면서 설정을 확인하시고요, 반드시 1) 마스터와 슬레이브가 동일 경로에 설치되었는지 확인,  2) repl_log_home 설정 시 반드시 절대경로 명시, 2) 심볼링크 X, 3) 최하위 폴더명 다음에 "/" 붙이면 안됨 등의 사항을 주의하여주세요.

     

     

     


List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 1494
1183 큐브리드 매니터 질의 편집기 관련 1 하루야 2012.03.26 7368
1182 PHP 인스톨 중 에러입니다. 6 들뿔 2012.03.26 9840
1181 Connect By Level 구문에 대해 문의 드립니다. 1 깨달음 2012.03.23 11098
1180 큐브리드 매니저 connect timed out. 오류 1 아이쿠두야 2012.03.23 10770
1179 Warning: Error: CAS, -1003, Cannot receive data from client 에러 발생 1 gPdnjs 2012.03.23 9233
1178 Cubrid iBatis Cursor 예제좀 부탁드립니다. 1 깨달음 2012.03.21 16146
1177 ODBC 에러 물어보겟습니다. 2 세스카 2012.03.21 10233
1176 ADO.net 또는 ODBC에 대한 질문입니다. 12 세스카 2012.03.20 13284
1175 win 2008 (x64)에서 apm으로 큐브리드 연동 질문 1 hwani012 2012.03.16 7657
1174 윈도우용 큐브리드 문의 1 zino 2012.03.13 6343
1173 큐브리드상에서 한글을 깨지지 않고 자르는 방법이 있을까요? 1 file 안지민 2012.03.13 9306
1172 8.2.2 HA 구성 중 네트워크 장애 복귀 시 role 전환 문제 3 freemir 2012.03.09 13379
1171 설치 문의 드립니다. 1 cuins 2012.03.06 7516
1170 php 모듈 관련 문제좀여... 5 눈뜨면아침 2012.03.01 7111
» HA 구성 하에서 RO 브로커 연결 시 SELECT 값이 다릅니다. 9 freemir 2012.02.24 22281
1168 server start시 error 발생 관련 3 flypig 2012.02.24 12050
1167 질문입니다. 1 세스카 2012.02.22 7089
1166 큐브리드 매니져에서만 오류메시지가 깨집니다. 1 file 안지민 2012.02.21 9691
1165 트리거 조건문 질문. 4 기린종인 2012.02.19 8657
1164 잦은 트랜잭션으로 인한 마스터서버의 다운 문제. 6 노랑배 2012.02.16 14434
Board Pagination Prev 1 ... 113 114 115 116 117 118 119 120 121 122 ... 177 Next
/ 177

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2147 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales