?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

https://linuxize.com/post/how-to-back-up-and-restore-mysql-databases-with-mysqldump/ 

이 튜토리얼에서는 mysqldump유틸리티를 사용하여 명령줄에서 MySQL또는 MariaGB데이터베이스를 백업 및 복원하는 방법에 대해 설명합니다.

mysqldump유틸리티에서 생성한 백업 파일은 기본적으로 원래 데이터베이스를 재생성하는 데 사용할 수 있는 SQL문 세트입니다. mysqldump명령은 CSV및 XML형식으로 파일을 생성할 수도 있습니다.

또한 mysqldump유틸리티를 사용하여 MySQL데이터베이스를 다른 MySQL서버로 전송할 수도 있습니다.

데이터베이스를 백업하지 않으면 소프트웨어 버그나 하드 드라이브 오류가 발생할 수 있습니다. 많은 시간과 좌절을 줄이려면 MySQL데이터베이스를 정기적으로 백업하지 않는 것이 좋습니다.

Mysqldump명령 구문

mysqldump명령을 사용하는 방법으로 이동하기 전에 기본 구문을 검토하는 것으로 시작하겠습니다.

mysqldump유틸리티 식은 다음과 같은 형태를 취합니다.

mysqldump [options] > file.sql
복사

mysqldump명령을 사용하려면 MySQL서버에 액세스 하여 실행 중이어야 합니다.

단일 MySQL데이터베이스 백업

mysqldump도구의 가장 일반적인 사용 사례는 단일 데이터베이스를 백업하는 것이다.

예를 들어, 명명된 데이터베이스의 백업을 생성하려면 다음과 같이 하십시오.database_name사용자 사용root이름이 지정된 파일에 저장합니다.database_name.sql다음 명령을 실행합니다.

mysqldump -u root -p database_name > database_name.sql

루트 암호를 입력하라는 메시지가 표시됩니다. 인증에 성공하면 덤프 프로세스가 시작됩니다. 데이터베이스 크기에 따라 프로세스에 약간의 시간이 걸릴 수 있습니다.

내보내기를 수행하는 데 사용하는 사용자와 동일한 사용자로 로그인했으며 사용자에게 암호가 필요하지 않은 경우 다음 항목을 생략할 수 있습니다.-u그리고-p옵션:

mysqldump database_name > database_name.sql

여러 MySQL데이터베이스 백업

하나의 명령으로 여러 MySQL데이터베이스를 백업하려면--database옵션 다음에 백업할 데이터베이스 목록을 선택하십시오. 각 데이터베이스 이름은 공백으로 구분해야 합니다.

mysqldump -u root -p --databases database_name_a database_name_b > databases_a_b.sql

위 명령은 두 데이터베이스를 모두 포함하는 덤프 파일을 생성합니다.

모든 MySQL데이터베이스 백업

사용--all-databases모든 MySQL데이터베이스를 백업하는 옵션:

mysqldump -u root -p --all-databases > all_databases.sql

위의 명령은 이전 예제와 동일하게 모든 데이터베이스를 포함하는 단일 덤프 파일을 생성합니다.

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

mysqldump유틸리티는 모든 데이터베이스를 별도의 파일로 백업하는 옵션을 제공하지 않지만 간단한 루프 백업을 통해 쉽게 다음과 같은 작업을 수행할 수 있습니다.

for DB in $(mysql -e 'show databases' -s --skip-column-names); do
    mysqldump $DB > "$DB.sql";
done
복사

위 명령은 데이터베이스 이름을 파일 이름으로 사용하여 각 데이터베이스에 대해 별도의 덤프 파일을 생성합니다.

압축된 MySQL데이터베이스 백업 생성

데이터베이스 크기가 매우 크면 출력을 압축하는 것이 좋습니다. 이렇게 하려면 출력을 gzip유틸리티로 파이프 처리하고 아래와 같이 파일로 리디렉션 하면 됩니다.

mysqldump database_name | gzip > database_name.sql.gz

타임 스탬프를 사용하여

둘 이상의 백업을 동일한 위치에 유지하려면 현재 날짜를 백업 파일 이름에 추가할 수 있습니다.

mysqldump  database_name > database_name-$(date +%Y%m%d).sql

위의 명령은 다음 형식의 파일을 생성합니다.database_name-20180617.sql

MySQL덤프 복원

다음을 사용하여 MySQL덤프를 복원할 수 있습니다.mysqltool. 명령의 일반 구문은 다음과 같습니다.

mysqld  database_name < file.sql

대부분의 경우 가져올 데이터베이스를 생성해야 합니다. 데이터베이스가 이미 존재하는 경우 먼저 데이터베이스를 삭제해야 합니다.

다음 예에서는 첫번째 명령이 이름이 지정된 데이터베이스를 생성합니다.database_name그리고 나서 덤프를 가져옵니다.database_name.sql다음과 같이 입력합니다.

mysql -u root -p -e "create database database_name";mysql -u root -p database_name < database_name.sql

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

다음을 사용하여 모든 데이터베이스를 백업한 경우-all-databases여러 데이터베이스를 포함하는 백업 파일에서 단일 데이터베이스를 복원하려면--one-database옵션은 다음과 같습니다.

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클라이언트로 파이프 처리하여 이름이 지정된 데이터베이스로 가져옵니다.remote_database_name명령을 실행하기 전에 데이터베이스가 원격 서버에 이미 있는지 확인하십시오.

Cron을 통한 백업 자동화

데이터베이스 백업 프로세스를 자동화하는 것은 지정된 시간에 mysqldump명령을 실행할 cron작업을 생성하는 것만큼 간단합니다.

cronjob을 사용하여 MySQL데이터베이스의 자동 백업을 설정하려면 다음 단계를 수행하십시오.

  1. 이름이 지정된 파일 생성.my.cnf사용자 홈 디렉토리에서 다음 작업을 수행합니다.

    sudo nano ~/.my.cnf

    다음 텍스트를 복사하여.my.cnf파일에 붙여 넣으십시오.

    [client]
    user = dbuser
    password = dbpasswd
    복사

    잊지 말고 교체하십시오.dbuser그리고dbpasswd데이터베이스 사용자 및 사용자 암호를 사용합니다.

  2. 사용자만 액세스 할 수 있도록 자격 증명 파일의 사용 권한을 제한합니다.

    chmod 600 ~/.my.cnf
  3. 백업을 저장할 디렉터리를 생성하십시오.

    mkdir ~/db_backups
  4. 사용자 crontab파일을 엽니다.

    crontab -e

    데이터베이스 이름의 백업을 생성할 다음 cron작업을 추가합니다.mydb매일 오전 3시:

    0 3 * * * /usr/bin/mysqldump -u dbuser mydb > /home/username/db_backups/mydb-$(date +\%Y\%m\%d).sql

    잊지 말고 교체하십시오.username실제 사용자 이름을 사용합니다. 우리는 또한 백분율 표시를 피해 가고 있습니다.%(crontab에는 특별한 의미가 있기 때문입니다.)

또한 다른 cronjob을 생성하여 30일이 지난 백업을 삭제할 수도 있습니다.

find /path/to/backups -type f -name "*.sql" -mtime +30 -delete
복사

물론 백업 위치 및 파일 이름에 따라 명령을 조정해야 합니다. 찾기 명령에 대한 자세한 내용은 명령줄 가이드를 사용하여 Linux에서 파일을 찾는 방법을 참조하십시오.

결론

이 자습서에서는 기본적인 내용만 다루지만 mysqldump유틸리티를 사용하여 명령줄에서 MySQL데이터베이스를 만들고 복원하는 방법을 배우려는 모든 사용자에게 유용합니다.

명령줄에서 MySQL과 함께 작업하는 방법에 대해 자세히 알아보려면 MySQL사용자 계정 및 데이터베이스를 관리하는 방법 안내서를 참조하십시오.

MySQL루트 암호를 잊어 버린 경우 재설정하는 방법에 대한 자습서도 확인할 수 있습니다.

질문이나 의견이 있으시면 언제든지 의견을 남겨 주십시오.

기존대댓글
추가시작 대댓글시작
대댓글끝 추가끝


List of Articles
번호 분류 제목 조회 수 추천 수
20 리눅스 Htop (Linux Process Monitoring) 사용법 file 1651 1
19 리눅스 postfix 메일에서 queue 관리 236 0
18 리눅스 pstree 현재 사용자 프로세스 확인 284 0
17 리눅스 How to remove imagemagick from Ubuntu 16.04 (Xenial Xerus) 293 0
16 리눅스 top 에서 실행 중인 프로세스에서 어떤 파일이 사용되는지 파악하는 방법 file 124 0
15 리눅스 NGINX PHP-FPM 업데이트 및 여러 버전 동시 연동 방법 181 0
14 리눅스 Linux/Ubuntu, 용량 큰 파일/디렉토리 찾아내기. file 635 0
13 리눅스 [Laravel] 라라벨 설치하기 PHP7.0 + Nginx 5 file 356 0
12 리눅스 루분투 X61 배터리 정보 1 file 170 0
11 VPS 리노드에서 서비스 변경했습니다. (160달러 -> 10달러로) file 176 0
10 VPS Linode VPS 디스크 용량 변경 방법 file 159 0
9 VPS Linode VPS의 새로운 콘트롤 패널 file 283 0
8 VPS 각종 클라우드 VPS 서비스 비교해본 소감 455 0
7 웹호스팅 http://rael.me/support.php secret 0 0
6 기타 무료 아마존 웹 서비스, 100% 알뜰하게 사용하는 방법 167 0
5 웹호스팅 a2hosting 웹호스팅 단점/후회/불만 249 0
4 기타 해외 호스팅의 결제 및 환불 (a2hosting 환불 했습니다.) file 451 0
3 기타 해외도메인 구입 사이트 gandi.net 363 0
2 웹호스팅 [해외]a2hosting 243 0
1 VPS 국내 클라우드 서버호스팅 비교(Virtual Private Server Review) 387 0
Board Pagination Prev 1 2 Next
/ 2