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
번호 제목 글쓴이 날짜 조회 수
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4443
3607 Windows 10 php 5.6 Call to undefined function cubrid_connect() 에러 문의 8 file devlsy 2022.04.21 122
3606 자바 배치 쉘 수행시 큐브리드 이중화 설정 1 jeinhe 2022.04.18 79
3605 큐브리드 (java - 전자정부프레임워크 - 마이바티스) 연동 에러 1 file 백수인 2022.04.15 390
3604 cubrid 성능 개선 1 디어사이드 2022.04.15 132
3603 INITCAP함수 대체 1 suyeon 2022.04.13 81
3602 DB backup 시 문제가 발생합니다. 4 samsam 2022.04.13 125
3601 sqlgate에서 프로시저 실행시 에러 3 밍아 2022.04.07 270
3600 autoexecquery.conf 매시간 실행 스케쥴 문의 1 Roy 2022.04.06 55
3599 cubrid migration toolkit 데이터마이그레이션 시 데이터 깨짐현상 1 file 스타일보스 2022.04.05 79
3598 java 컴파일시 Class Not Fount 13 file 밍아 2022.04.05 241
3597 _db_attribute 수정 권한 1 mkchoi 2022.04.04 87
» HA 구성 중 슬레이브 재구축 문의 드립니다. (2) 2 kikiki767 2022.03.29 134
3595 Cubrid HA 오류 로그 문의드립니다. 1 큐브짱 2022.03.28 290
3594 컬럼 정보 수정 방법 3 jeinhe 2022.03.28 365
3593 데이터 load 시 schema 파일에서 문제가 발생합니다. 8 Atom 2022.03.27 296
3592 HA 구성 중 슬레이브 재구축 문의 드립니다. 5 file kikiki767 2022.03.25 204
3591 데이터 복구 1 file 연습만이살길 2022.03.25 258
3590 큐브리드 매니저에서 데이터 가져오기 문의 1 ozro 2022.03.25 91
3589 자바 함수 사용중에 jdbc 접속오류 발생 1 file go 2022.03.24 65
3588 안녕하세요 대소문자 구분 설정에 대한 문의 드립니다. 3 Atom 2022.03.23 379
Board Pagination Prev 1 ... 15 16 17 18 19 20 21 22 23 24 ... 200 Next
/ 200

Contact Cubrid

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