기계적 인조 인간

mysqldump를 사용하여 mysql 데이터베이스를 백업 및 복원하는 방법

MySQL Tutorial 63 - If Function

MySQL Tutorial 63 - If Function

차례:

Anonim

이 학습서는 mysqldump 유틸리티를 사용하여 명령 행에서 MySQL 또는 MariaDB 데이터베이스를 백업 및 복원하는 방법을 설명합니다.

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

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

Mysqldump 명령 구문

mysqldump 명령을 사용하는 방법을 시작하기 전에 기본 구문을 검토하십시오.

mysqldump 유틸리티 표현식은 다음 형식을 따릅니다.

mysqldump > file.sql

  • options file.sql 옵션 파일 file.sql 덤프 (백업) 파일

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

단일 MySQL 데이터베이스 백업

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

예를 들어, 사용자 root 사용하여 database_name이라는 database_name 의 백업을 작성하고이를 database_name.sql이라는 파일에 저장하려면 다음 명령을 실행하십시오.

mysqldump -u root -p database_name > database_name.sql

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

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 유틸리티는 모든 데이터베이스를 별도의 파일로 백업하는 옵션을 제공하지 않지만 간단한 bash FOR 루프를 사용하여 쉽게 달성 할 수 있습니다.

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 덤프를 복원 할 수 있습니다. 명령 일반 구문은 다음과 같습니다.

mysqld database_name < file.sql

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

다음 예제에서 첫 번째 명령은 database_name이라는 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 데이터베이스 복원

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 명령을 실행하는 크론 작업을 작성하는 것만 큼 간단합니다.

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

  1. 사용자 홈 디렉토리에 .my.cnf 라는 파일을 작성하십시오.

    sudo nano ~/.my.cnf

    다음 텍스트를 복사하여.my.cnf 파일에 붙여 넣습니다.

    user = dbuser password = dbpasswd

    dbuser dbpasswd 를 데이터베이스 사용자 및 사용자 비밀번호로 바꾸는 것을 잊지 마십시오.

    사용자 만이 액세스 할 수 있도록 신임 정보 파일의 권한을 제한하십시오.

    chmod 600 ~/.my.cnf

    백업을 저장할 디렉토리를 작성하십시오.

    mkdir ~/db_backups

    사용자 crontab 파일을여십시오.

    crontab -e

    매일 오전 3시에 데이터베이스 이름 mydb 의 백업을 작성하는 다음 cron 작업을 추가하십시오.

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

    사용자 이름을 실제 사용자 이름으로 바꾸는 것을 잊지 마십시오.

30 일보다 오래된 백업을 삭제하기 위해 다른 cronjob을 생성 할 수도 있습니다.

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

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

결론

이 튜토리얼은 기본 사항 만 다루지 만 mysqldump 유틸리티를 사용하여 명령 줄에서 MySQL 데이터베이스를 생성하고 복원하는 방법을 배우려는 사람에게는 좋은 출발점이 될 것입니다.

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

mysql mariadb 백업 mysqldump