Background Image

FORUM

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

단축키

Prev이전 문서

Next다음 문서

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


* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.

OS
 Oracle Linux 7.9
CUBRID Ver.
 10.2.5.8886
CUBRID TOOL Ver.
[도움말]-[버전정보] 확인
응용 환경(API)
java, php, odbc 등 입력


* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.

 

에러 내용 및 재현 방법 재현 가능한 Source와 SQL
관련 테이블(인덱스, 키정보 포함) 정보 CUBRID 홈 디렉토리 아래 log 디렉토리 압축


-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------

 

HA 구성 중 슬레이브 재구축 관련하여 답변을 주셨는데 이해가 정확히 되지 않아 다음과 같이 정리 및 테스트를 진행했습니다.

 

일단 이전과는 다르게 슬레이브 노드에서 HA가 정상적으로 기동되었으며, HA도 정상적으로 동작하는것 같습니다.

 

틀린 부분이나 제가 잘못 이해하고 있는 부분이 있다면 답변 부탁 드립니다.

 

================================================================================

 

** 구성 환경

 

마스터(urp1) - 슬레이브(urp2) - 레플리카(urp3)

 


** 시나리오 (서비스 운영 중 슬레이브 재구축)

 

  - 마스터:슬레이브:레플리카가 1:1:1로 구축된 환경에서 슬레이브 노드의 데이터에 이상이 발생했다고 가정
  - 마스터 노드로부터 데이터를 완전히 새로 구축
  - 현재 마스터 노드의 DB는 운영중인 상태
  
  
** 작업 순서

 

1) 슬레이브 노드의 HA 및 서비스 중지

 

[cubrid@urp2 ~]$ cubrid heartbeat stop
[cubrid@urp2 ~]$ cubrid service stop

 


2) 슬레이브 노드의 데이터베이스 볼륨, 복제 로그 삭제 (노드 B)

 

[cubrid@urp2 ~]$ cd $CUBRID_DATABASES

 

[cubrid@urp2 databases]$ rm testdb/*
[cubrid@urp2 databases]$ rm testdb/log/*

 

[cubrid@urp2 databases]$ rm -rf testdb_urp1

 


3) 마스터 노드 및 레플리카 노드에서 슬레이브 노드의 로그 복제 중지

 

[cubrid@urp1 ~]$ cubrid heartbeat copylogdb stop testdb urp2
[cubrid@urp1 ~]$ cubrid heartbeat applylogdb stop testdb urp2

 

[cubrid@urp3 ~]$ cubrid heartbeat copylogdb stop testdb urp2
[cubrid@urp3 ~]$ cubrid heartbeat applylogdb stop testdb urp2

 


4) 마스터 노드 및 레플리카 노드에서 슬레이브 노드에 대한 복제 로그 삭제

 

[cubrid@urp1 ~]$ rm -rf $CUBRID_DATABASES/testdb_urp2
[cubrid@urp3 ~]$ rm -rf $CUBRID_DATABASES/testdb_urp2

 


5) 슬레이브 노드에 대한 복제 정보 제거 (레플리카 노드에서 수행)

 

[cubrid@urp3 ~]$ csql -u dba testdb@localhost --sysadm --write-on-standby

 

sysadm> DELETE 
sysadm>   FROM db_ha_apply_info
sysadm>  WHERE copied_log_path = '/app/cubrid/CUBRID/databases/testdb_urp2';

 


6) 마스터 노드에서 데이터베이스 백업 및 슬레이브 노드로 백업 파일 전송

 

[cubrid@urp1 tmp]$ cubrid backupdb -z -C -D . -o full_bk.log testdb@localhost
[cubrid@urp1 tmp]$ scp testdb_bk0v000 cubrid@urp2:~/tmp

 


7) 슬레이브 노드에서 복구

 

[cubrid@urp2 tmp]$ cubrid restoredb -B . -o restore.log testdb

 


8) 마스터 노드의 활성 로그(Active log)를 슬레이브 노드에 복사 (슬레이브 노드에서 수행)

 

[cubrid@urp2 tmp]$ cub_master
[cubrid@urp2 tmp]$ cubrid heartbeat copylogdb start testdb urp1

 


9) copylogdb 및 cub_master 프로세스 중지(슬레이브 노드에서 수행)

 

[cubrid@urp2 testdb_urp1]$ cubrid heartbeat copylogdb stop testdb urp1
[cubrid@urp2 testdb_urp1]$ cubrid service stop

 


10) 슬레이브 노드에 데이터베이스 복구 이후 필요한 로그 파일 복사 (슬레이브 노드에서 수행)

 

[cubrid@urp2 testdb_urp1]$ scp cubrid@urp1:$CUBRID_DATABASES/testdb/log/testdb_lgar0* .

 


11) 슬레이브 노드에서 HA 구동

 

[cubrid@urp2 testdb_urp1]$ cubrid heartbeat start

 


12) 마스터 노드 및 레플리카 노드에서 copylogdb, applylogdb 프로세스 기동

 

[cubrid@urp1 tmp]$ cubrid heartbeat copylogdb start testdb urp2
[cubrid@urp1 tmp]$ cubrid heartbeat applylogdb start testdb urp2

 

[cubrid@urp3 tmp]$ cubrid heartbeat copylogdb start testdb urp2
[cubrid@urp3 tmp]$ cubrid heartbeat applylogdb start testdb urp2

 

================================================================================

 

그리고 이전 글에서 마지막 답변으로 다음과 같이 답변을 주셨는데요,

 

 

(1) 지적하신대로 매뉴얼의 slave db에서 db_ha_apply_info 를 삭제하는 부분이 순서가 잘 못되었네요.
master db의 백업을 가지고 slave에서 복구 후에 삭제하는 것이 맞습니다. 이 부분의 매뉴얼은 수정하도록 하겠습니다.
매뉴얼 오류에 대해 보고해주셔서 감사합니다.

 

    --> 해당 내용은 마스터 노드의 서비스 중지 후 재구성할 때 진행하는게 맞는건가요?

 


(2) 현재 설명 그림의 재구성 방법은 master db의 서비스를 멈추지 않고 재구성하는 방법의 설명입니다.
백업 후에도 insert/delete/update.가 발생할 수 있어, 백업시의 최종 로그 정보를 기억해두었다가 slave db 재구성시 db_ha_apply_info에 master 복제에 대한 정보를 기입하여 백업 시점이후의 변경된 정보부터 복제를 하기 위함입니다.

 

    -->  그러면 굳이 마스터 노드쪽의 db_ha_apply_info 테이블의 레코드를 삭제하지 않고 백업 수행 후,

          슬레이브 노드에서 DB 재구축 후 활성 로그 및 보관 로그만 전달 한 다음에 HA 기동하면 될까요?

          (위 작업 단계에서 7번, 8번)

 

  • ?
    원종민 2022.04.06 11:53
    1. 작업순서
    "7) 슬레이브 노드에서 복구" 후 Slave서버의 db_ha_apply_info 테이블 값을 넣어주는 부분이 빠졌습니다.
    - 온라인 매뉴얼에서 update.sh 스크립트를 수행하는 부분을 참조해주시면 됩니다.
    - 해당 스크립트를 사용하지 않는 방법으로 restoredb 유틸리티 대신 restoreslave 유틸리티를 사용하시면 자동으로 db_ha_apply_info 테이블에 값을 넣어주게 됩니다.
    * restoreslave 유틸리티는 버전에 따라 없는 경우가 있습니다. (현재 테스트하는 10.2 버전의 경우 restoreslave 유틸리티를 사용할 수 있습니다.)

    2. 해당 내용은 마스터 노드의 서비스 중지 후 재구성할 때 진행하는게 맞는건가요?
    - 네 오프라인 재구성시 진행하는게 맞습니다.

    3. 그러면 굳이 마스터 노드쪽의 db_ha_apply_info 테이블의 레코드를 삭제하지 않고 백업 수행 후, 슬레이브 노드에서 DB 재구축 후 활성 로그 및 보관 로그만 전달 한 다음에 HA 기동하면 될까요? (위 작업 단계에서 7번, 8번)
    - 데이터가 유입될 경우 엔진 내부의 pageid, offset 등의 값이 바뀌게 되며, 바뀐 시점의 pageid, offset 값을 db_ha_apply_info 테이블에 넣을 경우 데이터 동기화가 깨질 수 있습니다.
    - 따라서, 마스터 노드쪽의 db_ha_apply_info 테이블에서 복제 정보를 반드시 초기화 (record 삭제) 하셔야 합니다.
  • ?
    kikiki767 2022.04.07 13:47

    서비스 운영 중 슬레이브 재구축

     

     

    일단 귀사가 제공하는 위 시나리오 대로 진행했습니다.  (마스터 노드의 DB는 운영중인 상태)

     

    그리고 원종민님 답변대로 Slave 서버에 DB를 복구한 후 db_ha_apply_info 테이블에 데이터를 집어넣었고,

    (Master 서버의 db_ha_apply_info 테이블의 레코드를 삭제하고 백업 진행)

     

    이 후 귀사가 제공한 시나리오 대로 진행했지만 슬레이브 노드에서 HA가 기동이 안되고 있습니다.

     

    결국 제가 다음 링크에서 최초 문의했던 증상인거죠. (https://www.cubrid.com/qna/3835603)

     

    시나리오가 잘못 된건지, 아니면 제가 잘못 테스트 한건지 확인 부탁 드립니다.

     

    이번엔 빠른 답변 부탁 드립니다.

     

    답변을 일주일 넘어서 주시는건 너무한 것 아닌가요?

     

     

    ps // 서비스 정지후 재구성하는 방법 말고, 매뉴얼대로 "서비스 운영 중" 상태의 방법을 알려주세요.


List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 CUBRID 사용자를 위한 DBeaver 도구 출시 안내 admin 2024.04.23 110
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4473
3740 큐브릭 펜타호와 연계하는 방법 궁금합니다. 야밤비 2016.03.16 7614
3739 큐브리즈 2008 R4.0 트랜잭션 에러 1 이용훈 2014.03.20 8419
3738 큐브리드의 특징중 교착상태 자동해결이 알고 싶습니다. 1 끌레도르 2015.06.22 4796
3737 큐브리드의 테이블 생성일시, 수정일시 등을 확인 할 수 있는 쿼리를 알고싶습니다. 1 풍류인생 2021.06.22 704
3736 큐브리드의 적정 데이터 수는 얼마나 되는 것인지 궁금합니다.. 1 스마트 2011.01.08 7974
3735 큐브리드의 이전 버전 다운로드에 대해서 1 DiaBlue 2012.09.13 5555
3734 큐브리드의 궁금한점 1 초천재 2010.07.01 7347
3733 큐브리드용량문제 1 우주와나 2009.11.17 12776
3732 큐브리드용 제로보드(4.1)에 대한 문의(adodb 관련) 1 김우람 2009.02.19 16757
3731 큐브리드용 웹보드 문의 5 유니콘 2011.01.27 10190
3730 큐브리드용 그누보드 버그 보고 (To. 시난님) 5 고영진 2009.11.08 11575
3729 큐브리드용 그누보드 4.31.08 버전을 구하고 싶습니다 2 유니콘 2012.02.07 8713
3728 큐브리드와 오라클 join 실행계획 차이 1 cubrid200 2013.06.19 8470
3727 큐브리드와 powerDNS 연동 1 aliveJune 2009.09.04 12140
3726 큐브리드와 php 연동을 할려는데 문제가?? 2 흑심품은연필 2009.07.01 11936
3725 큐브리드에서 함수와 프로시저의 차이?? 2 루피 2013.11.13 13750
3724 큐브리드에서 테이블 용량, 로우사이즈 검색방법 1 차솨 2022.10.28 565
3723 큐브리드에서 컬럼의 컬레이션 조회 방법 문의드립니다. 2 QnA 2017.07.20 558
3722 큐브리드에서 제공되는 CUBRIDXADataSource 1 jobis 2013.12.18 9144
3721 큐브리드에서 장고(django)지원 계획이 있는지요? 1 지니보이 2012.04.10 9819
Board Pagination Prev 1 ... 9 10 11 12 13 14 15 16 17 18 ... 200 Next
/ 200

Contact Cubrid

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