?

단축키

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루트 암호를 잊어 버린 경우 재설정하는 방법에 대한 자습서도 확인할 수 있습니다.

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

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


  1. 웹호스팅 innoDB 메모리 설정 방법

    Category웹호스팅 조회638 좋아요0
    <CPU 사용률이 오르다가 innoDB 메모리 설정 후 안정을 찾은 모습> 출처 : [mysql]innodb 메모리별 설정값 예시 (tistory.com) 대형 커뮤니티 사이트를 통큰 서버에 입주시켰습니다. 입주시키자마다 속도 저하로 이용할 수 없는 지경에 ㅠㅠ 다행히 innoDB 메...
    Read More
  2. 1. 버그 패치하는 방법 2. memcached 설치방법 3. redis 설치 방법 sudo apt install redis-server sudo systemctl restart apache2 # Apache를 사용하는 경우 sudo systemctl restart nginx # Nginx를 사용하는 경우 3.2.서버시작 sudo systemctl start redis...

    웹호스팅 HestiaCP 사용방법

    Category웹호스팅 조회636 좋아요0
    1. 버그 패치하는 방법 2. memcached 설치방법 3. redis 설치 방법 sudo apt install redis-server sudo systemctl restart apache2 # Apache를 사용하는 경우 sudo systemctl restart nginx # Nginx를 사용하는 경우 3.2.서버시작 sudo systemctl start redis...
    Read More
  3. 웹호스팅 HestiaCP 설치방법

    Category웹호스팅 조회631 좋아요0
    1. Install https://hestiacp.com/install.html 원하는 옵션을 선택 후에 ①을 복사해서 서버에 다운로드합니다. ② 를 복사해서 설치를 진행합니다. 쉽죠? 2. HESTIACP DOC https://hestiacp.com/docs/introduction/getting-started.html 3. HestiaCP Forum htt...
    Read More
  4. https://www.manualfactory.net/13581#i-3 사용자 조회모든 사용자를 출력합니다.# cat /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:...

    리눅스 리눅스 / 사용자 / 사용자 조회, 사용자 추가, 사용자 삭제, 사용자 수정

    Category리눅스 조회690 좋아요0
    https://www.manualfactory.net/13581#i-3 사용자 조회모든 사용자를 출력합니다.# cat /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:...
    Read More
  5. PHP htaccess injection cheat sheet .htaccess: php_value auto_append_file .htaccess #<?php phpinfo(); 출처 https://github.com/sektioneins/pcc/wiki/PHP-htaccess-injection-cheat-sheet

    웹호스팅 웹호스팅에서 php 설정 변경하는 방법

    Category웹호스팅 조회670 좋아요0
    PHP htaccess injection cheat sheet .htaccess: php_value auto_append_file .htaccess #<?php phpinfo(); 출처 https://github.com/sektioneins/pcc/wiki/PHP-htaccess-injection-cheat-sheet
    Read More
  6. Mysql 설치후 phpMyadmin 접속할경우 아래와 같은 메시지가 보일때 조치법이 몇가지 있다. Cannot start session without errors, please check errors given in your PHP and/or webserver log file and configure your PHP installation properly. 1. php.in...

    리눅스 리스토리의 IT's/IT Story Mysql 설치후 phpMyadmin 접속 안될때 - Cannot start session

    Category리눅스 조회673 좋아요0
    Mysql 설치후 phpMyadmin 접속할경우 아래와 같은 메시지가 보일때 조치법이 몇가지 있다. Cannot start session without errors, please check errors given in your PHP and/or webserver log file and configure your PHP installation properly. 1. php.in...
    Read More
  7. https://jjeongil.tistory.com/834 https://blog.kerus.net/1645/install-php-7-4-fpm-remirepo-on-centos/

    리눅스 CentOS PHP/PHP-FPM 설치방법

    Category리눅스 조회679 좋아요0
    https://jjeongil.tistory.com/834 https://blog.kerus.net/1645/install-php-7-4-fpm-remirepo-on-centos/
    Read More
  8. 리눅스 리눅스 그룹 생성/삭제/확인/추가 - groupadd

    Category리눅스 조회686 좋아요0
    https://webdir.tistory.com/134 리눅스시스템에는 사용자를 생성하면 자동으로 사용자명과 같은 그룹이 생성됩니다. 따라서 리눅스에서는 자신의 계정 이름과 동일한 그룹에 반드시 속하게 되며, 특정 그룹을 만들어서 기존의 사용자들이 소속되게 할 수도 있...
    Read More
  9. VPS 요즘 일방문자가 5000~6000씩 찍히는데 이유를 모르겠습니다.

    CategoryVPS 조회678 좋아요0
    제가 사용하고 있는 vultr 서버 모니터인데 근래 해당 일자 서버 사용량은 크게 변동은 있어 보이진 않는데 원인을 모르겠네요. 구글애널리틱스도 보면 크게 차이는 없어 보이는데 라이믹스 통계에서만 그렇게 찍히네요. 트래픽도 크게 튀는 수준이 아니구요. ...
    Read More
  10. 1. putty, mobaxterm 등 SSH 접속프로그램을 설치한다. 2. 서버아이피, 아이디, 비밀번호로 로그인한다. 3. db를 백업한다. 3.1. 내 계정 디렉토리로 이동한다. # cd /home/USERID/ 3.2. ssh 접속프로그램에서 아래 명령어를 입력한다. # mysqldump -u아이디 -...

    웹호스팅 사이트 백업하는 방법

    Category웹호스팅 조회796 좋아요1
    1. putty, mobaxterm 등 SSH 접속프로그램을 설치한다. 2. 서버아이피, 아이디, 비밀번호로 로그인한다. 3. db를 백업한다. 3.1. 내 계정 디렉토리로 이동한다. # cd /home/USERID/ 3.2. ssh 접속프로그램에서 아래 명령어를 입력한다. # mysqldump -u아이디 -...
    Read More
  11. https://zetawiki.com/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4_tar_%ED%8A%B9%EC%A0%95%ED%8F%B4%EB%8D%94_%EC%A0%9C%EC%99%B8%ED%95%98%EA%B3%A0_%EC%95%95%EC%B6%95%ED%95%98%EA%B8%B0 https://zetawiki.com/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4_tar_%ED%8A%B9%EC%A...

    리눅스 리눅스 tar 특정폴더 제외하고 압축하기

    Category리눅스 조회917 좋아요0
    https://zetawiki.com/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4_tar_%ED%8A%B9%EC%A0%95%ED%8F%B4%EB%8D%94_%EC%A0%9C%EC%99%B8%ED%95%98%EA%B3%A0_%EC%95%95%EC%B6%95%ED%95%98%EA%B8%B0 https://zetawiki.com/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4_tar_%ED%8A%B9%EC%A...
    Read More
  12. 서비스 상태 확인, 시작, 중지, 재시작 명령어이다. CentOS (서비스명: httpd)우분투 (서비스명: apache2)명령어 종류systemctl ★★service/etc/init.d/ ★apachectlhttpd[1]아파치 상태 확인systemctl status apache2service apache2 status/etc/init.d/apache2...

    서버관리 아파치 재실행

    Category서버관리 조회849 좋아요0
    서비스 상태 확인, 시작, 중지, 재시작 명령어이다. CentOS (서비스명: httpd)우분투 (서비스명: apache2)명령어 종류systemctl ★★service/etc/init.d/ ★apachectlhttpd[1]아파치 상태 확인systemctl status apache2service apache2 status/etc/init.d/apache2...
    Read More
  13. tar -zxvf [파일명.tar.gz]

    서버관리 압축해제

    Category서버관리 조회850 좋아요0
    tar -zxvf [파일명.tar.gz]
    Read More
  14. chown -R windbamin:windbamin /home/windbamin chmod +w /home/windbamin/ ls -all /home/

    서버관리 소유자 권한 설정

    Category서버관리 조회883 좋아요0
    chown -R windbamin:windbamin /home/windbamin chmod +w /home/windbamin/ ls -all /home/
    Read More
  15. ./add.sh windbamin windbamin.com www.windbamin.com

    서버관리 신규 유저 생성

    Category서버관리 조회880 좋아요0
    ./add.sh windbamin windbamin.com www.windbamin.com
    Read More
  16. https://to-dy.tistory.com/58 https://to-dy.tistory.com/58 http://blog.naver.com/PostView.nhn?blogId=tollu09&logNo=220845838393 http://blog.naver.com/PostView.nhn?blogId=tollu09&logNo=220845838393 https://inma.tistory.com/98 https://inma.tist...

    서버관리 Mysql 비밀번호 변경하는 방법

    Category서버관리 조회676 좋아요0
    https://to-dy.tistory.com/58 https://to-dy.tistory.com/58 http://blog.naver.com/PostView.nhn?blogId=tollu09&logNo=220845838393 http://blog.naver.com/PostView.nhn?blogId=tollu09&logNo=220845838393 https://inma.tistory.com/98 https://inma.tist...
    Read More
  17. https://linuxize.com/post/how-to-back-up-and-restore-mysql-databases-with-mysqldump/ https://linuxize.com/post/how-to-back-up-and-restore-mysql-databases-with-mysqldump/ 이 튜토리얼에서는 mysqldump유틸리티를 사용하여 명령줄에서 MySQL또는 Mar...

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

    조회675 좋아요0
    https://linuxize.com/post/how-to-back-up-and-restore-mysql-databases-with-mysqldump/ https://linuxize.com/post/how-to-back-up-and-restore-mysql-databases-with-mysqldump/ 이 튜토리얼에서는 mysqldump유틸리티를 사용하여 명령줄에서 MySQL또는 Mar...
    Read More
  18. root@q381-0663:/# mysqldump bash: mysqldump: command not found 오랜만에 백업해보려니 mysqldump 명령어가 실행되지 않더군요.. $ which mysqldump 위 명령어가 mysqldump를 찾는 명령어인데, 해보니 없는 거 같더군요. 아마 일전에 php7.4 업데이트할 때 ...

    서버관리 mysqldump not found

    Category서버관리 조회1057 좋아요0
    root@q381-0663:/# mysqldump bash: mysqldump: command not found 오랜만에 백업해보려니 mysqldump 명령어가 실행되지 않더군요.. $ which mysqldump 위 명령어가 mysqldump를 찾는 명령어인데, 해보니 없는 거 같더군요. 아마 일전에 php7.4 업데이트할 때 ...
    Read More
  19. 비밀글입니다.

    서버관리 신규 사용자 생성

    Category서버관리 조회0 좋아요0
    비밀글입니다.
    Read More
  20. 서버이전순서 서버 이전은 아래와 같은 순서로 진행됩니다. (도메인 네임서버 설정이 끝난 경우) 1. DB 백업 2. 압축 3. 데이터 전송 4. 압축 해제 5. DB 복원 6. 도메인 설정 변경 1. DB 백업 $ mysqldump -u아이디 -p DB명 > 백업파일명.sql $ 데이터베이스...

    서버관리 서버 이전

    서버이전순서 서버 이전은 아래와 같은 순서로 진행됩니다. (도메인 네임서버 설정이 끝난 경우) 1. DB 백업 2. 압축 3. 데이터 전송 4. 압축 해제 5. DB 복원 6. 도메인 설정 변경 1. DB 백업 $ mysqldump -u아이디 -p DB명 > 백업파일명.sql $ 데이터베이스...
    Read More
Board Pagination Prev 1 2 Next
/ 2