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에서 백업을 수행하는 방법에는 여러 가지가 있습니다. 모두 장단점이 있지만 일부는 구현하기가 훨씬 쉽고 다른 것보다 더 광범위하게 유용합니다.
배포하도록 선택하는 백업 구성표는 프로덕션 환경뿐만 아니라 개별 요구 사항과 리소스에 따라 크게 달라집니다. 어떤 방법을 선택하든 프로세스가 올바르게 작동하는지 확인할 수 있도록 백업의 유효성을 검사하고 데이터 복원을 연습해야 합니다.