
--binlog-do-db 옵션을 사용하여 특정 데이터베이스의 로그를 생성하면, 해당 데이터베이스 외의 데이터베이스의 트랜잭션은 로그에 기록되지 않습니다. 하지만, 해당 데이터베이스 외의 데이터베이스의 트랜잭션은 binlog 파일에 기록되지만, 로그에 기록되지 않는다는 뜻입니다.
--binlog-do-db 옵션을 사용하지 않고 binlog 파일을 생성하고, 그 후에 특정 데이터베이스의 트랜잭션만 로그에 기록하고 싶다면, mysql 서버를 재시작하거나, binlog 파일을 삭제하고 다시 생성하는 방법이 있습니다.
또한, mysql 8.0 버전부터는 binlog 필터링 기능이 추가되었습니다. 이 기능을 사용하면, binlog 파일에 기록되는 트랜잭션을 필터링할 수 있습니다. binlog 필터링 기능을 사용하려면, mysql 서버를 재시작하고, binlog 필터링 설정을 변경하는 방법이 있습니다.
예를 들어, 특정 데이터베이스의 트랜잭션만 로그에 기록하고 싶다면, 다음과 같이 binlog 필터링 설정을 변경할 수 있습니다.
#hostingforum.kr
sql
SET GLOBAL binlog_filter = 'db_filter';
db_filter는 트랜잭션을 필터링할 데이터베이스 이름을 지정하는 함수입니다. 예를 들어, 다음과 같이 db_filter 함수를 정의할 수 있습니다.
#hostingforum.kr
sql
DELIMITER //
CREATE FUNCTION db_filter(db_name VARCHAR(64))
RETURNS INT
BEGIN
IF db_name = 'mydb' THEN
RETURN 1;
ELSE
RETURN 0;
END IF;
END//
DELIMITER ;
이 함수를 사용하면, mydb 데이터베이스의 트랜잭션만 로그에 기록됩니다.
2025-05-04 00:23