개성있는 개발자 되기

Binary Log(binlog) 사용하기 본문

DataBase/MySql

Binary Log(binlog) 사용하기

정몽실이 2020. 3. 25. 19:21

Binlog : 서버 내에서 발생되는 모든 변경내욕이 기록되는 파일

  - PIT(시점복구)와 리플리케이션을 위해 활용된다.

  - 미세하지만 IO 부담을 가중시킨다.

 


빈로그 활성화 여부 확인

mysql> show variables like 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| binlog_format | MIXED |
+---------------+-------+

 

빈로그 포맷

MySQL 5.7.6 까지는 기본값이 statement 이고 그 이후 버전부터는 row 가 기본값이다. (예외적으로 클러스터는 mix)

빈로그 포맷은 동적변수이므로 DB가 가동중일때도 set 으로 변경할 수 있지만 리플리케이션일 경우에는 마스터/슬레이브를 내리고 변경하는게 좋다.


- statement :

쿼리문으로 기록되기 때문에 용량을 적게 차지하고 버전특성을 타지 않는다. 

하지만 복구시 일관된 데이터에 대한 보장이 적으며(sysdate()와 now()의 다른 결과등..)

쿼리기반이기 때문에 복구(동기화)시 굉장히 느려질 수 있다.

 

- row :

statement 형식과 반대 개념으로 쿼리문이 아닌 변경된 데이터 기반으로 기록된다.

장단점 역시 statement 과 정반대로 용량이 커지고 복구시 일관성을 보장받을수 있으며 빠른 복구(동기화)가 가능하다.

 

- mixed :

statement 와 row 방식의 장점을 취합한 형태로 기본적으로 statement 방식을 취하나 필요에 따라(일관성 보장등..) row 방식으로 기록한다.

 

데이터 일관성을 위해 mixed 나 row 방식을 선택하는게 백번 맘 편하다.

 

빈로그 원격저장

 

mysqlbinlog> --read-from-remote-server --raw --stop-never --host=192.168.0.100 \
--user=root --password=pwpw mysqld-bin.000001

 

--read-from-remote-server 

 

빈로그를 원격에서 저장하기 위한 핵심옵션으로 이 옵션이 사용되면 당연히

--host(DB주소), --user(접속계정), --password(패스워드), --port(접속포트) 등의 옵션도 함께 사용해야한다.

 

 

--raw 

 

이 옵션이 없으면 원격서버에서 빈로그를 텍스트 형태로 가져오게 된다. 일반적으로 실서버에 있는 빈로그 그대로를 백업하기 원하기 때문에 이 옵션을 반드시 쓰도록 한다.

 

 

--stop-never

 

빈로그가 존재하는 실서버의 디비가 내려가거나 커넥션이 끊어지지 않는한 용량이 커지건 파일이 바뀌건 죽지않고

계속 빈로그를 가져오게 된다.

 

 

--stop-never-slave-server-id

 

stop-never 옵션을 쓰게 되면 백업서버가 리플리케이션의 슬레이브처럼 동작하게 된다.

리플리케이션 내에서는 server_id가 중복될수 없기때문에 해당 옵션으로 server_id를 지정해주는 것이다. 물론 생략도 가능하며 생략하면 65535로 셋팅된다.

 

 

--result-file

 

가져온 빈로그 파일명에 Prefix를 붙여준다. 

--result-file=orig-binlog- 라면 orig-binlog-mysqld-bin.000001 처럼 저장된다.

 

원본과 동일하게 저장하고자 하면 제일 끝에 "/" 를 포함해 디렉토리명까지만 지정해주면 된다.

--result-file=/bin_backup_dir/

 

 

--to-last-log

 

이 옵션을 쓰면 지정된 빈로그 뿐만 아니라 그 이후에 생성된 모든 빈로그를 가지고 온다. --stop-never 옵션을 쓰면

자동으로 활성화되는 옵션이므로 굳이 지정해 쓸 일은 없다.



출처: https://systemv.tistory.com/52 [SystemV's]

'DataBase > MySql' 카테고리의 다른 글

MySql 원격지, 계정 변경 접속  (0) 2020.03.26
MySql 콘솔에서 접속하는 방법  (0) 2020.03.25
Comments