YOJM의 모든 글

MySQL 바이너리 로그 남기기

MySQL에서 바이너리 로그를 남기면 MySQL에서 발생하는 모든 쿼리가 기록으로 남는다.

 

이 로그는 my.cnf에서log-bin=mysql-bin 을 주석처리하거나
시작 명령어에서 사용을 안하게 하지 않으면 로그를 지속적으로 쌓는다.

 

바이너리 로그는 특성상 용량을 많이 차지하게 되므로 주기적으로 로그를 삭제해야 용량 부족을 면할 수 있다.

 

1. 현재의 로그 리스트는 mysql 에서 명령어로 확인 할 수 있다.
mysql> show binary logs;
mysql> show master logs;

 

2. 바이너리 로그를 삭제할 때는
mysql> PURGE MASTER LOGS TO ‘mysql-bin.000001’;

특정 일자이전의 기록을 삭제할 때는
mysql> PURGE BINARY LOGS BEFORE ‘2010-01-01 00:00:00’;

 

3. 바이너리에 제한을 주고싶다면 my.cnf 에서 옵션을 수정하면된다.

binlog_cache_size = 50M # binlog cache 사이즈
max_binlog_size = 500M # bin로그 maximum 사이즈
expire_logs_days = 3 # 로그 만료기간(최근 3일간 로그를 기록)

PHP Fatal error: Allowed memory size of 000000 bytes exhausted (tried to allocate 32 bytes) in /path/my/php/file.php on line 0

 

말 그대로 허용된 메모리를 초과했다는 에러입니다.

 

하나의 파일에서 할당 받을 수 있는 메모리는 /etc/php.ini (기본 경로) 파일에 저장되어있습니다.

 

memory_limit 의 값을 수정해서 에러를 방지 할 수 있는데요.

 

메모리를 계속 올려도 위 에러가 발생한다면 코드상에 문제가 있을 가능성이 높습니다.

 

그리고 memory_limit 값을 수정하면 웹데몬을 재시작 해줘야 합니다.

(ex. Service httpd restart)

 

혹은 다음 코드를 파일에 넣어서 해당 php 에서의 제한을 임시로 풀 수도 있습니다.

ini_set(“memory_limit” , -1);

-1은 무제한을 의미합니다.

 

(memory_limit X 1024^2 = allow memory size of 0000000)