Mydumper, Mysql 백업용 도구

얼마 전에 자동 mysql 백업을 생성하는 또 다른 도구인 automysqlbackup에 대해 말씀드린 적이 있습니다. 그런데 갑자기 작동이 멈췄습니다. 문제가 무엇인지 알아보고 싶지 않았기 때문에 동일한 작업을 수행 할 다른 유틸리티를 찾았고 훨씬 더 나은 mydumper를 찾았습니다.

그 이유는 다음과 같습니다:

백업 속도가 매우 빠릅니다. 많은 웹 사이트에서 여러 테스트를 진행했지만 거의 모든 테스트가 동일한 결론에 도달했습니다. 특히 매우 큰 데이터베이스를 다룰 때 다른 대안에 비해 mydumper가 매우 빠르다는 것입니다.

  • InnoDB 테이블과 충돌이 거의 없음
  • 각 테이블에 대한 백업을 만듭니다.
  • 스키마를 데이터에서 분리합니다.
  • 그리고 테이블 라인당 하나의 파일 라인을 생성합니다. 결국에는 항상 몇 가지 문제를 야기하는 거대한 삽입을 하는 것보다 훨씬 낫습니다.

테이블당 하나씩 많은 파일을 생성하여 데이터 스키마를 분리하는 것이 어색하고 지저분해 보일 수 있습니다. 하지만 실제로는 두 가지 이유로 매우 유용합니다:

  • 문제가 발생했을 때 전체 데이터베이스를 처리하는 대신 하나의 테이블만 복구하는 것이 더 쉽습니다.
  • Dropbox 또는 Copy와 같은 클라우드 스토리지 서비스를 사용하면 백업을 더 쉽게 만들 수 있습니다.

방법을 알아보세요:

  • mydumper 설치 및 구성
  • 자동 백업 예약
  • 클라우드에 MySQL 백업하기

시작하겠습니다.

Mydumper 설치 및 구성

아치 리눅스를 사용하는 경우

yaourt -S mydumper

우분투를 사용하는 경우

sudo apt-get install mydumper

모든 옵션을 보려면 콘솔에 다음 명령을 입력합니다.

mydumper -help

하지만 제가 사용하는 명령과 추천하는 명령을 알려드리겠습니다.

mydumper -regex ‘^(?!(mysql|information_schema))’ -o /srv/http/backups/mysql -r 100000 -c -e -u root -p tu_password -h localhost -t 2 -v 3

  • -정규식 ‘^(?!(mysql|information_schema))’는 mysql 및 information_schema 테이블을 제외한 모든 테이블을 백업하는 명령입니다.
  • -o /srv/http/backups/mysql은 백업을 저장할 위치에 입력합니다.
  • -r 100000은 청크당 행 수입니다.
  • -c를 사용하여 압축
  • -를 사용하여 테이블이 비어 있어도 테이블의 백업을 생성합니다… 만약을 대비하여…
  • -2는 2개의 스레드를 사용하여 멀티코어 프로세서를 최대한 활용하는 것입니다.
  • -v 3은 로그에서 원하는 정보 수준입니다.

이제 대상 폴더에서 백업의 모든 파일을 볼 수 있어야 합니다.

자동 백업 예약

크론 작업을 예약해야 합니다. 이를 위해서는 크론을 구현해야 합니다. 우분투에서는 이미 설치되어 있고, 아치에서는 설치한 후 다음 세 가지 명령으로 활성화해야 합니다.

sudo pacman -S cronie

sudo systemctl start cronie

sudo systemctl enable cronie

이제 gnome-schedule과 같은 그래픽 클라이언트를 설치해야 합니다. 두 배포판의 리포지토리에 있습니다. 그리고 거기에서 매일 또는 일주일에 한 번 mydumper를 실행하는 명령을 추가할 수 있습니다. 그런 식으로요:

제 경우에서 볼 수 있듯이 매일 23시에 열릴 예정입니다.

클라우드에 MySQL 백업하기

이를 위해 Dropbox 또는 Copy를 사용하려고 합니다. Copy가 Dropbox의 훌륭한 대안이라는 것은 이미 알고 계실 겁니다.

클라우드를 사용하려면 mydumper가 생성된 파일을 저장하는 폴더에서 원하는 서비스의 폴더로 연결되는 심볼릭 링크를 생성하기만 하면 됩니다. 그런 다음 다음 두 명령 중 하나를 사용합니다:

ln -s /srv/http/backups/mysql /home/my_user/Copy/Mysql

또는

ln -s /srv/http/backups/mysql /home/my_user/Dropbox/Mysql

물론 “/srv/http/backups/mysql”을 mydumper가 생성한 내용을 저장하는 위치로 바꾸세요. 여기까지입니다.

한 가지 더, mydumper에는 역방향 프로세스, 즉 데이터베이스에 백업을 로드하는 데 사용되는 myloader라는 또 다른 유틸리티가 함께 제공됩니다. 따라서 몇 가지 테스트를 수행하면 다른 PC간에 데이터베이스를 동기화 할 수 있다고 확신합니다. 아니면 이론적으로는… 테스트해 보지 않았습니다.

다른 기술을 사용하여 백업을 만드는 경우 이에 대해 알고 싶습니다.

답글 남기기