Mysql의 binlog와 Redolog
1798 단어 Mysql
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 (InnoDB)
메모리에 업데이트할 데이터가 있는지 조회하고 존재하면 되돌려주고 존재하지 않으면 디스크에서 메모리로 읽고 동기화한 후 되돌려준다Mysql
Mysql
데이터를 얻은 후 업데이트가 필요한 데이터를 업데이트하여 데이터 엔진으로 전송Mysql (InnoDB)
데이터를 받은 후 Redolog 로그에 기록하고 이 데이터의 상태를 prepare
로 표시하여 Mysql
업무는 언제든지commitMysql
binlog 로그에 기록하고 이 데이터의 업데이트 기록을 기록하며 데이터를 데이터 엔진에 보내고 업무를 제출한다Mysql (InnoDB)
본 데이터의 상태를commit이 제출됨으로 표시하고 한가할 때 디스크에 데이터를 동기화합니다이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
자바 my sql 에 이모 티 콘 저장my sql 에 emoji 표정 을 저장 하려 면 utf8mb 4 문자 집합 을 사용 해 야 합 니 다. 이것 은 4 바이트 저장 입 니 다. 최소 지원 버 전 은 5.5.3 + 입 니 다. 그렇지 않 으 면 새로운...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.