-
Notifications
You must be signed in to change notification settings - Fork 58
BUG-50579 repsender descriptions #460
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Changes from 1 commit
f20fd95
501364d
7d6de2b
626de25
c11aaf7
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
- Loading branch information
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
|
|
@@ -9269,23 +9269,39 @@ Sender에게 ACK을 보내는 데 걸린 시간의 누적 값이다. | |||||
|
|
||||||
| 지역서버의 이중화 구동시에 명시한 구동 옵션이다. 다음 값들을 가질 수 있다. | ||||||
|
|
||||||
| - : 0 | ||||||
| - NORMAL: 0 | ||||||
|
|
||||||
| - QUICK: 1 | ||||||
| 이 값은 액티브 서버쪽의 송신 쓰레드가 트랜잭션 로그를 분석하여 XLog로 변환한 후, 대기 서버로 XLog를 전송하는 것을 의미한다. | ||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 설명에 LAZY 모드라는 의미가 들어가야 할 것으로 보입니다. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 확인했습니다. |
||||||
|
|
||||||
| - SYNC: 2 | ||||||
| - QUICK: 1 | ||||||
|
|
||||||
| - SYNC_ONLY: 3 | ||||||
| 이중화를 QUICKSTART 옵션으로 시작하면 이 값이 보여질 수 있는데, 이는 전송 시작 위치가 변경중임을 나타내며, 송신 쓰레드는 예전 로그를 무시하고 가장 최근 로그부터 전송을 시작할 것이다. 시작 위치 변경 후에는, QUICK에서 NORMAL로 바뀔 것이다. | ||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. QUICK에서 NORMAL로 바뀔 것이다. --> QUICK에서 NORMAL로 변경된다. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 확인했습니다. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "가장 최근 로그"라는 것이 미전송 로그 중 마지막 하나를 의미하는지 궁금합니다. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 확인 감사합니다. |
||||||
|
|
||||||
| - SYNC: 2 | ||||||
|
|
||||||
| 이 값은 SYNC 옵션으로 이중화를 시작할 때 보여진다. 동기화가 완료된 후, NORMAL (LAZY 모드) 또는 PARALLEL (EAGER 모드)로 바뀌어 보여진다. | ||||||
|
|
||||||
| - SYNC_ONLY: 3 | ||||||
|
|
||||||
| 지역 서버의 이중화 대상 테이블의 모든 데이터를 원격 서버의 대응하는 테이블의 데이터와 일치시키기 위해 수행하는 작업. 데이터의 동기화만 진행하고 더이상 이중화를 수행하지 않는다. | ||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. SYNC ONLY 옵션으로 이중화를 시작할 때 보인다고 하는게 좋을 것 같습니다. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 확인했습니다. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "보여진다"는 영어는 괜찮은데, 한국어는 사용하기 조금 어색해 보입니다. 아래 내용 한번 참고하세요. SYNC: 2 SYNC_ONLY: 3 There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
확인했습니다. 수정하겠습니다. |
||||||
|
|
||||||
| - SYNC RUN : 4 | ||||||
|
|
||||||
| - SYNC END : 5 | ||||||
| - SYNC END : 5 | ||||||
|
|
||||||
| - RECOVERY from Replication : 6 | ||||||
| 현재 SYNC RUN 과 SYNC END 는 사용되지 않는다. | ||||||
|
|
||||||
| - OFFLINE: 7 | ||||||
| - RECOVERY from Replication : 6 | ||||||
|
|
||||||
| - PARALLEL: 8 | ||||||
| 이 값은 송신 쓰레드가 다른 서버에서 손상된 데이터를 복원하기 위해 실행중임을 나타낸다. | ||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 아래 의미가 맞는지요? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 네 맞습니다 There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 확인 감사합니다. |
||||||
|
|
||||||
| - OFFLINE: 7 | ||||||
|
|
||||||
| 이 값은 액티브 서버가 오프라인이고 대기 서버에 로그를 적용할 때, 송신 쓰레드가 액티브 서버의 로그를 읽기 위해 실행중임을 나타낸다. | ||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "오프라인이고"라는 표현이 이해가 어려울 것 같아서 아래와 같이 바꿔 봤습니다. 그리고, 항상 대기 서버에만 로그를 적용하는 것이 아니고 이 글 자체가 송신 쓰레드에 대한 설명이므로 해당 설명은 제거했습니다. 이 값은 액티브 서버 장애시, 대기 서버에서 액티브 서버의 로그를 읽어서 전송하는 송신 쓰레드가 실행 중임을 나타낸다. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 확인했습니다. |
||||||
|
|
||||||
| - PARALLEL: 8 | ||||||
|
|
||||||
| 이 값은 이중화 대상 테이블과 관련된 XLog를 여러 송신 쓰레드가 병렬로 송신중임을 나타낸다. 이 값은 PARALLEL 옵션과 함께 EAGER 모드로 이중화를 시작할 때 보여질 수 있다. SYNC 또는 SYNC ONLY 옵션과 함께 이중화를 시작할 때 지정할 수 있는 PARALLEL 옵션과는 다르다. | ||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Eager 모드에서만 parallel이 가능하죠? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 코드 확인 시 EAGER 모드에서만 PARALLEL이 가능한 것으로 나옵니다. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 확인 감사합니다. |
||||||
|
|
||||||
| ##### NET_ERROR_FLAG | ||||||
|
|
||||||
|
|
@@ -9305,25 +9321,45 @@ Sender에게 ACK을 보내는 데 걸린 시간의 누적 값이다. | |||||
|
|
||||||
| 지역서버의 이중화 송신 쓰레드의 현재 상태를 나타낸다. | ||||||
|
|
||||||
| - 0: STOP | ||||||
| - 0: STOP | ||||||
|
|
||||||
| - 1: RUN | ||||||
| 이중화 송신 쓰레드가 정지 중인 단계. | ||||||
|
|
||||||
| - 2: RETRY | ||||||
| - 1: RUN | ||||||
|
|
||||||
| - 3: FAILBACK NORMAL | ||||||
| 이중화 송신 쓰레드가 정상 동작 중인 단계. | ||||||
|
|
||||||
| - 4: FAILBACK MASTER | ||||||
| - 2: RETRY | ||||||
|
|
||||||
| - 5: FAILBACK SLAVE | ||||||
| 원격 서버와의 연결에 장애가 발생하여 재시도를 하는 단계. | ||||||
|
|
||||||
| - 6: SYNC | ||||||
| - 3: FAILBACK NORMAL | ||||||
|
|
||||||
| - 7: FAILBACK EAGER | ||||||
| 증분 동기화를 완료 하거나 건너뛴 후, Eager 모드 이중화가 정상적으로 시작되기 전에, 장애 시간 동안 서버 B에서 서버 A로 전송하지 못했던 트랜잭션 로그에 대한 데이터를 동기화한다. 장애로 인해 전송하지 못했던 로그를 전송할 때에는, 이중화가 Lazy 모드로 전환하여 동작하며, 로그를 모두 전송하여 이중화 갭이 없어지면, 다시 Eager 모드로 전환하여 이중화가 시작된다. | ||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 위에서 3가지 상태를 설명하셨는데, 전체를 다 포함하는지요? 아니면 그 중 어느 특정 상태인지요? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 확인 결과 STOP과 RETRY는 전체 다 포함하는 것으로 보이고, RUN의 경우는 조금 더 조사를 해보고 다시 코멘트 달겠습니다. 현재는 PARALLEL 이 아닌 경우 SENDER RUN 이 붙는 것으로 확인은 되는데 정확한 설명을 위해 조금 더 조사하겠습니다. |
||||||
|
|
||||||
| - 8: FAILBACK FLUSH | ||||||
| - 4: FAILBACK MASTER | ||||||
|
|
||||||
| - 9: IDLE | ||||||
| 증분 동기화 시, 두 서버 중 SYS_REPLICATIONS_ 메타 테이블의 REMOTE_FAULT_DETECT_TIME 컬럼 값이 더 늦은 서버가 MASTER 서버가 된다. 이 때 나타나는 값이다. MASTER의 이중화 송신자는 SLAVE가 요청한 데이터를 전송해주는 역할을 한다. | ||||||
|
|
||||||
| - 5: FAILBACK SLAVE | ||||||
|
|
||||||
| 증분 동기화 시, 두 서버 중 SYS_REPLICATIONS_ 메타 테이블의 REMOTE_FAULT_DETECT_TIME 컬럼 값이 더 빠른 서버가 SLAVE 서버가 된다. 이 때 나타나는 값이다. SLAVE의 이중화 송신자는 재시작 SN부터 자신의 트랜잭션 로그를 분석하여 MASTER 와 다를 수 있는 데이터를 결정하고, MASTER 로부터 해당 데이터를 가져와서 동기화를 수행한다. | ||||||
|
|
||||||
| - 6: SYNC | ||||||
|
|
||||||
| 지역 서버에 있는 이중화 대상 테이블의 모든 레코드를 원격 서버로 전송해서 동기화 한 후에 현재 로그부터 이중화를 진행한다. | ||||||
|
|
||||||
| - 7: FAILBACK EAGER | ||||||
|
|
||||||
| FAILBACK 과정 중 생긴 이중화 갭을 없애기 위해 EAGER 모드로 이중화를 수행하는 단계. | ||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. STATUS 컬럼이니 단계 보다는 상태라는 단어가 더 적합해 보입니다.
Suggested change
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 현재 버그를 김진아님께서 가져가셨습니다. 추가 사항은 김진아님께서 담당해주실 예정입니다. 리뷰해주셔서 정말 감사드립니다. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
넵~수고 많으셨습니다. |
||||||
|
|
||||||
| - 8: FAILBACK FLUSH | ||||||
|
|
||||||
| 송신 쓰레드가 FAILBACK 과정의 마지막을 처리하는 단계. | ||||||
|
|
||||||
| - 9: IDLE | ||||||
|
|
||||||
| 송신 쓰레드가 FAILBACK을 마치고 SLEEP하는 단계. | ||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. FAILBACK FLUSH -> IDLE만 상태 전환이 가능한지요? 아니면, 다른 상태에서 IDLE로 상태 전환도 가능한지 궁금합니다. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. replicateLogFiles 함수에서 Sender Thread에서 직접 보낼 로그들이 존재하지 않을 경우에도 IDLE로 상태가 변경됩니다. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 기록해주신 부연 설명에 따르면 "FAILBACK을 마치고"는 SLEEP으로 전환되는 여러 케이스 중 한 가지일 것 같습니다. "송신 쓰레드가 처리할 로그가 없는 상태"라고 하는 게 더 정확하지 않을까 합니다. |
||||||
|
|
||||||
| ##### SENDER_IP | ||||||
|
|
||||||
|
|
||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
START_FLAG가 BIGINT형인데, 이름: 숫자 형태가 아니라 숫자: 이름 순으로 쓰는 게 보기에 자연스럽지 않을까 합니다. STATUS 컬럼 설명은 숫자: 이름 형태로 되어 있습니다.
그리고 이름이 의미하는 것이 옵션이지 아니면 내부적으로 사용하는 상수인지요? 정의가 안 되어 있는 것 같아 궁금합니다.
V$REPGAP에도 동일한 형태로 작성되어 있습니다.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
REPGAP도 같이 숫자 : 이름 형태로 수정하겠습니다.
내부 상수로 앞에 RP_ 가 붙은 채로 사용되고 있습니다.
rp.h 헤더파일을 확인하시면 enum으로 다음과 같이 정의되어 있습니다.
typedef enum RP_SENDER_TYPE
{
RP_NORMAL = 0,
RP_QUICK,
RP_SYNC,
RP_SYNC_ONLY,
RP_RECOVERY, //PROJ-1608 recovery from replication
RP_OFFLINE, //PROJ-1915 off-line replicator
RP_PARALLEL
} RP_SENDER_TYPE;
typedef enum RP_SENDER_STATUS
{
RP_SENDER_STOP = 0,
RP_SENDER_SYNC,
RP_SENDER_FAILBACK_NORMAL,
RP_SENDER_FAILBACK_MASTER,
RP_SENDER_FAILBACK_SLAVE,
RP_SENDER_RUN,
RP_SENDER_FAILBACK_EAGER, /* 여기부터는 Eager replication이 동작하는 status를 기술*/
RP_SENDER_FLUSH_FAILBACK,
RP_SENDER_IDLE,
RP_SENDER_RETRY
} RP_SENDER_STATUS;