Background Image

FORUM

조회 수 22375 추천 수 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 4273
936 MSSQL에서 큐브리드 연동 3 미곰 2016.05.24 10946
935 접속자의 아이피나 맥어드레스를 알아낼수 있는지요 3 유니콘 2012.12.05 10953
934 초보 질문드립니다^^:(인스턴스 갱신) 1 박동진 2009.03.12 10960
933 맥에서 cubrid query browser 실행이 안됩니다. 1 zbqmflem12345 2014.03.29 10964
932 cubridmanager 실행시 오류 입니다. 1 하하보이 2010.12.11 10968
931 원하는 테이블에 데이터를 추가 하고싶으면 어떻게 하나요? 1 나동호 2009.03.25 10977
930 오류의 의미?? 10 천상 2016.06.21 10988
929 매니저 오류 문의 4 file Kai 2014.01.06 10990
928 임시테이블에 대한 지원 계획은 있는지 궁금합니다 2 김종언 2010.07.28 10991
927 뷰 테이블 편집 cascade 오류 1 초보 2010.03.06 11003
926 Cubrid 2008 R 1.3 설치중 에러메시지 3 동진 2009.03.23 11004
925 라이센스 관련 문의 입니다. 1 foxman 2011.01.25 11008
924 트랙잭션이 시스템에 의해 중단됩니다. 1 김현성 2011.05.26 11016
923 cubrid 8.4.3 loaddb 또는 대량데이터 일괄 Insert 방법 1 김상윤 2013.03.22 11017
922 대용량 mysql 데이타를 큐브리드 2008 로 마이그레이션 할때 1 초보 2010.01.27 11022
921 cubrid 설치 후 서버 기동 문제 3 너와나 2009.10.13 11025
920 Oracle --> Cubrid 쿼리 변경 질문입니다! 3 잘하자! 2016.06.01 11054
919 JBoss 7.1.1 와 Cubird 9.3.6 버젼 연동 문의 file 뽀대남 2016.07.12 11058
918 파티션 테이블에 대해서.. 1 알칸펠 2014.01.17 11065
917 The size of data received from server is different from the expected 2 사자 2011.01.21 11069
Board Pagination Prev 1 ... 148 149 150 151 152 153 154 155 156 157 ... 199 Next
/ 199

Contact Cubrid

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