MySQL 서버가 시작되면 작업에 대한 명령줄을 확인하여 로그인을 수행해야 하는지 확인하고 적절한 로그 파일을 엽니다(그렇다면). 서버에서 두 가지 주요 유형의 로그 파일을 생성하도록 할 수 있습니다. 일반 로그 파일. 클라이언트 연결, 쿼리 및 기타 다양한 이벤트를 보고합니다. MySQL 서버가 시작되면 작업에 대한 명령줄을 확인하여 로그인을 수행해야 하는지 확인하고 적절한 로그 파일을 엽니다(그렇다면). 서버에서 두 가지 주요 유형의 로그 파일을 생성하도록 할 수 있습니다. 일반 로그 파일. 클라이언트 연결, 쿼리 및 기타 다양한 이벤트를 보고합니다. 누가, 어디서, 무엇을 하고 있는지 등 서버 활동을 추적하는 데 유용합니다.
변경 로그
데이터베이스를 수정하는 쿼리를 보고합니다. 이 문맥에서 "업데이트"라는 용어는 UPDATE 문뿐만 아니라 데이터베이스를 수정하는 모든 문을 의미합니다. 이러한 이유로 DELETE, INSERT, REPLACE, CREATE TABLE, DROP TABLE, GRANT 및 REVOKE에 대한 쿼리 레코드가 포함됩니다. 업데이트 로그의 내용은 mysql에 대한 입력으로 사용되는 SQL 문 형식으로 작성됩니다. 충돌 후 테이블을 복원해야 하는 경우 업데이트 로그 및 백업이 유용합니다. 백업 파일에서 데이터베이스를 복원한 다음 업데이트 로그를 mysql에 대한 입력으로 사용하여 해당 백업 파일 이후에 데이터베이스를 수정한 쿼리를 다시 실행할 수 있습니다. 이렇게 하면 테이블이 충돌 당시의 상태로 복원됩니다.
로그를 유효하게 만들려면 --log 옵션을 사용하여 일반 로깅을 활성화하고 --log-update 옵션을 사용하여 업데이트 로깅을 활성화합니다. 이러한 옵션은 mysqld.safe_mysqld 또는 mysql.server의 명령줄이나 옵션의 [mysqld] 그룹에서 지정할 수 있습니다. 로깅이 활성화되면 기본적으로 로그 파일이 서버의 데이터 디렉터리에 기록됩니다.
저자는 MySQL을 처음 사용할 때 두 로그 유형을 모두 유효하게 사용할 것을 권장합니다. MySQL을 어느 정도 경험한 후에는 업데이트 로그를 사용하여 디스크 공간 요구 사항을 줄이고 싶은 유혹을 느낄 수 있습니다.
로깅을 활성화한 후에는 특히 서버가 많은 수의 쿼리를 처리하는 경우 디스크를 많은 양의 로그 정보로 채우지 마십시오. 로그 파일 회전 및 만료 시간을 사용하면 최신 로그를 온라인에서 사용할 수 있도록 유지하면서 로그 파일이 무제한으로 커지는 것을 방지할 수 있습니다.
로그 파일 회전은 다음과 같이 작동합니다. 로그 파일 이름이 log라고 가정합니다. 첫 번째 루프에서는 로그 이름이 log 0으로 바뀌고 서버가 새 로그 파일을 쓰기 시작합니다. 두 번째 루프에서는 log.0의 이름이 log.1로 바뀌고, log의 이름이 log.0으로 바뀌며, 서버는 또 다른 새 로그 파일을 쓰기 시작합니다. 이런 방식으로 각 파일은 log 0, log 1 등의 이름을 순환합니다. 파일이 루프의 특정 지점에 도달하면 종료될 수 있습니다.
로그 및 LOAD DATA 문 업데이트
일반적으로 서버는 LOAD DATE 문을 실행할 때 로드된 행 내용이 아닌 문 자체만 업데이트 로그에 기록합니다. 즉, 데이터 파일에 계속 액세스할 수 없으면 업데이트 로그를 사용한 복구 작업이 완료되지 않습니다. 이를 안전하게 하려면 데이터베이스가 백업되지 않은 경우 데이터 파일을 삭제하면 안 됩니다.
시스템 백업
업데이트 로그가 항상 데이터베이스 복구에 적합한 것은 아니며, 디스크 충돌로 인해 업데이트 로그가 손실되는 경우 정기적인 파일 시스템 백업을 수행해야 합니다. 데이터베이스가 저장된 디스크가 아닌 다른 디스크에 업데이트 로그를 기록하는 것도 좋은 생각입니다.
예를 들어 로그를 매일 순환하고 일주일 동안 로그를 보관하려는 경우 log.0을 log.6으로 유지하면 됩니다. 다음 루프에서는 log.5가 log.6을 덮어쓰고 새로운 log.6이 되도록 함으로써 log.6이 종료됩니다. 이렇게 하면 디스크 제한을 초과하지 않고 많은 로그를 유지할 수 있습니다.
로그 회전 빈도와 유지되는 오래된 로그 수는 서버 사용량(활성 서버가 더 많은 로그 메시지를 생성함)과 오래된 로그에 할당하려는 디스크 공간의 양에 따라 달라집니다. 일반 로그를 교체할 때 mysqla d - min 플러시-logs 명령을 사용하여 서버에 현재 로그 파일을 닫고 새 로그 파일을 열도록 지시할 수 있습니다.
정기적인 로그 교체를 수행하는 스크립트는 다음과 같습니다(로그 기본 이름, 데이터 디렉터리 위치, 유지하려는 이전 로그 수를 반영하도록 수정할 수 있음).
로그 파일이 해당 사용자에게 속하는지 확인하려면 mysqladm 계정에서 이 스크립트를 실행하는 것이 가장 좋습니다. .my.cnf 옵션 파일에 연결 매개변수를 그대로 두면 스크립트의 mysqladmin 명령에 매개변수를 지정할 필요가 없습니다. 이렇게 하지 않으면 새로 고침 명령만 실행하는 제한된 사용자를 만들 수 있습니다. 그러면 위험을 최소화하면서 이 사용자의 비밀번호를 스크립트에 배치할 수 있습니다. 이를 수행하려면 사용자에게 RELOAD 권한만 있어야 합니다. 예를 들어, 사용자 플러시를 호출하고 비밀번호 fl us h pass를 할당하려면 다음 GRANT 문을 사용합니다.
*.*에 대한 재로드 권한을 플러시@localhost 로 식별하여 "flushpass"로 지정
스크립트에서 새로 고침 작업을 수행해야 하는 경우 다음을 수행할 수 있습니다.
mysqladmin -ufush -pflushpass 플러시 -로그
Linux에서는 스크립트를 직접 작성하는 것보다 logrotate를 사용하여 MySQL 배포 패키지에 mysql-log-rotate 스크립트를 설치하는 것이 더 좋습니다. mysql-log-rotate가 RPM 파일을 통해 자동으로 설치되지 않으면 MySQL 배포 패키지의 support-files 디렉터리를 확인해야 합니다.
서버가 업데이트 로그 파일을 처리하는 방식의 차이로 인해 업데이트 로그와 일반 로그의 로그 파일 순환이 약간 다릅니다. 확장자(예: 업데이트) 없이 업데이트 로그 파일 이름을 사용하도록 서버에 지시하면 서버는 자동으로 시퀀스 업데이트 날짜, update.002 등을 사용하여 업데이트 로그 파일 이름을 생성합니다. 서버가 시작되고 로그가 새로 고쳐지면 새로운 업데이트 로그가 생성됩니다. 파일 이름을 지정하지 않고 업데이트 로깅을 활성화하면 서버는 호스트 이름을 기본 이름으로 사용하여 일련의 업데이트 로그 파일을 생성합니다.
이런 방식으로 생성된 일련의 파일을 종료할 때 이름보다는 해당 파일의 기간(마지막으로 수정된 시간)을 기준으로 종료할 수 있습니다. 그 이유는 플러시 로그 명령이 언제 실행될지 모르기 때문에 특정 기간에 고정된 개수의 업데이트 로그가 생성될 것이라고 기대할 수 없기 때문입니다. 예를 들어, mysqldump를 사용하여 테이블을 백업하고 --flush-logs 옵션을 사용하는 경우 해당 업데이트 로그 이름 순서로 새 파일이 백업할 때마다 생성됩니다.
서버에서 자동으로 생성된 순차적 파일 이름이 있는 업데이트 로그의 경우 로그 기간 기반 종료 스크립트는 다음과 같습니다.
find 명령은 수정된 지 일주일 이상 된 업데이트 로그 파일을 찾아 삭제합니다. 잘못된 업데이트로 지정된 테이블이 삭제되는 것을 방지하려면 -name 매개변수를 사용하여 숫자 파일 확장자를 테스트하는 것이 중요합니다.
원하는 경우 고정된 업데이트 로그 파일 이름을 사용하도록 서버에 지시할 수도 있습니다. 이는 일반 로그와 동일한 방식으로 업데이트 로그를 순환하려는 경우에 유용합니다. 고정된 업데이트 로그 이름을 사용하려면 확장명이 포함된 이름을 지정하세요. 예를 들어, --log-update=update.log 옵션으로 서버를 시작하여 up date .log라는 이름을 사용할 수 있습니다. 서버는 플러시-logs 명령을 수신하면 항상 종료되고 로그를 열지만, 매번 새 파일을 생성하지는 않습니다. 이 경우 업데이트 로그의 로그 순환 스크립트와 일반 로그의 스크립트는 순환의 파일 기본 이름만 다릅니다.
로그 회전 및 종료를 자동화하려면 cron을 사용하십시오. 일반 로그 및 업데이트 로그 교체용 스크립트는 교체 로그 및 교체 - 업데이트 - 로그이며 /usr/user/mysql/bin 디렉토리에 설치되어 있다고 가정합니다. mysqlladm 사용자로 등록한 후 다음 명령을 사용하여 mysqladm 사용자의 crontab 파일을 편집합니다: % crontab -e
이 명령을 사용하면 현재 crontab 파일의 백업을 편집할 수 있습니다(이전에 수행되지 않은 경우 비어 있을 수 있음). 다음과 같이 파일에 줄을 추가합니다.
이 항목은 cron에게 매일 아침 4시에 이 스크립트를 실행하도록 지시합니다. 필요에 따라 시간을 변경하거나 예약할 수 있습니다. 지침은 crontab 매뉴얼 페이지를 참조하십시오.
-