DB Backup & Restore - Heeyoung-Ahn/MariaDB-with-Excel-VBA GitHub Wiki

Official Documentation


Backup

  • 문법
    mysqldump -u계정명 -p비밀번호 백업대상데이터베이스명 > 저장할파일경로와 이름

    • Stored Routine포함: --routines
    • Event 포함: --events
  • Command Prompt 실행

  • MariaDB\bin으로 이동
    cd C:\Program Files\MariaDB 10.4\bin\

  • 전체 데이터베이스 백업
    mysqldump --routines --events -u root -p 비밀번호 --all-databases > C:\newface\DB\backup\yyyymmdd.sql
    mysqldump --routines --events -uroot -p --all-databases > "C:\01 newface\20240412.sql"

    • 경로에 공백이 포함되면 경로를 큰 따옴표로 감싸줘야 함
  • 특정 데이터베이스 백업(테이블만)
    mysqldump -u root -p 비밀번호 db_name > C:\newface\DB\backup\yyyymmdd.sql

  • 중요!! 백업하려는 뷰에 오류가 있으면 오류가 발생된 뷰 앞까지만 백업이 실행됨

  • 백업을 스케줄 걸어서 진행하는 경우 백업 파일의 사이즈를 살펴서 오류로 인해 백업이 안되는 일이 없도록 해야 함


Restore

  • 문법
    mysql -u 계정명 -p 비밀번호 복구대상데이터베이스명 < 저장한파일경로와 이름
    • 저장한 파일에 있는 테이블과 동일한 이름의 복구대상 데이터베이스의 테이블은 초기화됨
    • 저장한 파일에 없는 복구대상 데이터베이스의 테이블은 그대로 남아 있게 됨
  • Command Prompt 실행
  • MariaDB\bin으로 이동
    cd C:\Program Files\MariaDB 10.4\bin\
  • 전체 데이터베이스 복구
    mysql -uroot -p비밀번호 > C:\newface\DB\backup\yyyymmdd.sql
  • 특정 데이터베이스 복구
    mysql -uroot -p비밀번호 db_name > C:\newface\DB\backup\yyyymmdd.sql

백업 자동화

  • bat파일 작성: 인코딩은 ANSI로(한글 인식문제)
@echo off

set HOUR=%time:~0,2%
set MINUTE=%time:~3,2%
set SECOND=%time:~6,2%

echo Running dump...
"C:\Program Files\MariaDB 10.4\bin\"mysqldump --routines --events -u계정명 -p비밀번호 --all-databases --result-file="D:\%DATE% %HOUR%시 %MINUTE%분 %SECOND%초.sql"
echo Done!
  • bat파일을 특정 디렉토리에 저장
  • 작업 스케줄러에 작업 등록
    • 기본 작업 만들기
    • 이름 및 설명 작성
    • 작업 주기: 매일
    • 시작 시간
    • 프로그램 시작: bat파일 선택
  • 참조: https://writingdeveloper.tistory.com/287