인프런 커뮤니티 질문&답변

하하호호님의 프로필 이미지
하하호호

작성한 질문수

카프카 완벽 가이드 - 커넥트(Connect) 편

Debezium CDC Source Connector 소개

안녕 하세요

해결된 질문

작성

·

350

0

안녕 하세요 궁금한 사항이 있어서 문의드립니다.

Debezium CDC source connector 강의 내용중

redo 로그에 commit되지 않은 데이터도 쓰여진다고 말씀해주셨는데요

저보다 당연히 잘 아시겠지만 제가 알기로는 commit하면 버퍼에 쌓이고 디스크에는 반영되지 않고 그 이후에 주기적으로

redo log에 쌓이는 것으로 알고 있습니다

즉 commit이 되어야 redo log에 쌓이는 걸로 알고 있는데 제가 잘못알고 있는걸까요?

 

감사합니다.

답변 2

1

권 철민님의 프로필 이미지
권 철민
지식공유자

안녕하십니까,

일반적으로 DML이 발생하면 commit이 되거나 commit이 되지 않아도 redo log buffer(redo log 파일이 아니라 메모리)에는 변경 데이터가 쌓이게 됩니다.

commit이 되면 해당 데이터는 반드시 redo log 파일에 저장이 됩니다. 그런데, redo log 파일에 commit 되지 않은 데이터가 저장되어야 하는 경우가 있는데, 바로 redo log buffer 에 데이터가 일정 수준 가득 차서 이를 비워 줘야 할 때가 있습니다. 이런 경우 commit이 되지 않은 redo log buffer의 데이터도 redo log 파일에 저장되어야 합니다.

감사합니다.

하하호호님의 프로필 이미지
하하호호
질문자

감사합니다!!

0

하하호호님의 프로필 이미지
하하호호
질문자

안녕 하세요! 감사드립니다!

그럼 redo log와 binlog의 관계는 어떻게 되는걸까요?

binlog는 명령에 대한 히스토리가 남는걸로 알고 있는데요.

binlog도 commit된 것만 쌓이는걸로 알고 있는데

해당 내용이 인터넷에 검색했을 땐 대부분 얕은 정보뿐이여서요!

 

덕분에 디비에 대한 지식도 쌓이고 있습니다 감사합니다!!

권 철민님의 프로필 이미지
권 철민
지식공유자

아, 이 댓글이 있는걸 깜빡 잊고 있었군요.

mysql 은 다른 DB와 다르게 DB내에 별도의 Storage engine이 있습니다. 그러니까 db엔진과 storage engine이 별도로 있습니다.

binlog는 db엔진단에서 생성되며, redo log는 storage 엔진단에서 생성됩니다.

binlog역시 DML발생 시 redo log와 비슷한 역할을 수행하지만, db자체내의 모든 변경에 대한 데이터를 다 가지고, 내부적인 복구의 역할을 한다기 보다는 DB 복제에 주로 사용됩니다.

binlog는 redo log와는 달리 논리적으로 복제 DB에서 SQL로 전환 될 수 있는 형태로 저장됩니다. 또한 redo log와 다르게 Commit과 같은 Transaction이 종료 될 때에만 레코드가 생성됩니다.

하하호호님의 프로필 이미지
하하호호

작성한 질문수

질문하기