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 48
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4458
1214 어떻게 해야하는건가요? 2 SoMa 2011.05.21 8233
1213 어찌해서 설치는됫는데.. 1 가루구 2009.02.16 14529
1212 어찌해서 설치는됫는데... 1 가루구 2009.02.17 14695
1211 언더바 문의 "_" 2 joke7 2014.07.17 8835
1210 언로드 후, 로드 시 데이터 정렬 순서가 역방향으로 바뀌는 것 관련해서... 1 file 차오이 2012.09.24 7124
1209 언로드 후, 로드가 안되는데 어떤 사항을 체크해 봐야 할까요? 2 secret 차오이 2011.08.23 18
1208 언어별 대표적인 orm 플러그인 개발 계획은 없으신지요? 1 서치 2014.05.05 9165
1207 엄청난 DB 생성 소요 시간 4 쭈난 2010.01.16 10071
1206 업그레이드 후 쿼리 수행시간이 길어졌습니다. 4 secret 노랑배 2011.12.22 12
1205 업데이트 보완 문제 해결요청 1 가라 가라~ 2009.01.20 17592
1204 에고 일일히 답변 달아주셨네요;; 1 송효진 2009.04.07 12995
1203 에러 내용 문의 2 yonggi 2021.09.01 155
1202 에러 로그 첨부 합니다. 5 file Philip Park 2020.10.15 166
1201 에러 메세지에 대해서 분석좀 부탁 드리겠습니다. 1 특수요원 2015.11.03 5065
1200 에러 메시지 문의드립니다. 4 file dashbell 2014.10.27 4065
1199 에러 문의 1 시나브로 2016.04.19 10438
1198 에러 질문 : cci_glo_load? 1 sugarkane 2010.11.15 8190
1197 에러 질문 드립니다.!! 1 file 마리오네트 2020.01.22 98
1196 에러 코드 관련 다시 질문 드립니다 1 kkckc 2009.03.18 11506
1195 에러 코드 조회 3 kkckc 2009.03.05 11839
Board Pagination Prev 1 ... 135 136 137 138 139 140 141 142 143 144 ... 200 Next
/ 200

Contact Cubrid

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