MySQL 의 innodb 를 어떻게 구분 합 니까?flush_log_at_trx_commt 와 syncbinlog

innodb_flush_log_at_trx_commt 와 syncbinlog  두 매개 변 수 는 MySQL 디스크 기록 정책 과 데이터 안전성 을 제어 하 는 관건 적 인 매개 변수 입 니 다.
show variables like "innodb_flush_log_at_trx_commit";

innodb_flush_log_at_trx_commit:
0:mysql 의 mainthread 는 1 초 에 엔진 log buffer 에 저 장 된 redo 로 그 를 log file 에 기록 하고 파일 시스템 의 sync 작업 을 호출 하여 로 그 를 디스크 에 새로 고 칩 니 다.
1:트 랜 잭 션 을 제출 할 때마다 엔진 log buffer 에 저 장 된 redo 로 그 를 log file 에 기록 하고 파일 시스템 의 sync 작업 을 호출 하여 로 그 를 디스크 에 새로 고 칩 니 다.
2:트 랜 잭 션 을 제출 할 때마다 엔진 log buffer 에 저 장 된 redo 로 그 를 log file 에 기록 하고 엔진 을 저장 하 는 mainthread 는 초당 로 그 를 디스크 에 새로 고 칩 니 다.
show variables like "sync_binlog";

sync_binlog:
0:메모리 엔진 은 binlog 의 리 셋 을 하지 않 고 운영 체제 의 파일 시스템 에서 캐 시 리 셋 을 제어 합 니 다.
1:업 무 를 제출 할 때마다 저장 엔진 이 파일 시스템 의 sync 작업 을 호출 하여 캐 시 새로 고침 을 합 니 다.이런 방식 이 가장 안전 하지만 성능 이 낮 습 니 다.
n:제출 한 로그 그룹=n 일 때 저장 엔진 이 파일 시스템 의 sync 작업 을 호출 하여 캐 시 새로 고침 을 합 니 다.
sync_binlog=0 또는 syncbinlog 가 1 이상 이면 디스크 에 동기 화 되 지 않 고 트 랜 잭 션 이 제출 됩 니 다.따라서 전원 고장 이나 운영 체제 가 붕 괴 될 때 서버 가 바 이 너 리 로그 에 사 무 를 동기 화하 지 않 겠 다 고 약속 한 것 일 수 있 습 니 다.따라서 이 작업 을 복구 하 는 루틴 을 실행 할 수 없습니다.바 이 너 리 로 그 를 잃 어 버 릴 것 입 니 다.
innodb_flush_log_at_trx_commt 와 syncbinlog 는 모두 1 일 때 가장 안전 합 니 다.my sqld 서비스 가 붕괴 되 거나 서버 호스트 crash 의 경우 binary log 는 가장 많은 문구 나 사 무 를 잃 어 버 릴 수 있 습 니 다.그러나 물고기 와 곰 발바닥 을 동시에 얻 을 수 없다.쌍 1,1 은 빈번 한 io 조작 을 초래 할 수 있 기 때문에 이 모델 도 가장 느 린 방식 이다.
실제 사용 할 때 업무 측 이 성능 과 안전성 에 대한 수 요 를 고려 하고 종합 적 으로 설정 하 며 두 개의 매개 변 수 를 고려 해 야 한다.위의 그림 은 우리 온라인 기계 의 매개 변수 이다.
이상 은 MySQL 의 innodb 를 어떻게 구분 하 는 지 입 니 다.flush_log_at_trx_commt 와 syncbinlog 의 자세 한 내용,MySQL 에 대한 innodbflush_log_at_trx_commt 와 syncbinlog 의 자 료 는 우리 의 다른 관련 문장 을 주목 하 세 요!

좋은 웹페이지 즐겨찾기