Loading...
MySQL 9.5 Reference Manual 9.5의 9.5.1 Point-in-Time Recovery Using Binary Log의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
이 절에서는 binary log를 사용하여 시점 단위(point-in-time) 복구를 수행하는 일반적인 개념을 설명합니다. 다음 절인
Section 9.5.2, “Point-in-Time Recovery Using Event Positions”에서 예제를 사용하여 이 작업을 자세히 설명합니다.
참고
이 절과 다음 절의 많은 예제에서는
mysql 클라이언트를 사용하여
mysqlbinlog가 생성한 binary log 출력 결과를 처리합니다. binary log에 \0 (널) 문자가 포함되어 있으면,
--binary-mode
옵션을 사용하여 호출하지 않는 한 그 출력 결과는
mysql에 의해 파싱될 수 없습니다.
시점 단위 복구를 위한 정보의 소스는 전체 백업 작업 이후에 생성된 binary log 파일들의 집합입니다. 따라서 서버를 특정 시점으로 복구할 수 있으려면 해당 서버에서 binary logging이 활성화되어 있어야 하며, 이것은 MySQL 9.5의 기본 설정입니다
(see Section 7.4.4, “The Binary Log”).
binary log에서 데이터를 복원하려면 현재 binary log 파일들의 이름과 위치를 알아야 합니다. 기본적으로 서버는 데이터 디렉터리에 binary log 파일을 생성하지만,
--log-bin 옵션을 사용하여 다른 위치에 파일을 저장할 경로 이름을 지정할 수 있습니다. 모든 binary log 파일의 목록을 보려면 다음 구문을 사용하십시오:
1mysql> SHOW BINARY LOGS;
현재 binary log 파일의 이름을 알아내려면 다음 구문을 실행하십시오:
1mysql> SHOW BINARY LOG STATUS;
mysqlbinlog 유틸리티는 binary log 파일의 이벤트를 바이너리 형식에서 텍스트로 변환하여 볼 수 있거나 적용할 수 있게 해줍니다.
mysqlbinlog에는 이벤트 시간 또는 로그 내 이벤트의 위치를 기준으로 binary log의 일부 구간을 선택하기 위한 옵션이 있습니다. 자세한 내용은
Section 6.6.9, “mysqlbinlog — Utility for Processing Binary Log Files”을 참조하십시오.
binary log에서 이벤트를 적용하면 해당 이벤트가 나타내는 데이터 변경이 다시 실행됩니다. 이를 통해 특정 기간의 데이터 변경을 복구할 수 있습니다. binary log에서 이벤트를 적용하려면
mysqlbinlog 출력 결과를
mysql 클라이언트로 처리하십시오:
1$> mysqlbinlog binlog_files | mysql -u root -p
binary log 파일이 암호화되어 있는 경우,
mysqlbinlog은 앞의 예제처럼 직접 읽을 수 없지만,
--read-from-remote-server
(-R) 옵션을 사용하여 서버로부터 읽을 수 있습니다. 예를 들면 다음과 같습니다:
1$> mysqlbinlog --read-from-remote-server --host=host_name --port=3306 --user=root --password --ssl-mode=required binlog_files | mysql -u root -p
여기에서 --ssl-mode=required 옵션은 binary log 파일에서 전송되는 데이터가
mysqlbinlog로 암호화되지 않은 형식으로 전달되기 때문에, 전송 중에 보호되도록 하기 위해 사용되었습니다.
주의
VERIFY_CA와
VERIFY_IDENTITY는 SSL 모드에서
REQUIRED보다 더 나은 선택입니다. 이들은 중간자(man-in-the-middle) 공격을 방지하는 데 도움이 됩니다. 이러한 설정 중 하나를 구현하려면 우선 서버의 CA 인증서가 해당 환경에서 이를 사용하는 모든 클라이언트에게 안정적으로 제공될 수 있도록 해야 하며, 그렇지 않으면 가용성 문제가 발생합니다. 자세한 내용은 Command Options for Encrypted Connections를 참조하십시오.
로그 내용을 확인하는 것은 이벤트를 실행하기 전에 부분적인 로그 내용을 선택하기 위해 이벤트 시간이나 위치를 결정해야 할 때 유용합니다. 로그에서 이벤트를 확인하려면
mysqlbinlog 출력 결과를 페이징 프로그램으로 보내십시오:
1$> mysqlbinlog binlog_files | more
또는 출력 결과를 파일로 저장한 뒤 텍스트 편집기에서 파일을 확인할 수도 있습니다:
1$> mysqlbinlog binlog_files > tmpfile 2$> ... edit tmpfile ...
파일을 편집한 후에는 다음과 같이 내용을 적용하십시오:
1$> mysql -u root -p < tmpfile
MySQL 서버에 적용해야 할 binary log가 둘 이상 있는 경우, 처리하려는 모든 binary log 파일의 내용을 단일 연결을 사용하여 적용하십시오. 다음은 그 한 가지 방법입니다:
1$> mysqlbinlog binlog.000001 binlog.000002 | mysql -u root -p
또 다른 접근 방식은 전체 로그를 단일 파일에 기록한 다음, 그 파일을 처리하는 것입니다:
1$> mysqlbinlog binlog.000001 > /tmp/statements.sql 2$> mysqlbinlog binlog.000002 >> /tmp/statements.sql 3$> mysql -u root -p -e "source /tmp/statements.sql"
9.5 Point-in-Time (Incremental) Recovery
9.5.2 Point-in-Time Recovery Using Event Positions