웹사이트 검색

Ubuntu VPS에서 MySQL 데이터베이스를 백업하는 방법


상태: 더 이상 사용되지 않음

이 문서에서는 더 이상 지원되지 않는 Ubuntu 버전에 대해 설명합니다. 현재 Ubuntu 12.04를 실행하는 서버를 운영 중인 경우 지원되는 Ubuntu 버전으로 업그레이드하거나 마이그레이션하는 것이 좋습니다.

  • Ubuntu 14.04로 업그레이드합니다.
  • Ubuntu 14.04에서 Ubuntu 16.04로 업그레이드
  • 서버 데이터를 지원되는 버전으로 마이그레이션

이유:

대신 참조:

MySQL이란 무엇입니까?

MySQL은 SQL 쿼리 언어를 사용하여 데이터에 액세스하고 조작하는 널리 사용되는 데이터베이스 관리 솔루션입니다. 웹 사이트 또는 응용 프로그램의 데이터를 쉽게 관리하는 데 사용할 수 있습니다.

백업은 모든 종류의 데이터에서 중요하며 특히 데이터베이스에 대해 이야기할 때 관련이 있습니다. MySQL은 이 기사에서 논의할 몇 가지 다른 방법으로 백업할 수 있습니다.

이 튜토리얼에서는 MySQL 5.5가 설치된 Ubuntu 12.04 VPS를 사용합니다. 대부분의 최신 배포판과 최신 버전의 MySQL은 비슷한 방식으로 작동합니다.

mysqldump로 MySQL 데이터베이스를 백업하는 방법

MySQL로 백업하는 가장 일반적인 방법 중 하나는 "mysqldump"라는 명령을 사용하는 것입니다.

백업

여기에 mysqldump를 사용하여 데이터베이스를 내보내는 방법에 대한 기사가 있습니다. 명령의 기본 구문은 다음과 같습니다.

mysqldump -u username -p database_to_backup > backup_name.sql

복원 중

mysqldump로 생성된 데이터베이스 덤프를 복원하려면 파일을 MySQL로 다시 리디렉션하기만 하면 됩니다.

가져온 데이터를 저장할 빈 데이터베이스를 만들어야 합니다. 먼저 다음을 입력하여 MySQL에 로그인합니다.

mysql -u username -p

데이터 덤프의 모든 데이터를 보유할 새 데이터베이스를 생성한 다음 MySQL 프롬프트를 종료합니다.

CREATE DATABASE database_name;
exit

다음으로, 다음 명령을 실행하여 덤프 파일을 새로 생성된 데이터베이스로 리디렉션할 수 있습니다.

mysql -u username -p database_name < backup_name.sql

이제 귀하의 정보가 귀하가 생성한 데이터베이스로 복원되어야 합니다.

MySQL 테이블을 텍스트 파일로 백업하는 방법

MySQL 내에서 select 문을 사용하여 테이블의 데이터를 텍스트 파일로 직접 저장할 수 있습니다.

이 작업의 일반 구문은 다음과 같습니다.

SELECT * INTO OUTFILE 'table_backup_file' FROM name_of_table;

이 작업은 테이블 데이터를 MySQL 서버의 파일에 저장합니다. 선택한 이름의 파일이 이미 있으면 실패합니다.

참고: 이 옵션은 테이블 데이터만 저장합니다. 테이블 구조가 복잡하고 보존해야 하는 경우 다른 방법을 사용하는 것이 가장 좋습니다!

automysqlbackup을 사용하여 MySQL 정보를 백업하는 방법

Ubuntu 리포지토리에서 사용할 수 있는 "automysqlbackup"이라는 유틸리티 프로그램이 있습니다.

이 유틸리티는 정기적으로 백업을 자동으로 수행하도록 예약할 수 있습니다.

이 프로그램을 설치하려면 터미널에 다음을 입력하십시오.

sudo apt-get install automysqlbackup

다음을 입력하여 명령을 실행합니다.

sudo automysqlbackup

automysqlbackup의 기본 구성 파일은 \/etc/default/automysqlbackup\에 있습니다. 관리자 권한으로 엽니다.

sudo nano /etc/default/automysqlbackup

이 파일은 기본적으로 "/etc/mysql/debian.cnf"에 있는 MySQL 파일에 의해 많은 변수를 할당하는 것을 볼 수 있습니다. 여기에는 유지 관리 로그인 정보가 포함됩니다.

이 파일에서 백업해야 하는 사용자, 암호 및 데이터베이스를 읽습니다.

백업의 기본 위치는 \/var/lib/automysqlbackup\입니다. 이 디렉토리를 검색하여 백업 구조를 확인하십시오.

ls /var/lib/automysqlbackup
daily  monthly weekly

매일 디렉터리를 살펴보면 각 데이터베이스의 하위 디렉터리를 볼 수 있으며 그 안에는 명령이 실행될 때의 gzip 압축된 sql 덤프가 있습니다.

ls -R /var/lib/automysqlbackup/daily
.:
database_name  information_schema  performance_schema

./database_name:
database_name_2013-08-27_23h30m.Tuesday.sql.gz

./information_schema:
information_schema_2013-08-27_23h30m.Tuesday.sql.gz

./performance_schema:
performance_schema_2013-08-27_23h30m.Tuesday.sql.gz

우분투는 매일 실행할 이 프로그램과 함께 cron 스크립트를 설치합니다. 파일을 적절한 디렉토리로 구성합니다.

복제 사용 시 백업 방법

위의 기술로 MySQL 복제를 사용하여 데이터를 백업할 수 있습니다.

복제는 한 서버에서 다른 서버(마스터-마스터)로 변경 사항을 미러링하는 프로세스입니다.

복제는 데이터 미러링을 허용하지만 특정 시점을 저장하려고 할 때 어려움을 겪습니다. 동적 시스템의 변경 사항을 지속적으로 복제하기 때문입니다.

이 문제를 방지하기 위해 다음 중 하나를 수행할 수 있습니다.

  • 일시적으로 복제 비활성화
  • 백업 머신을 일시적으로 읽기 전용으로 설정

일시적으로 복제 비활성화

다음을 실행하여 일시적으로 슬레이브에 대한 복제를 비활성화할 수 있습니다.

mysqladmin -u user_name -p stop-slave

복제를 완전히 중지하지는 않지만 일시 중지하는 또 다른 옵션은 다음을 입력하여 수행할 수 있습니다.

mysql -u user_name -p -e 'STOP SLAVE SQL_THREAD;'

복제가 중지된 후 위의 방법 중 하나를 사용하여 백업할 수 있습니다. 이를 통해 슬레이브가 백업되는 동안 마스터 MySQL 데이터베이스를 온라인 상태로 유지할 수 있습니다.

이 작업이 완료되면 다음을 입력하여 복제를 다시 시작합니다.

mysqladmin -u user_name -p start-slave

백업 시스템을 일시적으로 읽기 전용으로 만들기

또한 일시적으로 데이터를 읽기 전용으로 만들어 서버 내에서 일관된 데이터 세트를 보장할 수 있습니다.

마스터 또는 슬레이브 시스템에서 이러한 단계를 수행할 수 있습니다.

먼저 데이터를 조작할 수 있는 권한으로 MySQL에 로그인합니다.

mysql -u root -p 

다음으로, 캐시된 모든 변경 사항을 디스크에 기록하고 다음을 입력하여 시스템을 읽기 전용으로 설정할 수 있습니다.

FLUSH TABLES WITH READ LOCK;
SET GLOBAL read_only = ON;

이제 mysqldump를 사용하여 백업을 수행합니다.

백업이 완료되면 다음을 입력하여 시스템을 원래 작업 순서로 되돌립니다.

SET GLOBAL read_only = OFF;
UNLOCK TABLES;

더 이상 권장되지 않는 기술에 대한 참고 사항

mysqlhotcopy

MySQL에는 "mysqlhotcopy"라는 데이터베이스 백업을 위한 Perl 스크립트가 포함되어 있습니다. 이 도구는 로컬 컴퓨터에서 데이터베이스를 빠르게 백업하는 데 사용할 수 있지만 권장하지 않는 제한 사항이 있습니다.

여기에서 mysqlhotcopys 사용법을 다루지 않는 가장 중요한 이유는 "MyISAM" 및 "Archive" 스토리지 엔진을 사용하여 저장된 데이터에 대해서만 작동하기 때문입니다.

대부분의 사용자는 데이터베이스의 스토리지 엔진을 변경하지 않으며 MySQL 5.5부터 기본 스토리지 엔진은 "InnoDB"입니다. 이 유형의 데이터베이스는 mysqlhotcopy를 사용하여 백업할 수 없습니다.

이 스크립트의 또 다른 제한 사항은 데이터베이스 저장소가 유지되는 동일한 시스템에서만 실행할 수 있다는 것입니다. 이렇게 하면 일부 상황에서 주요 제한 사항이 될 수 있는 원격 시스템에서 백업을 실행하는 것을 방지할 수 있습니다.

테이블 파일 복사

때때로 제안되는 또 다른 방법은 MySQL이 데이터를 저장하는 테이블 파일을 복사하는 것입니다.

이 접근 방식은 "mysqlhotcopy"와 동일한 이유 중 하나로 어려움을 겪습니다.

데이터를 파일에 저장하는 스토리지 엔진에 이 기술을 사용하는 것이 합리적이지만 새로운 기본 스토리지 엔진인 InnoDB는 이 방식으로 백업할 수 없습니다.

결론

MySQL에서 백업을 수행하는 방법에는 여러 가지가 있습니다. 모두 장단점이 있지만 일부는 구현하기가 훨씬 쉽고 다른 것보다 더 광범위하게 유용합니다.

배포하도록 선택하는 백업 구성표는 프로덕션 환경뿐만 아니라 개별 요구 사항과 리소스에 따라 크게 달라집니다. 어떤 방법을 선택하든 프로세스가 올바르게 작동하는지 확인할 수 있도록 백업의 유효성을 검사하고 데이터 복원을 연습해야 합니다.