Background Image

FORUM

2024.08.08 11:53

Dbeaver master, slave

조회 수 164 추천 수 0 댓글 11
?

단축키

Prev이전 문서

Next다음 문서

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


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

OS
Window7 32bit, Linux 64bit 등
CUBRID Ver.
[cubrid_rel] 수행 결과
CUBRID TOOL Ver.
[도움말]-[버전정보] 확인
응용 환경(API)
java, php, odbc 등 입력


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

 

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


-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
master,slave 구성 후 csql standard alone 모드로 접속 후  pk가 없는 테이블을 만들고 insert를 했는데요.

그 후 dbeaver에서 slave 접속 시 db명에 dbname@host 부분에 @host 없이 dbname만 입력하여 접속했습니다.

접속은 성공했으나, 테이블을 조회하면 데이터가 조회가 되네요. dbname@host 로 접속하면 조회가 안되구요,

 

어떤 차이가 있을까요?

 

  • ?
    정만영 2024.08.08 12:22
    슬레이브가 아닌 마스터 DB로 접속된 것으로 보입니다, DBeaver 접속 정보를 확인해 보시기 바랍니다.
    CUBRID HA는 마스터 노드의 서버에서 생성되는 기본키 기반의 복제 로그를 슬레이브 노드에 복제 후 반영하는 방식으로 동기화합니다. 따라서 기본키가 설정된 테이블에 대해서만 데이터 동기화가 가능합니다. 11.3버전은 기본키가 없는 테이블에 대한 데이터 복제는 USE_SBR 힌트를 사용하면 가능은 합니다​.
    USE_SBR 힌트는 https://www.cubrid.org/manual/ko/11.3/sql/tuning.html#sql-hint 참조 하세요.
  • ?
    초보자 2024.08.08 15:24
    Dbeaver에서 HA구성에 접속 시 db명 뒤에 @host를 붙여주어야 하는건가요?

    slave에서 접속시 host는 slave 의 host를 적어주었었고, db명에 dbname@host 로 적느냐 dbname 으로 적느냐에 따라 차이가 있었습니다.
    붙인 것과 붙이지 않은것의 차이를 알고 싶습니다.
  • ?
    큐브02 2024.08.08 15:47

    안녕하세요.
    먼저 기본적으로 브로커는 RW모드이기 때문에 HA환경에서 Master서버에 우선적으로 연결하게 됩니다.
    작성자 분께서 slave ip로 접속하였더라도 Slave broker가 Master를 찾아 연결해주기 때문에 dbname만 적으셨을 때 Master 서버에 연결되어 데이터가 정상적으로 조회가 되었을 것이고, 이후 @slavehost를 적어주셨을 때에는 Slave 서버에 연결 되어 데이터가 안보였을 것으로 생각이 되네요.
    Master와 Slave간에 데이터가 다른 이유는 본문에 적어주신 내용 그대로 입니다.
    1. Standalone mode로 접속하여 데이터 입력
    2. pk가 없는 테이블 생성
    위 두 케이스 모두 데이터 동기화를 지원하지 않는 HA 제약조건에 해당하기 때문입니다.
    자세한 내용은 아래 제약사항 매뉴얼 참고 부탁드립니다.
    https://www.cubrid.org/manual/ko/11.3/ha.html#id37

  • ?
    kisoo 2024.08.08 15:43

    csql에서 접속시에는 ha가 구성된 경우 database@hostname 형태로 사용하셔야 합니다.
    $ csql -u dba db1@localhost

     

    csql을 실행하는 서버에서 같은 서버가 아닌 다른 서버의 database로 접속하려면

    $ csql -u dba db1@192.168.2.2

    형태로 사용하면 됩니다. (192.168.2.2 에서 실행되는 database server 'db1'에 접속됩니다)

    DBeaver에서 Connection Setting에서
    - 'Host'에는 접속하기 위한 host의 ip/hostname을 사용하면 되고
    - 'Database/Schema' 부분은 database 또는 database@host를 사용하시면 됩니다. 이경우에는 같은 의미입니다.

       (database@host 형태로 사용한다면, host는 위의 접속을 위한 Host와 같을 것입니다)

  • ?
    정만영 2024.08.08 17:16

    DB 마스터/슬레이브 서버에서 브로커 access_mode 아래와 같이 변경하면 33,000 포트는 슬레이브 노드로 접속될 것입니다.

     

    [java_user@pm-myjun1 ~]$ broker_changer broker1 access_mode SO
    OK
    [java_user@pm-myjun1 ~]$ cubrid broker status -b -f
    @ cubrid broker status
      NAME                   PID   PSIZE  PORT  AS(T      W      B   1s-W  1s-B)   JQ                  TPS                  QPS     LONG-T     LONG-Q         ERR-Q  UNIQUE-ERR-Q   CANCELED   ACCESS_MODE   SQL_LOG  #CONNECT   #REJECT
    =====================================================================================================================================================================================================================================
    * query_editor         459374  219196 30000     5      0      0      0      0    0                   95                   51     0/60.0     0/60.0             7             0          0            RW       ALL        47         0
    * broker1              459327  217072 33000     5      0      0      0      0    0                   20                   11     0/60.0     0/60.0             1             0          0            SO       ALL        11         0

  • ?
    초보자 2024.08.08 17:27

    말씀하신 케이스는 broker1을 read only로 쓰고 query_editor를 RW로 쓰는건가요?

    query_editor를 실 운영에 사용해도 별 문제는 없을까요?

  • ?
    정만영 2024.08.08 17:38

    네, 큐브리드 설치하면 기본 브로커 포트는 query_editor(30,000,) broker1(33,000)이고 access_mode 모두 RW로 설정되어 있어 DBeaver에서 슬레이브 IP로 접속해도 마스터로 접속된 것입니다. access_mode를 RO 또는 SO 변경하시면 슬레이브 노드로 접속될 것입니다.
    그리고, 보통 서비스(WAS)에서 사용하는 브로커 포트는 디폴트를 사용하는 방법보다는 브로커 포트를 추가(ex: 35,000포트)해 서비스 포트로 사용하는 것을 권장합니다.

  • ?
    초보자 2024.08.09 09:47

    그럼 master-replica-slave 구조라면 브로커를 하나 더 추가하여 각 노드별로 브로커를 따로 써야하겠군요?

    그렇다면 보통 운영 환경에서 active-standby 구조라면 query_editor와 , broker1을 각각 read only와 RW 두가지로 사용할까요?

  • ?
    정만영 2024.08.09 11:54
    1, READ(읽기)를 슬레이브, 리플리카 노드로 분산할 경우 READ(읽기) 컨넥션이 슬레이브, 리플리카 DB 접속 후 트랜잭션을 처리할 때 Write(쓰기) 작업이 없어야 합니다.
    2, 브로커는 마스터/슬레이브/리플리카 모두 access_mode 모드가 RO인 브로커를 추가해서 READ(읽기) 분산이 가능한 트랜잭션만 대상 포트를 이용해 서비스하면 됩니다.
    예제) cubrid_broker.conf
    [%BROKER_RW]
    BROKER_PORT =35000
    :
    ACCESS_MODE =RW

    [%BROKER1_RO]
    BROKER_PORT =36000
    :
    ACCESS_MODE =RO

    [java_user@pm-myjun1 ~]$ cubrid broker info | grep BROKER_PORT
    BROKER_PORT =30000
    BROKER_PORT =33000
    BROKER_PORT =35000
    BROKER_PORT =36000
    [java_user@pm-myjun1 ~]$ cubrid broker info | grep ACCESS_MODE
    ACCESS_MODE =RW
    ACCESS_MODE =RW
    ACCESS_MODE =RW
    ACCESS_MODE =RO
    [java_user@pm-myjun1 ~]$ cubrid broker status -b -f
    @ cubrid broker status
    NAME PID PSIZE PORT AS(T W B 1s-W 1s-B) JQ TPS QPS LONG-T LONG-Q ERR-Q UNIQUE-ERR-Q CANCELED ACCESS_MODE SQL_LOG #CONNECT #REJECT
    =====================================================================================================================================================================================================================================
    * query_editor 1243881 151588 30000 5 0 0 0 0 0 0 0 0/60.0 0/60.0 0 0 0 RW ALL 0 0
    * broker1 1243892 151588 33000 5 0 0 0 0 0 0 0 0/60.0 0/60.0 0 0 0 RW ALL 0 0
    * broker_rw 1243903 151588 35000 5 0 0 0 0 0 0 0 0/60.0 0/60.0 0 0 0 RW ALL 0 0
    * broker1_ro 1243914 151588 36000 5 0 0 0 0 0 0 0 0/60.0 0/60.0 0 0 0 RO ALL 0 0

    위와 같이 설정하면 WAS서버 컨넥션에서 읽기/쓰기는 마스터 IP: 35,000(RW) 사용하고, 읽기 분산 컨넥션은 슬레이브 IP, 36,000(RO) 사용하도록 설정해서 사용하면 됩니다, Slave, Replica node로 읽기 분산할 경우 가장 중요한 위 두가지만 전달 했고 추가적으로 검토할 부분은 링크 매뉴얼을 이해하시고 슬레이브/리플리카 분하 분산 서비스를 구성하시기 바랍니다.
    https://www.cubrid.org/manual/ko/11.3/ha.html#db
  • ?
    초보자 2024.08.12 12:00
    네 감사합니다.
    failover를 지속적으로 테스트 중 어느 순간부터 cubrid hb start 시 계속 fail이 발생하여 로그를 보니 다음과 같은 내용이 있습니다.
    db1@localhost_applylogdb_db1_k8s-node1.err 에는 아래의 내용이 나오네요.
    Time: 08/12/24 11:57:22.135 - ERROR *** file /home/jenkins/workspace/cubrid_release_11.3/src/transaction/log_applier.c, line 8151 ERROR CODE = -1040, Tran = 1, EID = 2
    HA generic: Failed to initialize db_ha_apply_info.

    db1@k8s-node1_copylogdb.err 에는 아래의 내용이 나옵니다.
    Failed to connect to database server, 'db1', on the following host(s): k8s-node1:k8s-node1

    k8s-node1:k8s-node1 와 같이 같은 노드가 두번 나오게 되는데, 원인이 무엇일까요?
  • ?
    정만영 2024.08.12 14:05

    1. db_ha_apply_info 초기화 실패 : db_ha_apply_info 테이블 정보 부분에 데이터 HA정보 관련 오차/손상되었거나, 복제 로그 파일과 관련된 문제가 있을 때 발생할 수 있습니다. 복제 로그나 관련 시스템 파일이 손상되었을 가능성도 있습니다.
    2. copylogdb 연결 실패 : 복제로그를 가져오는 copylogdb가 상대방 노드 DB접속 과정에서 오류가 발생한 문제입니다. db_ha_apply_info 테이블 정보 오류 또는 서버 환경 변경 영향으로 인한 문제로 보입니다.
    DB서버 및 CUBRID HA 환경적인 정보 변경이 없는지 먼저 확인해 주시고 마스터/슬레이브 HA 구성 상태 및 applyinfo 명령어로 CUBRID HA의 복제 로그 복사 및 반영 상태를 확인해 보세요.( https://www.cubrid.org/manual/ko/11.3/ha.html#id28 )


List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 CUBRID 사용자를 위한 DBeaver 도구 출시 안내 4 admin 2024.04.23 2399
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 6548
4086 kill transaction 문의드립니다 2 잘했어요 2024.09.05 31
4085 atomikos 관련 문의 드립니다. xlxm 2024.09.04 20
4084 구축한 db에 backup db 정보를 입력하고 싶습니다. 1 박성호_0403 2024.09.03 28
4083 큐브리드 getQueryplan() 추가 질문입니다. 2 초보자 2024.09.03 24
4082 rest api token 만료 기준 문의드립니다 3 잘했어요 2024.09.03 28
4081 MERGE INTO조건문 질문드립니다. 6 대청 2024.09.03 45
4080 큐브리드 recompile 힌트 질문입니다. 4 초보자 2024.09.02 39
4079 큐브리드 매니저 서버 OOM 관리 방법 문의드립니다. 2 newkr 2024.08.28 44
4078 위의 플랜 조회 추가 질문입니다. 4 초보자 2024.08.28 49
4077 Cubrid Manager Server 관련 OOM이 발생하는 버전 정보를 확인 요청드립니다. 4 newkr 2024.08.27 70
4076 restordb 1 박성호_0403 2024.08.27 38
4075 플랜조회 질문입니다. 4 초보자 2024.08.27 60
4074 replication 질문입니다. 1 초보자 2024.08.23 43
4073 cubrid heartbeat status -v 및 failover 질문입니다. 11 초보자 2024.08.22 102
4072 statdump api 질문 드립니다, 1 ijuru 2024.08.22 44
4071 파이선 드라이버 설치 3 코드보이 2024.08.21 65
4070 DB 용량 확인 쿼리 질문드립니다. 3 shl 2024.08.14 87
4069 Cubrid 사용 도중 한쪽 서버가 다운되어 그 이후 이중화 해제 후 한쪽만 가동중입니다. 3 로키 2024.08.08 90
» Dbeaver master, slave 11 초보자 2024.08.08 164
4067 master-slave-replica 구성 4 초보자 2024.08.07 107
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 205 Next
/ 205

Contact Cubrid

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