Mysqldump를 사용하여 MySQL 데이터베이스 백업 및 복구 방법

Mysqldump를 사용하여 MySQL 데이터베이스 백업 및 복구 방법

2022-05-17 last update

9 minutes reading mariadb mysql backup mysqldump
이 강좌는 mysqldump 유틸리티를 사용하여 명령줄에서 MysQL 또는MariaDB 데이터베이스를 백업하고 복구하는 방법을 소개합니다.mysqldump 실용 프로그램이 만든 백업 파일은 기본적으로 SQL 문구로 원시 데이터베이스를 다시 만드는 데 사용할 수 있다.mysqldump 명령은 CSV 및 XML 형식의 파일을 생성할 수도 있습니다.mysqldump 유틸리티를 사용하여 MySQL 데이터베이스를 다른 MySQL 서버로 전송할 수 있습니다.데이터베이스를 백업하지 않으면 소프트웨어 오류나 하드디스크 고장으로 인해 재난적인 결과를 초래할 수 있다.많은 시간과 좌절을 줄일 수 있도록 MySQL 데이터베이스를 정기적으로 백업하는 것을 강력히 권장합니다.

Mysqldump 명령 구문

mysqldump 명령을 어떻게 사용하는지 토론하기 전에 기본 문법을 되돌아봅시다.mysqldump 실용 프로그램 표현식은 다음과 같은 형식을 사용합니다.
mysqldump [options] > file.sql
  • -mysqldump options
  • options-(저장(백업) 파일
  • 은 mysqldump 명령을 사용하려면 MysQL 서버가 방문하여 실행해야 합니다.

    단일 MySQL 데이터베이스 백업

    mysqldump 도구에서 가장 흔히 볼 수 있는 용례는 단일 데이터베이스를 백업하는 것이다.예를 들어 사용자file.sql를 사용하여 database_name라는 데이터베이스 백업을 만들고 root라는 파일에 저장하려면 다음 명령을 실행할 수 있습니다.
    mysqldump -u root -p database_name > database_name.sql
    시스템은 루트 암호를 입력하라는 메시지를 표시합니다.인증에 성공하면 덤프 프로세스가 시작됩니다.데이터베이스 크기에 따라 이 과정은 약간의 시간이 필요할 수 있다.내보내기에 사용된 동일한 사용자로 로그인하고 암호가 필요하지 않은 경우 database_name.sql-u 옵션을 생략할 수 있습니다.
    mysqldump database_name > database_name.sql

    여러 MySQL 데이터베이스 백업

    명령을 사용하여 여러 MySQL 데이터베이스를 백업하려면 -p 선택 항목을 사용하고 백업할 데이터베이스 목록을 사용해야 합니다.각 데이터베이스 이름은 공백으로 구분해야 합니다.
    mysqldump -u root -p --databases database_name_a database_name_b > databases_a_b.sql
    위의 명령은 두 개의 데이터베이스를 포함하는 저장 파일을 만들 것이다.

    모든 MySQL 데이터베이스 백업

    --database 옵션을 사용하여 모든 MySQL 데이터베이스를 백업합니다.
    mysqldump -u root -p --all-databases > all_databases.sql
    이전 예시와 같이 위의 명령은 모든 데이터베이스를 포함하는 덤프 파일을 만듭니다.

    모든 MySQL 데이터베이스를 별도의 파일로 백업

    유틸리티--all-databases는 모든 데이터베이스를 별도의 파일로 백업하는 옵션을 제공하지 않지만, 간단한bash mysqldump loop 기능을 통해 이 기능을 구현할 수 있습니다.
    :
    for DB in $(mysql -e 'show databases' -s --skip-column-names); do
        mysqldump $DB > "$DB.sql";
    done
    
    위의 명령은 데이터베이스 이름을 파일 이름으로 하고 각 데이터베이스에 별도의 덤프 파일을 생성합니다.

    압축된 MySQL 데이터베이스 백업 만들기

    데이터베이스 크기가 매우 크면 출력을 압축하는 것이 가장 좋다.이를 위해 파이프를 통해 출력을 FOR 로 전송하기만 하면 된다.
    그리고 다음과 같은 파일로 리디렉션합니다.
    mysqldump database_name | gzip > database_name.sql.gz

    타임 스탬프가 있는 백업 만들기

    같은 위치에 여러 개의 백업을 보관하려면 현재 백업을 추가할 수 있습니다date.
    백업 파일 이름: (adsbyGoogle=window.adsbyGoogle |||[]).추진({});
    mysqldump  database_name > database_name-$(date +%Y%m%d).sql
    위의 명령은 다음 형식의 파일gzip

    MySQL 덤프 복구

    을 만듭니다. database_name-20180617.sql 도구를 사용하여 MySQL 덤프를 복구할 수 있습니다.명령의 일반 구문은 다음과 같습니다.
    mysql  database_name < file.sql
    대부분의 경우 create a database
    가져오다.만약 데이터베이스가 이미 존재한다면, 우선 그것을 삭제해야 한다.다음 예에서 첫 번째 명령은 mysql라는 데이터베이스를 만들고 덤프database_name를 가져옵니다.
    mysql -u root -p -e "create database database_name";mysql -u root -p database_name < database_name.sql

    전체 MySQL 덤프에서 단일 MySQL 데이터베이스 복원

    database_name.sql 옵션을 사용하여 모든 데이터베이스를 백업하고 여러 데이터베이스를 포함하는 예비 파일에서 단일 데이터베이스를 복원하려면 -all-databases 옵션을 사용하십시오.
    mysql --one-database database_name < all_databases.sql

    MySQL 데이터베이스를 내보내고 가져오려면 명령 하나만

    한 데이터베이스에서 덤프 파일을 만들고 백업을 다른 MySQL 데이터베이스로 가져옵니다.
    mysqldump -u root -p database_name | mysql -h remote_host -u root -p remote_database_name
    위의 명령을 사용하여 파이프를 통해 원격 호스트의 MySQL 클라이언트로 출력하고 --one-database 라는 데이터베이스로 가져올 수 있습니다.이 명령을 실행하기 전에 원격 서버에 이 데이터베이스가 이미 존재하는지 확인하십시오.

    Cron을 사용한 백업 자동화

    데이터베이스를 자동으로 백업하는 과정은 cron job 데이터베이스를 만드는 것과 마찬가지로 간단합니다.
    지정한 시간에 mysqldump 명령을 실행합니다.cronjob을 사용하여 MySQL 데이터베이스의 자동 백업을 설정하려면 다음과 같은 절차를 실행하십시오:
  • 사용자 홈 디렉터리에 remote_database_name라는 파일을 만듭니다:
    sudo nano ~/.my.cnf
    다음 텍스트를 복사하여 붙여넣습니다.내 거.cnf 파일.
    [client]
    user = dbuser
    password = dbpasswd
    데이터베이스 사용자와 사용자 비밀번호로 바꾸는 것을 잊지 마세요.my.cnfdbuser.
  • 제한permissions
    사용자 액세스 자격 증명 파일만 허용:
    chmod 600 ~/.my.cnf
  • Create a directory
    백업을 저장하려면:
    mkdir ~/db_backups
  • 사용자crontab 파일을 엽니다.
    crontab -e
    다음cron 작업을 추가합니다. 이 작업은 매일 새벽 3시에 데이터베이스 이름dbpasswd의 백업을 만듭니다.
    0 3 * * * /usr/bin/mysqldump -u dbuser mydb > /home/username/db_backups/mydb-$(date +\%Y\%m\%d).sql
    실제 사용자 이름으로 바꾸는 것을 잊지 마세요mydb.우리는 또한 백분호username를 피했다. 왜냐하면 이것은crontab에서 특수한 의미를 가지기 때문이다.
  • 30일이 넘는 백업을 삭제하기 위해 다른cronjob을 만들 수 있습니다.
    find /path/to/backups -type f -name "*.sql" -mtime +30 -delete
    
    물론 백업 위치와 파일 이름에 따라 명령을 조정해야 합니다.find 명령에 대한 더 많은 정보를 얻으려면 저희 How to Find Files in Linux Using the Command Line를 보십시오
    가이드

    결론

    본 강좌는 기본 지식만 소개하지만, mysqldump 실용 프로그램을 명령줄에서 MySQL 데이터베이스를 만들고 복구하는 방법을 배우고 싶은 모든 사람들에게 이 강좌는 좋은 출발점이 되어야 한다.MySQL 사용에 대한 자세한 내용은 명령줄에서 확인하십시오How to manage MySQL user accounts and databases.
    가이드how to reset a MySQL root password에 대한 강좌도 보실 수 있습니다.
    잊어버릴까봐.질문이나 피드백이 있으면 언제든지 댓글을 달아주세요.