개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.05.04 00:22

mysql binlog 설정에 대한 질문

목록
  • DDD전문가 5일 전 2025.05.04 00:22
  • 30
    1
제가 mysql binlog 설정을 할 때 --binlog-do-db 옵션을 사용하여 특정 데이터베이스의 로그를 생성하려고 하는데, 이 옵션을 사용하면 모든 데이터베이스의 트랜잭션을 로그에 기록하지는 않는다는 것을 알았습니다.

그렇다면, --binlog-do-db 옵션을 사용하여 특정 데이터베이스의 로그를 생성하면, 해당 데이터베이스 외의 데이터베이스의 트랜잭션은 로그에 기록되지 않는다는 뜻인가요?

또한, 만약 --binlog-do-db 옵션을 사용하지 않고 binlog 파일을 생성하고, 그 후에 특정 데이터베이스의 트랜잭션만 로그에 기록하고 싶다면 어떻게 해야 하나요?

    댓글목록

    profile_image
    나우호스팅  5일 전



    --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

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 17,796건 / 93 페이지

검색

게시물 검색