4,476,387 th visitor since 2017.2.1 ( Today : 7112 )
Programming
No. 811
Name. swindler
Subject. Innodb 최적화
Main Cate. MySQL
Sub Cate.
Date. 2019-06-10 10:17
Hit. 3310 (211.192.242.143)
File.
sync_binlog

sync_binlog는 몇번의 트랜잭션마다 바이너리 로그를 디스크에 동기화를 설정하는 매개 변수이다. AUTO COMMIT 모드는 몇개의 명령문마다 동기화 할 것인지를 결정한다. 디스크에 동기화에는 fdatasync()를 사용한다. 디스크로의 동기화는 바이너리 로그의 안전성을 높이지만, 동기화 횟수가 많으면 성능이 떨어진다. 그러나 바이너리 로그의 손상, 특히 다수의 슬레이브를 사용하여 부하 분산을 수행하는 경우 아주 중요한 문제가 되기 때문에 최대한 피하고 싶을 것이다.

sync_binlog가 1로 설정되면 MySQL은 특별한 동작을한다. 트랜잭션이 InnoDB만 이루어진 경우, 2 단계 커밋을 사용하여 바이너리 로그가 InnoDB의 로그와 동기화하게되는 것이다.
이는 트랜잭션 파일 시스템(ext3, zfs 등)과 함게 사용하고 바이너리 로그를 데이터 디렉토리와는 다른 디스크에 저장하게 해서 안정성을 높일 수는 있다.

성능상 대부분 0으로 셋팅해서 운영한다. 그러면 sync_binlog = 0에서는 페일 오버시에 바이너리 로그가 손실되므로 복제시에 데이터 손실이 있을 수 있다.



innodb_flush_log_at_trx_commit

InnoDB 로그 파일에 대한 쓰기시의 움직임을 조정하는 매개 변수이다. 가능한 값은 0,1,2의 3 종류로, 각각 다음과 같은 의미가있다.

0 : 로그 파일에 기록을 1초마다, 디스크의 플래시를 1초마다 실행한다. 커밋 때 아무것도하지 않는다.

1 : 트랜잭션이 커밋 할 때마다 (커밋 완료하여 클라이언트에 응답을 반환하기 전에) 디스크에 기록하고 플래시를 실행한다. ACID의 D=Durability를 보장 할 수 있다.

2 : 커밋 시 로그 파일에 기록하고, 디스크 플래시는 1 초에 한 번이다.
기본값은 1이며, 어지간한 일이 없는 한 기본적으로 사용되는 것을 권장한다. 또한 0보다 2 편이 낫다.

[바로가기 링크] : http://coolx.net/cboard/develop/811



swindler show variables like 'sync_binlog'; 2020-01-21
swindler show variables like 'innodb_flush_log_at_trx_commit'; 2020-03-20
swindler set global sync_binlog=0; 2020-03-20
Name
Password
Comment
Copyright © 1999-2017, swindler. All rights reserved. 367,611 visitor ( 1999.1.8-2004.5.26 ), 2,405,771 ( -2017.01.31)

  2HLAB   2HLAB_Blog   RedToolBox   Omil   Omil_Blog