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 41
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4458
3993 db에 저장되어 있는 CLOB 데이터의 위치가 어디로 저장되는지 확인하는 방법이 있을까요? new 자바천재 2024.04.25 4
3992 큐브리드 서비스 시작이 안됩니다. file 황남빵 2024.04.24 10
3991 큐브리드 JDBC 드라이버 XA문의 및 큐브리드 분산트랜잭션(XA) 지원 문의 1 update 몽키스패너 2024.04.24 17
3990 group_concat 변수 리턴 관련... 1 썬더기 2024.04.22 22
3989 기 DB에서 테이블 정보만 가져와서 다른 DB에 생성 1 바다소금 2024.04.22 17
3988 큐브리드 매니저 속도 문의 연동테스트용 2024.04.22 10
3987 cubrid count 속 2 kanin 2024.04.19 27
3986 cubrid 10.1 데이터 덮어쓰기 질문입니다. 4 ysk96 2024.04.18 49
3985 ACTION 명령어? 예약어? 1 투투투투기기 2024.04.17 20
3984 sql 구문 사용시 데이터 타입 decimal일 경우 1 투투투투기기 2024.04.11 30
3983 Regexp_count 4 SEO 2024.04.09 66
3982 큐브리드 메모리 오류 관련 질문 2 file 뚜벅뚜벅 2024.04.09 64
3981 큐브리드 실행이 안되는 이슈 1 file 최현욱 2024.04.09 40
3980 unloaddb & loaddb 관련 질문이 있습니다. 1 543534512 2024.04.06 46
3979 mac m1 다운로드 오류 1 file 혜주냉면 2024.04.05 41
3978 list 함수로 만든 sequence type을 varchar로 변환 문의 1 플레이어블 2024.04.04 36
3977 DECODE, CASE WHEN 사용법 문의 2 핑크팬더 2024.04.03 55
3976 schema 파일 loaddb - 스키마 정보 중복오류 문의 4 daay 2024.03.21 91
3975 object to string 4 네오랜덤 2024.03.20 68
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 200 Next
/ 200

Contact Cubrid

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