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
번호 제목 글쓴이 날짜 조회 수
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4272
1196 에러 메세지에 대해서 분석좀 부탁 드리겠습니다. 1 특수요원 2015.11.03 5062
1195 에러 메시지 문의드립니다. 4 file dashbell 2014.10.27 4065
1194 에러 문의 1 시나브로 2016.04.19 10434
1193 에러 질문 : cci_glo_load? 1 sugarkane 2010.11.15 8190
1192 에러 질문 드립니다.!! 1 file 마리오네트 2020.01.22 93
1191 에러 코드 관련 다시 질문 드립니다 1 kkckc 2009.03.18 11503
1190 에러 코드 조회 3 kkckc 2009.03.05 11834
1189 에러 코드 질문 드립니다. 1 빵돌이 2009.05.02 19958
1188 에러 코드 확인 부탁드립니다. 4 duaeoddl 2015.08.25 8466
1187 에러 한번 봐주세요 6 file Philip Park 2020.03.26 199
1186 에러가 왜 날까요... 잘 입력 되다가 이런 에러가 나네요.. 파이선 사용자입니다. 4 오션나인 2021.05.27 869
1185 에러메세지 한글 깨짐 2 소라게 2013.08.20 12818
1184 에러메시지 문의 드립니다 1 file 유니콘 2011.03.01 9399
1183 에러코드 -51 질문드립니다. 1 kkkkwwakji 2023.12.01 98
1182 에러코드 찾는방법 질문 1 joke7 2013.10.22 18428
1181 에러코드좀 봐주시면 감사하겠습니다. 4 오명일 2015.12.23 6291
1180 에러현상 1 file 스아 2013.03.14 5947
1179 엑셀 가져오기시 한글 일부 깨짐 1 file 산업일꾼 2015.10.14 8193
1178 엑셀 파일 임포트시 오류 1 file 초보 2010.01.25 23369
1177 엑셀에서 oledb등록하려고 하니까 이런 오류가 나네요 2 file 푸훗 2010.12.06 10232
Board Pagination Prev 1 ... 135 136 137 138 139 140 141 142 143 144 ... 199 Next
/ 199

Contact Cubrid

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