MySQL 데이터베이스 백업에 mysqldump 또는 mysqlhotcopy를 사용해야합니까?


14

정기적으로 백업하려는 MySQL 데이터베이스에서 WordPress 블로그를 실행하고 있습니다. mysqldump 프로그램 또는 mysqlhotcopy 스크립트를 사용하여 백업을 만드는 것이 더 좋습니까? 각각의 장단점은 무엇입니까? 고려해야 할 다른 옵션이 있습니까?

답변:


5

현재 데이터베이스 백업을 유지하기 위해 mysqldump를 사용하고 있다고 말할 수 있습니다. 내 목표는 매주 백업을 유지하여 누군가 웹 페이지를 제거하는 경우 최대 일주일 전부터 복구 할 수 있기 때문입니다.

이것에 대한 좋은 점은 기본 텍스트 파일이므로 MySQL이있는 모든 컴퓨터로 가져 와서로드하고 누락 된 데이터를 검색 할 수 있다는 것입니다. 참고 : 원하는 것을 얻으려면 스크립트에서 사용하는 명령은 다음과 같습니다.

mysqldump --databases databaseName > /file/path

이것은 --databasesmysqldump가 CREATE DATABASE IF NOT EXIST헤더를 덤프하여 원하는 곳 어디에서나 가져올 수 있도록하는 것입니다.

이 방법이 저에게 효과적이지만 다른 목적을 위해 더 나은 방법이 있다고 확신합니다. 또한 모든 백업 솔루션과 관련하여 최소한 다른 컴퓨터에 저장해야하며 가능하면 오프 사이트 (클라우드에있는)를 저장하는 것이 좋습니다.


5

WordPress 데이터베이스 백업 안내서 에도 나와있는 "WP-DB-Backup (WordPress 데이터베이스 백업)"이라는 WordPress 플러그인 사용을 고려할 것 입니다. 이 플러그인은 일정에 따라 데이터베이스를 백업하고 이메일을 보낼 수 있습니다 (작은 데이터베이스라고 가정). 로컬로 백업 할 수도 있습니다. 주석 스팸 및 개정을 제외하여 DB를 더 작게 만들 수 있습니다

통제력은 떨어지지 만 구현하기가 더 쉽습니다.

MySQL 덤프는 가장 많은 제어권을 제공합니다 . 호스팅 서비스도 제한 요소가 될 수 있습니다. 일부 호스트는 cron 작업을 실행하거나 mysqldump 명령을 실행할 수있는 액세스 권한을 제공하지 않습니다.


4

제안 # 1

MySQL 인스턴스 백업을 수행하는 경우 서버로드를 부과하거나 디스크 I / O를 증가시키는 것이 프로덕션 데이터베이스에 영향을 미치지 않도록 MySQL Replicaton을 설정하는 것이 가장 좋습니다.

MySQL Replication을 설정 하면 슬레이브에서 해당 mysqldump를 실행하는 한 mysqldump 를 다양한 방법으로 스크립팅 할 수 있습니다 ( 다양한 기술에 대해서는 DBA StackExchange에서 내 게시물 참조 ).

제안 # 2

MySQL 복제를 위해 다른 서버를 설정할 수없고 모든 데이터가 InnoDB 인 경우 특정 시점 mysqldump를 수행해야합니다. 이것은 --single-transactionmysqldump와 옵션을 사용하여 수행됩니다 . 따라서 자정에 시작하여 mysqldump를 실행하고 백업이 12:15 AM에 종료 된 경우 복원시 mysqldump의 출력은 오전 12시의 데이터를 반영합니다.

제안 # 3

MySQL Backups에 사용 가능한 다른 프로그램은 Percona의 XtraBackup입니다.

XtraBackup 은 rsync처럼 동작하지만 삶의 목적을 지시하는 포괄적 인 도구입니다. 모든 InnoDB 데이터 및 테이블 스페이스 복사를 시작할 수 있습니다. 내부적으로 검사 점을 생성하고 InnoDB 응급 복구를 수행하여 완벽한 특정 시점 백업을 수행 할 수 있습니다. XtraBackup에는 증분 백업을 생성 할 수있는 추가 기능도 있습니다. 또 다른 추가 기능은 InnoDB 로그 파일을 생성하는 것입니다. MyISAM 테이블의 고정 된 복사를 제공하는 래퍼 소프트웨어도 있습니다.

MySQL 인스턴스를 지원하지만 뚜렷한 차이가 있습니다. 백업 시점은 백업 시작 시점이 아니라 백업 완료 시점을 기준으로합니다. 따라서 자정에 시작하여 XtraBackup을 실행하고 백업이 12:15 AM에 종료 된 경우 복원시 mysqldump의 출력은 오전 12:15의 데이터를 반영합니다.


2

테이블의 스토리지 엔진에 따라 다릅니다. 이 MySQL 매뉴얼 페이지에 따라 ARCHIVE 및 MyISAM 테이블에 대해서만 작동 하며 동일한 시스템에서 실행해야합니다 (예 : 로컬 소켓 또는 TCP / IP를 사용하지 않음)

MySQL은 또한 말한다

서버에서 백업을 수행하고 있고 테이블이 모두 MyISAM 테이블 인 경우 mysqlhotcopy를 사용하는 것이 좋습니다. 더 빠른 백업과 더 빠른 복원을 수행 할 수 있기 때문입니다.


1

기존의 많은 mySQL 백업 스크립트 중 하나를 사용하여 올바르게 처리하는 데 어려움을 겪는 것이 좋습니다.

서버에서 크론 작업으로 설정할 수있는 오픈 소스 셸 스크립트 인 "automysqlbackup"을 사용합니다. 거의 모든 가능한 백업 상황 인 http://sourceforge.net/projects/automysqlbackup/을 다룹니다 . 그것은 몇 년 동안 완벽하게 작동했습니다-철저히 권장됩니다.


1

mysqlhotcopy는 '05 년경 펄 스크립트입니다. 따라서 Perl과 다양한 Perl에 대한 종속성을 추가합니다. 나는 이것을 전달할 것입니다.

mysqldump는 MySQL과 함께 배포되고 적극적으로 유지 관리되는 C 프로그램입니다. -x 옵션을 추가하면 테이블이 잠기므로 황금색이됩니다.

나는 개인적 으로이 스크립트 를 cron에 가지고있다. 모든 데이터베이스의 전체 덤프.

또한 데이터베이스가 둘 이상 있으면 보조금을 덤프하려고합니다. Maatkit 이 도움이 될 것이며 mk-show-grants -uroot -pPASSWORD > mygrantsdatabase.sql보조금 테이블을 백업하고 다시 가져올 수 있습니다.


0

또한 Interworx 및 Ensim과 같은 많은 서버 관리 도구가 mysqldump를 사용하여 데이터베이스를 백업 한 다음 간단한 mysql 명령을 복원한다는 것을 알고 있습니다. 이것으로부터 이것이 최선의 방법 중 하나라고 생각합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.