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 4282
3876 엑셀 파일 임포트시 오류 1 file 초보 2010.01.25 23369
3875 java stored procedure 실행시 에러 4 hyperhand 2009.12.22 23364
3874 Windows 에서 사일런트 설치가 가능한가요... 2 거만쟁이 2009.08.12 23354
3873 jmeter로 테스트해보신분 계신가요 3 삽질쟁이 2009.06.01 23315
3872 오라클 rank() over를 대체 할 수 있는 함수가 있나요? 1 쿠쿡 2011.08.16 23268
3871 Replication, 서버 이중화, HA 2 승준77 2012.01.26 23263
3870 날짜 계산관련 문의드립니다. 2 치푸 2009.07.29 23177
3869 8.3.1 --> 9.2 업그레이드 후 한글 깨짐. ( vb6.0 + MS949 ) 2 한종희 2013.12.28 23127
3868 error while loading shared libraries: libgtk-x11-2.0.so.0 2 공기청정기 2009.04.25 22969
3867 테이블 컬럼에 comment 넣기.. 1 파란토끼 2013.10.09 22962
3866 표준프레임워크의 공통컴포넌트에 게시판설치관련 3 file 큐브리 2012.08.31 22757
3865 c# 에서 개발 중인데 쿼리 처리속도가 느리네요(수정) 5 yak341 2012.12.20 22686
3864 JVM terminated. Exit code=13 이런 코드가 나와서 cubridmanager가 실행 안됩니다. 1 검신81 2010.03.19 22665
3863 mssql -> cubrid 데이터 이전시 문제 4 종이 2010.02.25 22651
3862 cubrid에 대량 데이터 insert 시 에러 1 비니뷘 2009.01.15 22626
3861 [초보질문]function 변환 문의 (oracle -> cubrid) 6 삽질중 2009.05.08 22588
3860 파워빌더10.2에서 ODBC설정에 대한 문제 1 ksk 2009.12.05 22573
3859 Oracle SQL 을 Cubrid SQL 로 컨버젼 툴 문의 1 홍가 2014.06.26 22571
3858 큐브리드는 안드로이드 연동이 안되나요? 4 file 달선생 2012.05.01 22395
» HA 구성 하에서 RO 브로커 연결 시 SELECT 값이 다릅니다. 9 freemir 2012.02.24 22375
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 199 Next
/ 199

Contact Cubrid

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