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
options
-mysqldump옵션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덤프를 복원할 수 있습니다.mysql
tool. 명령의 일반 구문은 다음과 같습니다.
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데이터베이스의 자동 백업을 설정하려면 다음 단계를 수행하십시오.
이름이 지정된 파일 생성
.my.cnf
사용자 홈 디렉토리에서 다음 작업을 수행합니다.sudo nano ~/.my.cnf
다음 텍스트를 복사하여.my.cnf파일에 붙여 넣으십시오.
[client] user = dbuser password = dbpasswd
잊지 말고 교체하십시오.
dbuser
그리고dbpasswd
데이터베이스 사용자 및 사용자 암호를 사용합니다.사용자만 액세스 할 수 있도록 자격 증명 파일의 사용 권한을 제한합니다.
chmod 600 ~/.my.cnf
백업을 저장할 디렉터리를 생성하십시오.
mkdir ~/db_backups
사용자 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루트 암호를 잊어 버린 경우 재설정하는 방법에 대한 자습서도 확인할 수 있습니다.
질문이나 의견이 있으시면 언제든지 의견을 남겨 주십시오.