반응형
    
    
    
  MySQL에서 Binary Log(binlog)를 설정하는 방법
테스트 환경
운영체제 버전
$ lsb_release -d
Description:    Ubuntu 24.04.1 LTS
MySQL 버전
$ mysqld -V
/usr/sbin/mysqld  Ver 8.0.40-0ubuntu0.24.04.1 for Linux on x86_64 ((Ubuntu))
1. Binary Log 현재 상태 확인
SQL 쿼리로 확인
SHOW VARIABLES LIKE 'log_bin%';
SHOW VARIABLES LIKE 'binlog_expire_logs_seconds';
SHOW VARIABLES LIKE 'max_binlog_size';
MySQL 설정 파일 확인
cat /etc/mysql/mysql.conf.d/mysqld.cnf
- log_bin 값이 비어 있으면 binlog가 비활성화된 상태입니다.
 
2. Binary Log 활성화(my.cnf 설정)
디렉토리 권한 확인
더보기
---
sudo mkdir -p /var/lib/mysql
sudo chown mysql:mysql /var/lib/mysql
sudo chmod 750 /var/lib/mysql
binlog는 MySQL 사용자(mysql)가 쓰기 가능해야 합니다.
---
[mysqld] 섹션에 설정 추가
vim /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
server_id = 1
# Binary Log 설정
log_bin = /var/lib/mysql/mysql-bin
log_bin_index = /var/lib/mysql/mysql-bin.index
binlog_format = ROW
binlog_expire_logs_seconds = 604800 # 7일 후 자동 삭제
max_binlog_size = 1G
sync_binlog = 1
- server_id : 고유한 서버 ID (복제 환경에서 중복되면 안 됨)
 - log_bin : binlog 파일 경로 (기본은 mysql-bin)
 - log_bin_index : binlog 인덱스 파일 경로
 - binlog_format : 로그 형식 (ROW 권장, STATEMENT, MIXED 가능)
 - binlog_expire_logs_seconds : 오래된 binlog 자동 삭제 기간 (초 단위)
 - max_binlog_size : 단일 binlog 파일의 최대 크기
 - sync_binlog : binlog 쓰기 동기화 정책[1 : 안정성 ↑ (성능 약간↓), 0 : 성능 ↑ (충돌 시 손상 위험 약간 있음)]
 
MySQL 서버 재시작
sudo systemctl restart mysql
728x90
    
    
  3. 설정 반영 확인
Binlog 설정 확인
SHOW VARIABLES LIKE 'log_bin%';
+---------------------------------+--------------------------------+
| Variable_name                   | Value                          |
+---------------------------------+--------------------------------+
| log_bin                         | ON                             |
| log_bin_basename                | /var/lib/mysql/mysql-bin       |
| log_bin_index                   | /var/lib/mysql/mysql-bin.index |
| log_bin_trust_function_creators | OFF                            |
| log_bin_use_v1_row_events       | OFF                            |
+---------------------------------+--------------------------------+
자동 삭제 주기 확인
SHOW VARIABLES LIKE 'binlog_expire_logs_seconds';
+----------------------------+--------+
| Variable_name              | Value  |
+----------------------------+--------+
| binlog_expire_logs_seconds | 604800 |
+----------------------------+--------+
파일 크기 정책 확인
SHOW VARIABLES LIKE 'max_binlog_size';
+-----------------+------------+
| Variable_name   | Value      |
+-----------------+------------+
| max_binlog_size | 1073741824 |
+-----------------+------------+
현재 활성 로그 파일 확인
SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |  9293959 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
전체 Binlog 목록 확인
SHOW BINARY LOGS;
+------------------+-----------+-----------+
| Log_name         | File_size | Encrypted |
+------------------+-----------+-----------+
| mysql-bin.000001 |   9929681 | No        |
+------------------+-----------+-----------+
4. Binary Log 로그 삭제
특정 시점까지 삭제
- mysql-bin.000012 직전까지의 로그(000011 이하)를 모두 삭제
 
PURGE BINARY LOGS TO 'mysql-bin.000012';
특정 날짜 이전 로그 삭제
- 지정한 날짜 이전의 모든 binlog 파일을 삭제
 
PURGE BINARY LOGS BEFORE '2025-11-01 00:00:00';
728x90
    
    
  반응형
    
    
    
  '리눅스' 카테고리의 다른 글
| 우분투 24.04에서 APT 저장소 변경 및 패키지 설치/삭제 방법 (0) | 2025.11.04 | 
|---|---|
| 우분투 24.04에서 Redis 클러스터를 구성하고 HAProxy + Keepalived로 고가용성을 확보하는 방법 (0) | 2025.11.04 | 
| Nginx HTTP 보안 헤더 설정 (0) | 2025.10.31 | 
| Zabbix 에이전트에서 로그인된 사용자 계정 정보를 가져오는 방법 (0) | 2025.10.31 | 
| 리눅스에서 터미널 세션을 종료하는 방법 (0) | 2025.10.29 |