데이터베이스 관리자와 시스템 관리자는 MySQL 데이터베이스를 백업해야 하며, mysqldump 유틸리티는 전체 데이터베이스 또는 단일 개체를 텍스트 파일로 변환하는 데 사용되는 가장 일반적인 도구입니다. mysqldump 유틸리티가 백업 파일을 생성한 후, 데이터를 서버로 복원하거나 다른 데이터베이스로 마이그레이션하는 데 사용할 수 있습니다.
mysqldump란?
mysqldump 도구는 데이터베이스 또는 데이터베이스의 객체 하위 집합을 재구축할 수 있는 SQL 문을 내보내는 데 사용할 수 있도록 MySQL에 포함된 명령줄 유틸리티입니다. 데이터베이스 오브젝트 및 데이터의 백업을 생성하는 데 사용하거나, 한 서버에서 다른 서버로 데이터베이스를 전송하는 데 사용할 수 있습니다. 관리자는 mysqldump를 사용하여 데이터를 XML 및 CSV와 같은 특정 형식으로 내보낼 수 있습니다.
mysqldump를 사용하여 단일 테이블을 백업하는 방법
mysqldump 유틸리티는 데이터베이스 내의 특정 테이블만 내보내는 데 사용할 수 있습니다. 예를 들어, 전자상거래 데이터베이스에서 단일 고객 테이블만 내보내려고 한다고 가정해 봅시다. 그런 다음 고객 테이블 데이터를 사용하여 마케팅 이메일을 보낼 수 있습니다. mysqldump 유틸리티는 고객 테이블과 해당 데이터를 텍스트 파일로 내보냅니다.
참고: mysqldump에서 명령을 성공적으로 실행하려면 데이터베이스에 액세스하는 데 사용되는 사용자 이름에 객체에 액세스할 수 있는 적절한 권한이 있어야 합니다. 액세스 권한이 없으면 명령은 스키마, 오브젝트 또는 데이터를 내보내지 않습니다.
개체를 텍스트 파일로 성공적으로 내보내려면 데이터베이스 이름과 테이블 이름을 지정해야 합니다. 테이블 이름이 올바른지 확인하려면 먼저 작업할 데이터베이스에 인증되었는지 확인하십시오. 그런 다음 MySQL 명령줄 또는 Workbench 애플리케이션에서 다음 SQL 명령을 실행합니다.
SHOW TABLES;
올바른 테이블 이름을 찾은 후 테이블을 텍스트 파일로 내보낼 수 있습니다. 다음 명령은 데이터베이스 myDB에서 customer.sql 파일로 고객 테이블을 내보냅니다.
mysqldump -u username -p password myDB Customer > customers.sql
“사용자 이름” 및 “암호” 용어는 사용자 이름 및 비밀번호로 교체해야 합니다. 각 테이블을 공백 문자로 구분하여 여러 테이블을 내보낼 수 있습니다. 다음은 고객 및 주문 테이블을 customers_orders.sql로 내보냅니다.
mysqldump -u username -p password myDB Customer Order > customers_orders.sql
SQL 문을 파일로 내보낸 후 표준 텍스트 편집기로 SQL 파일을 열거나 MySQL Workbench로 열 수 있습니다. MySQL Workbench는 MySQL 데이터베이스와 별도로 설치되지만 MySQL 웹사이트에서 무료로 다운로드할 수 있습니다. 워크벤치로 여는 것이 가장 좋습니다. 명세서를 실행하고 대상 MySQL 데이터베이스 서버로 데이터를 가져올 수 있기 때문입니다.
mysqldump 사례
mysqldump 유틸리티는 주로 백업 또는 다른 데이터베이스 서버로의 데이터 전송에 사용됩니다. 데이터베이스를 백업하든 다른 서버로 데이터를 전송하든, mysqldump 유틸리티는 동일하게 작동합니다. mysqldump 백업의 한 가지 일반적인 용도는 프로덕션 데이터베이스에서 테스트 환경을 만드는 것입니다.
프로덕션 데이터베이스를 사용하여 테스트 환경을 만들려면 mysqldump 유틸리티를 사용하여 데이터베이스를 완전히 백업할 수 있습니다. 다음 명령은 myDB라는 이름의 전체 데이터베이스를 백업하여 myDB.sql이라는 이름의 파일로 내보냅니다.
mysqldump -u username -p password -databases myDB > myDB.sql
이제 테스트 서버에 로그인하세요. 또한 내보낸 데이터를 가져올 수 있도록 MySQL이 설치되어 있어야 합니다. 내보내기 명령은 '>' 문자를 사용하여 데이터베이스에서 SQL 파일로 데이터를 이동시킵니다. 가져오기 프로세스는 ‘<’ 문자를 사용합니다. 다음 명령은 myDB.sql 파일의 모든 데이터를 myDB라는 데이터베이스가 동일한 테스트 환경으로 가져옵니다.
mysqldump -u username -p password -databases myDB < myDB.sql
위의 두 가지 명령을 통해 프로덕션의 원래 myDB 데이터베이스에서 테스트 환경으로 데이터를 복제할 수 있습니다. 테스트 환경은 개발자와 품질 보증 담당자가 실제 데이터와 데이터베이스 구조로 작업하여 고객 또는 직원의 문제 해결을 모방할 수 있도록 합니다.
mysqldump의 기본 사용
mysqldump 중에 생성된 .sql 파일은 간단한 텍스트 파일입니다. 모든 텍스트 편집기에서 열 수 있지만 MySQL Workbench로 여는 것이 가장 좋습니다. 워크벤치 색상 코드 명령 및 데이터 유형으로 SQL 명령을 더 쉽게 읽을 수 있습니다.
파일 메뉴를 사용하여 워크벤치에서 .sql 파일을 열 수 있습니다. 대화 상자에서 “SQL 스크립트 열기”를 클릭하고 읽을 .sql 파일을 선택합니다. .sql 파일을 연 상태에서, 명령을 실행하기로 선택한 경우, 이를 읽고 “SQL 스크립트 실행” 파일 메뉴 항목으로 실행할 수 있습니다. 워크벤치는 Windows와 Linux에서 실행되므로 두 운영 체제 모두에서 스크립트를 실행할 수 있습니다.
mysqldump 유틸리티를 사용하여 Windows 및 Linux에서 mysqldump 파일을 실행할 수도 있습니다. 다음 명령은 mysqldump 유틸리티에서 Windows 및 Linux의 MySQL 데이터베이스에서 SQL 문을 실행합니다.
mysqldump -u username -p password -databases myDB < myDB.sql
위의 명령은 myDB.sql mysqldump 파일에서 데이터를 가져오고 로컬 데이터베이스 서버에서 SQL 문을 실행합니다. 명령은 데이터를 myDB 데이터베이스로 가져옵니다.
데이터베이스 또는 데이터베이스 테이블에 데이터가 없는 경우 데이터베이스 구조가 여전히 생성되고 데이터베이스가 스키마에 추가됩니다. 테이블 구조는 향후 데이터를 추가할 수 있습니다.
mysqldump의 고급 사용
대규모 데이터베이스에는 테라바이트 단위의 데이터가 포함된 테이블이 포함될 수 있습니다. 너무 많은 내보내기는 스토리지 리소스를 낭비할 수 있지만, 각 파일을 압축하여 MySQL 데이터 내보내기에 필요한 스토리지 공간을 줄일 수 있습니다. 파일을 압축하면 대용량 파일에 필요한 여러 기가바이트의 스토리지 공간을 절약할 수 있습니다. 다음 mysqldump 명령은 myDB 데이터베이스를 내보내고 gzip 유틸리티를 사용하여 myDB.sql.gz라는 파일로 압축합니다.
mysqldump -u username -p password -databases myDB | gzip myDB.sql.gz
백업에는 종종 민감한 데이터가 포함되기 때문에, 컴플라이언스 및 데이터 보호를 위해 암호화가 필요합니다. 데이터를 암호화하려면 타사 툴이 필요합니다. 이 예에서는 ccrypt를 사용하여 myDB.sql 파일을 암호화합니다. 파일을 암호화하려면 키(암호와 유사)가 필요하지만, 암호화를 해제하려면 이 키를 기억해야 합니다. 암호화 유틸리티는 파일을 암호화할 때 키를 입력하라는 메시지를 표시하거나, .sql 파일을 암호화 및 해독하기 위해 재사용할 수 있는 안전한 파일에 키를 저장할 수 있습니다.
다음 예에서 내보낸 .sql 파일은 mykey.key라는 이름의 파일에 저장된 키를 사용하여 암호화됩니다.
mysqldump -u username -p password -databases myDB | ccrypt -k mykey.key > myDB.sql.cpt
데이터는 .cpt 파일로 내보내집니다. 이 .cpt 파일은 모든 암호화된 데이터가 저장되는 곳입니다. 파일의 암호를 해독하려면 동일한 키가 필요합니다. 다음 명령을 사용하여 암호를 해독할 수 있습니다.
cdecrypt -k mykey.key myDB.sql.cpt
대부분의 데이터베이스는 개 이상의 테이블과 데이터를 포함합니다. 트리거와 절차도 백업해야 합니다. 기본적으로 mysqldump 유틸리티 내보내기는 표준 내보내기로 트리거되지만, 관리자는 명령을 명시적으로 내보낼 수 있습니다. 절차는 기본적으로 내보내지지 않으므로 관리자는 명시적으로 내보내야 합니다. 다음 명령은 다른 데이터베이스 객체 및 데이터와 함께 트리거 및 절차를 내보냅니다.
mysqldump -u username -p password -databases myDB –triggers=true –routines=true > myDB.sql
mysqldump 모범 사례
mysqldump 유틸리티를 사용하면 생산성을 저하시키지 않고 자유롭게 사용할 수 있습니다. 데이터베이스와 데이터를 자주 백업하거나 내보내야 할 때 특히 유용합니다. 데이터베이스 장애, 멀웨어 또는 데이터 손상 시 데이터를 검색할 수 있도록 백업을 자주 수행해야 합니다.
백업 빈도는 매일 데이터베이스에 추가하는 데이터의 양과 데이터베이스 변경 빈도에 따라 달라집니다. 일반적으로 mysqldump 명령을 사용하는 빈도는 수익 및 비즈니스 연속성에 부정적인 영향을 주지 않고 손실될 수 있는 데이터의 양에 따라 달라집니다. 항상 전체 백업이 필요한 것은 아니지만, 일부 기업은 일주일에 한 번 mysqldump 유틸리티를 사용하고 다른 기업은 하루에 한 번 사용합니다. 비즈니스에 필요한 전체 백업의 빈도를 결정하고 자동화 툴을 사용하여 정해진 간격으로 mysqldump를 실행합니다.
결론
데이터베이스 관리는 풀타임 작업이지만, mysqldump 유틸리티는 관리를 훨씬 더 효율적으로 만듭니다. 데이터를 전체 백업하거나 서버 간에 데이터를 전송하는 데 사용할 수 있습니다. Windows 또는 Linux와 호환되므로 MySQL 서버를 호스팅하는 모든 환경에서 사용할 수 있습니다.