MySQL 데이터베이스 백업 및 복원(명령줄에서)

8096 단어

지난 며칠 동안 나는 두 대의 다른 서버 사이에서 my side projects을 이전해 왔다.
이렇게 하는 동시에, 나는 MySQL 데이터베이스를 백업하고 복구하는 빠른 방법이 필요하다.가장 간단하고 효과적인 방법은 명령행을 사용하는 것이다.mysqldumpmysql 명령을 사용합니다.
PS: 때때로 나는 phpMyAdmin을 사용하여 빠른 데이터베이스 백업을 만든다.그러나 때때로, 내가 잠시 후에 데이터베이스를 가져오려고 시도할 때 이상한 오류가 발생할 수 있다.또한 phpMyAdmin은 서버의 PHP 파일 업로드 제한을 받습니다.

TLDR;


빠르고 더러운 버전:
  • 수중에 당신의 MySQL 사용자 이름, 비밀번호와 데이터베이스 이름
  • 이 MySQL 사용자가 테이블 및 레코드를 작성할 수 있는 권한이 정확한지 확인
  • 새 MySQL 서버에 백업 파일 업로드(초기 서버와 다른 경우)
  • mysqldump를 사용하여 MySQL 데이터베이스 백업


    명령줄에서 MySQL 백업을 만들려면 mysqldump 명령을 사용합니다.
    mysqldump -u mysql_username -p datbase_name > /path/to/the/new/backup/file.sql
    
    mysql_username 계정의 암호를 입력하라는 메시지가 표시됩니다.그런 다음 데이터베이스 백업이 시작됩니다.
    이렇게 하면 /path/to/the/new/backup/file.sql에 있는 새 파일에서 동일한 서버에 대한 전체 MySQL 데이터베이스 백업이 생성됩니다.
    주의: 이 파일이 이미 존재하면 덮어씁니다.만약 ssh 계정이 이 파일 위치에 대한 쓰기 권한이 없다면 백업 작업은 실패할 것입니다.

    새 서버로 데이터베이스 백업 전송


    나처럼 데이터베이스 백업을 다른 서버로 전송하려면 scp 명령을 사용하여 로컬 컴퓨터에서 안전하게 다운로드할 수 있습니다.scp과 함께 파일을 다운로드하려면 로컬 컴퓨터에서 다음을 실행하십시오.
    scp remote_user_1@server_1_ip:/path/to/remote/file.sql /path/to/local/computer/save/directory
    
    그런 다음 파일을 다른 서버에 업로드하여 로컬 컴퓨터에서 실행할 수 있습니다.
    scp /path/to/local/computer/save/file.sql remote_user_2@server_2_ip:/path/to/upload/remote/file.sql
    

    MySQL 백업 복구


    백업 파일을 최종 서버에 배치하고 mysql 명령을 사용하여 명령줄에서 MySQL 데이터베이스 백업을 복원할 수 있습니다.
    mysql -u mysql_username -p database_name < /absolute/path/to/the/backup.sql
    
    프롬프트가 나타나면 MySQL 사용자 계정의 암호를 입력합니다.그럼 시합하러 가!🚀
    데이터베이스 테이블과 레코드가 생성됩니다.이 작업을 완료하는 총 시간은 백업 크기, 압축 및 서버 사양에 따라 달라집니다.

    MySQL 데이터베이스 백업 및 복구 방법


    명령줄을 사용하여 MySQL 데이터베이스 백업을 실제 백업 및 복원하려면 다음이 필요합니다.
  • 데이터베이스
  • 의 MySQL 사용자 이름 및 암호
  • 명령줄 MySQL 서버
  • 액세스
  • MySQL 사용자에게 액세스 권한(또는 작성 권한)이 있는 데이터베이스
  • Digital Ocean 같은 MySQL 공급자를 사용하고 있다면, 저처럼 SSH를 통해 서버에 연결하고 준비할 수 있어야 합니다.Bluehost 또는 A2 hosting 같은 MySQL 공급업체를 사용하는 경우 지원 핫라인에서 SSH 액세스를 요청해야 할 수도 있습니다.

    MySQL 서버에 연결


    명령줄을 사용하여 MySQL 서버에 SSH를 연결합니다.
    ssh server_username@ip_address
    # or
    ssh [email protected]
    

    MySQL 데이터베이스 보기


    백업할 데이터베이스의 이름을 모르는 경우 MySQL 사용자 계정이 액세스할 수 있는 MySQL 데이터베이스를 나열할 수 있습니다.mysql 명령줄 도구(일명 cli)와 유효한 사용자 이름 및 암호를 사용합니다.
    mysql -u mysql_username -p
    
    MySQL 사용자의 계정 암호를 입력하라는 메시지가 표시됩니다.그리고 데이터베이스 서버에 연결됩니다. MySQL 사용자는 mysql_username입니다.
    주의: -p 로고는 터미널에서 우리에게 비밀번호를 입력하라고 알릴 수 있습니다.-p 플래그가 없으면 연결이 실패할 수 있습니다.예를 들면'비밀번호가 필요해'.
    연결이 완료되면 mysql_username 계정이 액세스할 수 있는 MySQL 데이터베이스를 나열할 수 있습니다.
    show databases;
    
    데이터베이스 이름을 알고 mysql cli 를 종료합니다.
    exit;
    

    mysqldump를 사용하여 MySQL 데이터베이스 백업 만들기


    MySQL 데이터베이스 백업, 특히 빠른 전체 백업을 만들기 위해 저는 mysqldump 명령을 즐겨 사용합니다.이것은 기본적으로 MySQL (MariaDB) 을 설치했을 뿐만 아니라, 이 명령의 문법은 mysql 명령과 기본적으로 같다.하지만 이따가 더 많은 내용이 있을 거예요.
    데이터베이스 이름이 있는 상태에서 다음과 같이 mysqldump 명령을 실행합니다.
    mysqldump -u mysql_username -p datbase_name > /path/to/the/new/backup/file.sql
    
  • -u mysql_username - MySQL 사용자 이름 "MySQL username"
  • 을 사용하여 MySQL 데이터베이스에 연결
  • -p - MySQL 프롬프트 알려주기 사용자 비밀번호
  • datbase_name - 백업할 MySQL 데이터베이스의 이름만
  • > /path/to/the/new/backup/file.sql - 명령의 출력을 같은 서버
  • 의 로컬 파일로 파이핑을 통해 전송

    Notice the direction of the > character. This tells the command to send the mysql database records into the specified file.


    명령을 실행하면 mysql_username 계정의 암호를 입력하라는 메시지가 표시됩니다.그런 다음 데이터베이스 백업이 시작됩니다.불행하게도, 백업 과정에서 터미널에서 변경 사항을 볼 수 없습니다.그러나 완료되면 터미널에서 알림을 되돌려줍니다.계속해.
    물론 백업을 만드는 시간은 데이터베이스의 크기와 서버의 규격에 따라 다르다.기준 테스트로 내 데이터베이스에는 약 500k개의 기록이 있는데 약 20분이 걸린다.

    데이터베이스 백업 보안 다운로드


    만약 나처럼 데이터베이스 백업을 다른 서버로 전송해야 한다면, "secure copy"명령 scp을 사용하여 로컬 컴퓨터에서 안전하게 다운로드할 수 있습니다.scp과 함께 파일을 다운로드하려면 로컬 컴퓨터에서 다음을 실행하십시오.
    scp remote_user_1@server_1_ip:/path/to/remote/file.sql /path/to/local/computer/save/directory
    

    데이터베이스 백업을 안전하게 업로드


    MySQL 서버에서 백업을 실제로 복구하려면 백업 파일을 새 서버에 업로드해야 합니다.
    로컬 컴퓨터에서 데이터베이스 백업을 업로드하려면 보안 복제 명령 scp을 사용합니다.
    scp /path/to/local/computer/save/file.sql remote_user_2@server_2_ip:/path/to/upload/remote/file.sql
    
    주의: 이 두 개의 scp 명령 예는 모두 내 로컬 컴퓨터에서 실행됩니다. 왜냐하면 모든 서버의 SSH 키가 내 컴퓨터에 있기 때문입니다.SSH 키를 두 서버 간에 파일을 직접 전송하도록 설정하면 scp을 두 서버 간에 전송하기만 하면 됩니다.

    MySQL 데이터베이스 서버 만들기


    MySQL 데이터베이스를 사용할 수 있는 목록이 표시되도록 연결했습니다.
    show databases;
    

    MySQL 데이터베이스 삭제(필요에 따라)

    mysqldump의 전체 MySQL 데이터베이스 백업에서 복구하려면 기존 데이터베이스를 삭제한 다음 다시 만들어야 할 수도 있습니다.반대로 될 줄 알았어.
    MySQL 데이터베이스를 삭제하려면 다음 명령을 사용합니다.
    drop database name_here;
    

    Note: In order to DELETE new MySQL databases, you user account will need the DELETE permission item. If your account does not have it, you may need to DELETE the database from your hosting control panel.


    새 MySQL 데이터베이스 만들기


    서버에 MySQL 데이터베이스가 없는 경우 다음 명령을 사용하여 새 MySQL 데이터베이스를 만들 수 있습니다.
    create database name_here;
    

    Note: In order to CREATE new MySQL databases, you user account will need the CREATE permission item. If your account does not have it, you may need to CREATE the database from your hosting control panel.


    복원할 MySQL 데이터베이스 선택


    데이터베이스가 존재하는 경우 use 명령을 사용하여 선택할 수 있습니다.
    use database_name;
    
    백업을 복구할 데이터베이스를 선택해야 합니다(일명 use).

    백업에서 MySQL 데이터베이스 복원


    데이터베이스 백업을 업로드한 이상 이 백업을 복구할 준비가 되어 있습니다.exit; 명령을 사용하여 mysql cli를 종료합니다.그런 다음 일반 터미널 프롬프트에서 데이터베이스 백업을 복원합니다.
    mysql -u mysql_username -p database_name < /absolute/path/to/the/backup.sql
    

    Notice the direction of the < character. This tells the command to read the contents of the file and send it to the mysql program. (aka import the backup)


    이 문장이 우리를 도울 수 있기를 바란다.즐거운 시간 되세요!😁
    이 글은 how to backup and restore a MySQL database에 발표되었고, 최초로 나의 개인 사이트 frostbutter.com에 발표되었다

    좋은 웹페이지 즐겨찾기