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 Cubrid Manager에서 데이터 가져오기 와 내보내기 3 atheist 2012.06.12 12202
1213 MS-SQL 2008 -> CUBRID로 마이그레이션 방법.. 2 kings 2012.06.12 11978
1212 내보내기할 때 옵션을 줄 수 있는 방법 없나요?? 1 secret 어려운큐브 2012.05.30 12
1211 함수 등록한 수 쿼리문에서 사용하면 에러나는데 뭐가 문제인거죠? 3 어려운큐브 2012.05.26 13893
1210 ODBC 오토커밋 off에 관련된 문의 1 세스카 2012.05.23 11255
1209 cubrid 설치후의 접속정보(유저ID/password)에 대해서 4 DiaBlue 2012.05.18 24701
1208 cubrid_prepare 오류 질문드립니다 4 엠지 2012.05.17 11086
1207 csql 질문드립니다. 1 진영민 2012.05.16 9193
1206 오류 해결방법을 몰라 질문드립니다. 4 삼구 2012.05.16 11307
1205 최신 HP-Unix에 큐브리드 커널설정하기 1 그림자 2012.05.11 12183
1204 서버 속도가 과도하게 느리네요 1 푸훗 2012.05.10 8705
1203 ON DUPLICATE KEY UPDATE 사용시 affected rows 에 관한 질문 1 Xenos 2012.05.09 15021
1202 Cubrid + Hibernate 관련 해서 질문좀 드릴게요.ㅜㅠ 1 병관 2012.05.06 21528
1201 큐브리드는 안드로이드 연동이 안되나요? 4 file 달선생 2012.05.01 22400
1200 테이블 구성 방안 문의 2 종이 2012.05.01 10621
1199 질의 자동화 질문입니다. 3 기린종인 2012.04.27 10417
1198 릴리즈명과 파일명을 구분하는 이유가? 1 머리아파 2012.04.26 9131
1197 쿼리 작성에 관한 문의 드립니다. 2 prometheus 2012.04.25 8447
1196 다른 서버에 데이터베이스 복원중 오류 메시지 17 종이 2012.04.21 13468
1195 C++ Embedded SQL에서 호스트 변수로 클래스 데이터 선언 가능 여부 문의 1 리겔 2012.04.20 9983
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