Background Image

FORUM

조회 수 12992 추천 수 0 댓글 2
?

단축키

Prev이전 문서

Next다음 문서

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

안녕하세요.

 

큐브리드를 HA 구성으로 사용하고 있습니다.
FailOver 테스트를 하기 위해 마스터의 큐브리드를 데몬을 종료하고 나니 슬레이브 서버 쪽에 있던 데이터가 다 사라져 버렸습니다.
문제를 해결하기 위해서 슬레이브 쪽에 데이터베이스만 남겨 두고 테이블도 모두 삭제를 한 뒤에 다시 마스터와 동기화를 시키기 위해서
마스터를 기동을 하고 나니 마스터 쪽에 테이블도 모두 삭제가 되어버렸습니다.
※슬레이브의 큐브리드 데몬을 종료한 뒤 마스터의 데몬을 기동하였습니다.
※cubrid.conf, cubrid_ha.conf에 대해서는 마스터와 슬레이브 모두 동일하게 설정했습니다.

 

데이터 복구를 위해서 기존에 내보내기로 받아 뒀던 SQL 파일을 이용하여
테이블 복구를 하던 중 auto_increment 가 이미 존재한다고 에러가 발생을 하였습니다.
원인을 조사 해본 결과 db_serial 테이블에  몇몇 serial이 테이블이 삭제 되었음에도 불구하고 남아있는 것을 확인했습니다.
[ db_serial 안에 삭제되지 않고 남아있던 serial 값 - wishcomment_ai_id ]
 
DBA유저로 로그인 해서 db_serial 안에 남아있는 serial 들을 삭제를 하려고 하니 아래와 같이 권한 에러가 발생을 하였습니다.
[ -494 Semantic: Delete is not authorized on db_serial ~생략~]

 

위와 같은 에러(auto_increment already exists) 발생하는 테이블에 대해서
create 문안에 AUTO_INCREMENT 구문을 빼고 나서 생성을 하니 문제 없이 만들어 졌습니다.
자동증가에 대해서도 db_serial 안에 해당 테이블에 serial 이 존재하고 있어서 자동으로 설정되어 있는 상태가 되어버렸습니다.
[ 테이블 생성시 사용한 쿼리문 ]
  CREATE TABLE "wishcomment" (
 "id" integer NOT NULL,
 "wish_id" integer NOT NULL,
 "wish_type" character varying(255) NOT NULL,
 "content" character varying(4096),
 "ddated" timestamp,
 CONSTRAINT pk_wishcomment_id_wish_id_wish_type PRIMARY KEY("id","wish_id","wish_type")
  );
[ 테이블 생성시한 뒤의 DDL 정보 ※메니저의 DDL 탭에서 확인 ]
  CREATE TABLE "wishcomment"(
 "id" integer AUTO_INCREMENT NOT NULL,
 "wish_id" integer NOT NULL,
 "wish_type" character varying(255) NOT NULL,
 "content" character varying(4096),
 "ddated" timestamp,
 CONSTRAINT pk_wishcomment_id_wish_id_wish_type PRIMARY KEY("id","wish_id","wish_type")
  );

 

문제가 해결 되었나 하고 해당 테이블에 대해서 insert 를 하니 id 에 null 값을 넣을 수 없다고 에러가 발생했습니다.
[ insert 시 사용한 쿼리문 ]
  insert into wishcomment wish_id, wish_type, content, ddated values (1,'***','***','2012-11-1');

 

아무래도, db_serial에 해당 테이블에 시리얼이 남아있던 것이 문제가 되고 있는 것 같습니다.
테이블 편집에서 자동증가 체크를 해제하고 저장한다음에 테이블 정보를 다시 봐도 자동증가에는 체크가 그대로 남아있는 상태입니다.

 

아울러, 큐브리드 메니저에서 슬레이브 DB 쪽에서 문제가 발생하고 있는 테이블에 대한 정보를 보면
마스터와 동일하게 자동증가가 적용되어있는 것 처럼 보이지만,
실제로 서버에서 csql 로 desc 를 해보면 자동증가가 적용이 안되어있습니다.

 

별도로, 마스터 DB에 테이블을 만들고 슬레이브 DB랑 동기화를 시켰습니다만,
마스터 DB 쪽에 각각의 테이블에 대해서는 소유자가 [test] 인것에 반해 슬레이브 DB 쪽에는 [dba] 로 되어있습니다.
이부분에 대해서도 맞는 것인지 확인 부탁드리겠습니다.
※ 마스터와 슬레이브간의 테이블 및 데이터 동기화는 이루어지고 있는 상태입니다.

 

csql 에서 테이블의 auto_increment 에 대해서 삭제 및 등록을 할 수 있는 방법에 대해서도 공유 부탁드리겠습니다.
※메뉴얼에 보니까 create 하는 방법 밖에는 나와있지 않던 것 같습니다.

 

주저리주저리 너무 보기 힘든 문장이 되었습니다만.
잘 부탁드리겠습니다.

 

감사합니다.

  • ?
    이용미 2012.11.02 22:01

    안녕하세요. 질문 감사 드립니다.

    1, 마스터 서버의 CUBRID  HA를 종료하기 전 Delete 작업을 수행하셨는지요?

    슬레이브 서버 HA 종료 후, 데이터가 다 사라졌다고 하셨는데 마스터에서 Delete 작업을 하시고 해당 작업이 슬레이브(stand-by 상태) DB에 적용이 된 후에 FailOver 테스트를 진행하신 것은 아니신지요?

    CUBRID HA구성에 문제가 없다면 슬레이브(stand-by 상태) DB에서는 쓰기/삭제 작업이 불가능 합니다. 슬레이브 DB에 쓰기/삭제가 가능한 상황은 첫번째, 마스터 DB 장애로 인한 슬레이브 DB stand-by에서 active로 변경된 경우, 두번째, 슬레이브 DB 정지 후 csql S 접속한 경우 이 두 가지 이외 슬레이브 DB는 쓰기/삭제가 불가능 합니다.

    FailOver Test를 진행한 내용을 다시 한번 검토해 보시고 만약 동일한 문제가 발생할 경우 자세한 FailOver 테스트 시나리오를 올려 주세요. 내부 재현 후 답변 드리겠습니다.

     

    2, 테이블 삭제 시, 해당 테이블이 가지고 있는 [auto_increment] 속성도 db_serial 에서 자동으로 삭제됩니다.

    또한, auto_increment 속성의 경우, 테이블 혹은 컬럼의 삭제 시 동시에 삭제되기 때문에 따로 삭제는 불가능하고, 초기값 변경만 가능합니다.

     

    3, 테이블 소유자 관련하여는 매니저에서 동일한 문제가 재현 되였습니다. 이 문제는 기능 개선 사항으로 등록해서 개선 하도록 하겠습니다.

    테이블 소유자 문제는 콘솔에서 csql u db_user DB_name@localhost로 접속해서  csql을 이용하여 직접 테이블을 생성하시는 방법을 이용하시면 이 문제가 해결될 것입니다.

  • ?
    김인선 2012.11.06 00:49

    2번에 대해서 씨리얼은 테이블을 삭제하면 자동으로 삭제가 되는 것이라고 답변을 해 주셨는데
    전체 테이블에 대해서는 아니지만 일부 테이블에 대해서는 시리얼이 남아있는 상태여서 테이블을 만들때 [auto_increment] 가 이미 존재한다고 에러가 발생했습니다.
    그럼 해당 테이블을 지웠다가 다시 만들면 해결이 될까요??
    아울러, 위의 문제가 발생한 마스터 DB의 테이블에 대해서는 실제로 SQL 구문에 auto_increment 빼고 실행을 했지만
     [auto_increment] 가 만들어졌습니다. 슬레이브 DB 쪽에서는 마스터와 동일한 테이블에 대해서 [auto_increment] 가 만들어져 있지 않고요...
    아마도, 테이블을 만들때 [auto_increment] 가 이미 존재한다고 에러가 발생했을 때 SQL에서 [auto_increment]  빼고 만든것이 원인인것 같습니다만, 이 부분도 마스터 DB 쪽의 해당 테이블을 삭제하고 다시 만들면 해결이 될까요??


List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 CUBRID 사용자를 위한 DBeaver 도구 출시 안내 admin 2024.04.23 49
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4458
3394 restoredb 이용한 복구가 제대로 되지 않아요. 4 럭키늘보 2010.02.18 13007
3393 DB 서버 OFF 시 질문입니다. 3 이석희 2009.04.30 13003
3392 큐브리드 접속 세션 1 yoon 2010.05.17 12998
3391 에고 일일히 답변 달아주셨네요;; 1 송효진 2009.04.07 12995
» 큐브리드 스키마 복구 및 HA 관련 문의 2 file 김인선 2012.11.01 12992
3389 SSL 혹은 SSH와 같이 암호화 커넥션을 지원하나요? 1 아장아장 2010.09.03 12990
3388 큐브리드 10 버전 리스트 분할 문의 종이 2017.01.25 12979
3387 백업파일을 이용하여 데이터베이스가 없는 다른 서버에서 복구하는 방법 질문. 1 김우람 2009.03.19 12976
3386 on duplicate key update 에 대해서.. 7 초식곰 2011.10.26 12970
3385 형변환 오류 문의 1 삽질중 2009.12.30 12969
3384 특정 테이블 복구는 ? 6 file 인경수 2010.06.03 12969
3383 메모리 산정 부탁드립니다 1 으아악 2016.08.06 12969
3382 [초보질문] cubrid service status 나오는 메시지의 의미는? 3 삽질중 2009.06.04 12962
3381 DateTime 타입의 컬럼 데이트 불러오기 2 여긴어디나는누구 2013.11.21 12955
3380 DATE 타입과 DATETIME 타입 3 ES 2010.07.28 12942
3379 저장함수 관련질문 2 hscho 2016.09.02 12939
3378 자바를 연결하려고 합니다. 3 하이에나 2009.11.09 12935
3377 쿼리브라우저 IDE 사용시 에러입니다 1 aladin2000 2016.08.25 12933
3376 mac os x에서 cubrid 설치가능? 1 인성 2011.01.05 12930
3375 create문 버그 (외래키 2개 이상 참조시 ) 4 moon 2014.08.04 12922
Board Pagination Prev 1 ... 26 27 28 29 30 31 32 33 34 35 ... 200 Next
/ 200

Contact Cubrid

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