MySQL에서 복제시 binlog_format 에 따라 동기화가 되지 않을 수 도 있다.
5.1 버전대에 추가된 기능으로 기존에는 Statement로 동작한다.
binlog_format 는 설정 파일 혹은 글로벌 변수로 변경 가능하고 값은
Statement, Row, MIXED 세가지가 들어갈 수 있는데
Statement 는 마스터에 들어온 쿼리를 쿼리문으로 기록하기 때문에
- 쿼리는 짧고 데이터 변경은 많은 종류가 많이 실행될 때 유리할 수 있으며
- 일반적으로 로그 양이 작고(master - slave간 회선이 느릴때 유리)
- 나중에 열어봤을때 알아보기가 상대적으로 쉽다 (일부 쿼리만 사용 가능)
- 버젼이 서로 달라도 사용 가능
-*항상 일관된 값이 나오지 않는 함수의 실행을 보장 할 수 없다. ( NOW()는 정상 작동하지만 SYSDATE()는 동기화 되지않을 수 있다.)
- 상대적으로 느리다(보통 쿼리의 실행이 데이터 변경보다 크기 때문에)
ROW는 변경된 데이터를 기록하는 방식으로
Statement 와 장단점이 반대라 볼 수 있으며 SYSDATE() 의 경우도 일관되게 복제된다.
MIXED는 서로의 장점을 취하는 방법으로
기본적으로는 Statement 필요에 따라 ROW로 기록하는 방식
운영 중간에 설정을 바꿀 수 있으나
임시테이블 사용중, 트리거나 프로시저에서 변경 시도, NDB가 활성화 되어 있을때는
변경이 불가하다.
잘 모르겠으면 MIXED나 ROW로 설정하는 편이 동기화 오류로 고생하는 일이 없을것 같다.
master와 slave의 연결을 끊었다 이었다 하는 식으로 데이터 동기화를 지연 시키면서
now() 함수와 sysdate() 함수로 데이터를 넣을 때 결과다
왼쪽 master 오른쪽 slave
1 = MIXED, now()
2 = MIXED, sysdate()
3 = MIXED, sysdate()
4 = Statement , sysdate()
5 = Statement , now()
6 = ROW, now()
7 = ROW, sysdate()
http://www.mysqlkorea.com/sub.html?mcode=develop&scode=51ha&m_no=22902&cat1=1106&cat2=1287&cat3=1377&lang=k
'프로그래밍 > Mysql\정보' 카테고리의 다른 글
[MySQL] Stored Procedure 와 Compile (1) | 2014.10.23 |
---|---|
[Mysql/MariaDB] Percona Xtrabackup 으로 백업/복원하기 (전체,디비별,테이블별) (0) | 2014.05.22 |