Mysql의 binlog와 Redolog

1798 단어 Mysql
참고 자료:Mysql 실전 45강
Mysql의 binlog와 Redolog
Mysql에는 두 개의 중요한 로그가 있습니다.binlog와redolog입니다.데이터 복구 및 백업에 중요한 역할을 합니다.
binlog
binlog는 Mysql에서 서버 층의 데이터 기록 로그입니다. 모든 데이터의 논리적 조작을 기록합니다.예를 들어 "id = 2의 줄 a 필드가 1에서 2로 바뀌었습니다. 이 기록은 디스크에 추가된 형식으로 저장됩니다.
redolog
redolog는 InnoDB의 저장 엔진에서 이루어진 것으로 Mysql의 원생이 아니다. 즉, 다른 저장 엔진(MysIAM,memory)은 Redolog가 존재하지 않을 수도 있다.InnoDB의 저장 엔진에서 데이터는 저장하는 과정에서 직접 디스크에 떨어지는 것이 아니라 매번 데이터 조작이 디스크에서 추출되면 Mysql의 사용 효율을 크게 떨어뜨릴 수 있다.따라서 InnoDB는 효율을 높이기 위해 Redolog를 중간 매체로 사용하여 일부 데이터를 저장한다.물론 Redolog의 실현은 메모리를 바탕으로 하는 것이기 때문에 충분히 빠를 수 있고 Redolog의 공간은 유한하다. Binlog처럼 로그 데이터를 추가하는 것이 아니라 순환하는 데이터 구조로 메모리에 저장된다.
데이터를 저장하는 과정에서 Redolog의 메모리가 가득 차면 일부 데이터를 먼저 디스크에 저장한 다음에 메모리에 기록합니다.데이터베이스가 비어 있을 때, Redolog의 로그를 모두 디스크에 동기화합니다.
데이터 업데이트 프로세스(데이터 엔진이 InnoDB인 경우)
업데이트 T set c = 2 where id = 1과 같은 간단한 문장으로 Mysql 내부에서 크게 다음과 같은 몇 가지 단계로 나뉜다.
  • 클라이언트가 Mysql 서버에 링크를 발동
  • Mysql 계정과 비밀번호를 검증하고 권한을 부여
  • 진입Mysql , 업데이트 작업은 업데이트 테이블의 조회 캐시를 모두 삭제
  • Mysql 문장에 대한 문법과 문법 분석
  • Mysql 문장을 최적화한다. 예를 들어 어떤 인덱스를 명중시키고 테이블 조작 최적화 등
  • Mysql 문장을 실행하고 이 때 테이블을 열고 데이터 엔진의 데이터 인터페이스를 호출하여 데이터를 업데이트
  • Mysql (InnoDB) 메모리에 업데이트할 데이터가 있는지 조회하고 존재하면 되돌려주고 존재하지 않으면 디스크에서 메모리로 읽고 동기화한 후 되돌려준다Mysql
  • Mysql 데이터를 얻은 후 업데이트가 필요한 데이터를 업데이트하여 데이터 엔진으로 전송
  • Mysql (InnoDB) 데이터를 받은 후 Redolog 로그에 기록하고 이 데이터의 상태를 prepare로 표시하여 Mysql 업무는 언제든지commit
  • Mysql binlog 로그에 기록하고 이 데이터의 업데이트 기록을 기록하며 데이터를 데이터 엔진에 보내고 업무를 제출한다
  • Mysql (InnoDB) 본 데이터의 상태를commit이 제출됨으로 표시하고 한가할 때 디스크에 데이터를 동기화합니다
  • 좋은 웹페이지 즐겨찾기