MYSQL 백업 데이터 지우 기

3810 단어 mysql정시백업
배경
프로젝트 가 필요 하기 때문에 매달 역사 저장량 데 이 터 는 압축 파일 과 백업 작업 을 해 야 하고 일부 로그 시트 는 내 역 필드 를 제거 하여 my sql 데이터베이스 디스크 에 공간 을 절약 해 야 합 니 다.이 데 이 터 를 정리 하기 위해 서 는 정시 작업 이 필요 하 다.
2|0 기술 선택
  • 자바 는 Quartz/Timer 를 바탕 으로 정시 작업 체 제 를 사용 하여 정시 작업 을 작성 할 수 있 으 며 자바 프로그램 에 의존 해 야 합 니 다
  • Linux 에서 Crontab 를 기반 으로 cron 표현 식 을 기반 으로 정시 작업 문 서 를 구축 하려 면 반드시 해당 하 는 스 크 립 트 를 작성 해 야 합 니 다.그러나 이 스 크 립 트 에 서 는 데이터 베 이 스 를 조작 해 야 하기 때문에 반드시 명문 암호 와 같은 데이터 가 언급 되 어 안전 하지 않 습 니 다
  • MYSQL 데이터 베 이 스 를 사용 하고 MYSQL 은 정시 작업 을 지원 하기 때문에 MYSQL 자체 정시 작업 을 사용 할 수 있 습 니 다
  • 3|0 구체 적 인 조작
    3|1 mysql 설정
    정시 작업 이 옵션 은 my sql 의 기본 설정 이 닫 혔 기 때문에 안전 합 니 다.이 옵션 이 열 렸 는 지 확인 해 보 겠 습 니 다.
    
    show variables like '%event_scheduler%';
    Off 옵션 으로 표시 되면 다음 과 같은 두 가지 방법 으로 수정 할 수 있 습 니 다.
    1.구문 방식(현재 시 작 된 인 스 턴 스 가 유효 합 니 다.재 부팅 후 유효 하지 않 습 니 다)
    
    set global event_scheduler=1;
    2.my.cnf(windows 아래 my.ini)설정 에 다음 옵션 추가
    
    [mysqld]
    event_scheduler=ON 

    그리고 이 를 저장 한 후 my sql 을 다시 시작 하면 됩 니 다.
    3|2 sql 작성
    저장 프로시저 만 들 기(procedure)[선택 가능:간단 한 sql 이면 정시 작업 에서 지정 할 수 있 습 니 다]
    저장 프로 세 스:저장 프로 세 스,저장 프로그램(영어:Stored Procedure)이 라 고도 부 르 며,데이터베이스 에 복잡 한 프로그램 을 저장 하여 외부 프로그램 이 호출 할 수 있 도록 하 는 데이터베이스 대상 으로 데이터베이스 의 함수 나 서브루틴 으로 볼 수 있 습 니 다.
    
    create PROCEDURE sched_clean() --  
    BEGIN
    --     
    DECLARE begin_time BIGINT DEFAULT UNIX_TIMESTAMP(DATE_SUB(CURRENT_DATE(),interval 31 DAY))*1000;
    DECLARE end_time BIGINT DEFAULT UNIX_TIMESTAMP(DATE_SUB(CURRENT_DATE(),interval 30 DAY))*1000;
    --     
    UPDATE test_table SET rule_cost=null WHERE start_time>begin_time and start_time<end_time;
    END
    정시 작업 생 성
    저장 과정 을 만 든 후에 우 리 는 정기 적 으로 이 저장 과정 을 호출 할 수 있다.
    
    CREATE EVENT `demo`.`day_of_clean_event`
    ON SCHEDULE EVERY '1' DAY STARTS DATE_ADD(DATE_ADD(CURDATE(), INTERVAL 1 DAY), INTERVAL 1 HOUR)
    ON completion preserve disable
    DO call sched_clean();
    코드 설명:
  • CREATE EVENT demo.day_of_clean_이벤트 데모 데이터베이스 에 day 라 는 이름 을 만 듭 니 다.of_clean_이벤트 이벤트
    4.567917.창설 시간 정시 주기 와 시작 시간 을 나타 낸다.이 곳 은 내일 1 시 부터 매일 한 번 이 임 무 를 수행한다
  • 세 번 째 줄 은 생 성 후 효력 이 발생 하지 않 음 을 나타 낸다
  • 4.567917.네 번 째 줄 은 실행 해 야 할 임 무 를 표시 합 니 다.
    관련 검색
    이 컴퓨터 의 모든 이벤트 조회
    
    SELECT event_name,event_definition,interval_value,interval_field,status FROM information_schema.EVENTS;
    생 성 된 이벤트 열기/닫 기
    
    alter event event_name on completion preserve enable;//      
    alter event event_name on completion preserve disable;//      
    4|0 주의 할 점
    전체 매개 변수 가 정시 작업 을 시작 하 는 것 을 설정 하지 않 으 면 이미 만 든 이 벤트 를 실 행 했 지만 informationschema.EVENTS 표 에서 기록 이 조회 되 지 않 습 니 다.
    4|1 흔히 볼 수 있 는 주기 정시 규칙
    ① 주기 실행 C 키워드 EVERY
    단위:second,minute,hour,day,week(주),quarter(분기),month,year,예 를 들 어:
    
    on schedule every 1 second //    1 
    on schedule every 2 minute //      1 
    on schedule every 3 day // 3   1 
    ② 특정한 시간 에 C 키워드 AT 를 실행한다.예 를 들 어:
    
    on schedule at current_timestamp()+interval 5 day // 5    
    on schedule at current_timestamp()+interval 10 minute // 10     
    on schedule at '2016-10-01 21:50:00' //  2016 10 1 ,  9 50  
    ③ 특정한 시간 대 에 C 키워드 STARTS ENDS 를 실행한다.예 를 들 어:
    
    on schedule every 1 day starts current_timestamp()+interval 5 day ends current_timestamp()+interval 1 month // 5                
    on schedule every 1 day ends current_timestamp()+interval 5 day //        ,  5 
    총결산
    이상 은 이 글 의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가 치 를 가지 기 를 바 랍 니 다.여러분 의 저희 에 대한 지지 에 감 사 드 립 니 다.

    좋은 웹페이지 즐겨찾기