데이터 베이스 MySQL 튜토리얼 MySQL开源备份工具Xtrabackup备份部署

MySQL开源备份工具Xtrabackup备份部署

Jun 07, 2016 pm 05:29 PM
MySQL 백업 xtrabackup

Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好

  Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品。

  Xtrabackup有两个主要的工具:xtrabackup、innobackupex

  1、xtrabackup只能备份InnoDB和XtraDB两种数据表,而不能备份MyISAM数据表

  2、innobackupex是参考了InnoDB Hotbackup的innoback脚本修改而来的.innobackupex是一个perl脚本封装,封装了xtrabackup。主要是为了方便的 同时备份InnoDB和MyISAM引擎的表,但在处理myisam时需要加一个读锁。并且加入了一些使用的选项。如slave-info可以记录备份恢 复后,作为slave需要的一些信息,根据这些信息,可以很方便的利用备份来重做slave。
   
  Xtrabackup下载地址:
 
  选择合适的版本,,我这里选择binary。
 
  解压到/usr/src/目录,解压后目录名percona-xtrabackup-2.1.3,进入到bin目录,即可直接使用innobackupex命令
  # pwd
  /usr/src/percona-xtrabackup-2.1.3/bin
  # ls -l
  total 112396
  -rwxr-xr-x 1 root root  110738 Jun  7 11:43 innobackupex
  -rwxr-xr-x 1 root root  110738 Jun  7 11:43 innobackupex-1.5.1
  -rwxr-xr-x 1 root root  2211237 Jun  7 11:43 xbcrypt
  -rwxr-xr-x 1 root root  2285672 Jun  7 11:43 xbstream
  -rwxr-xr-x 1 root root 13033745 Jun  7 11:43 xtrabackup
  -rwxr-xr-x 1 root root 16333506 Jun  7 11:43 xtrabackup_55
  -rwxr-xr-x 1 root root 80988093 Jun  7 11:43 xtrabackup_56
 
  在开始使用的时候可能会报如下错误:
  sh: xtrabackup_55: command not found
  innobackupex: fatal error: no 'mysqld' group in MySQL options 

  解决办法xtrabackup_55复制到/usr/bin下即可。

  # cp /usr/src/percona-xtrabackup-2.1.3/bin/xtrabackup_55 /usr/bin/
 
 
  建立mysql备份用户:
  mysql> GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'backupuser'@'localhost' identified by 'skEBfef5E2';
  mysql> FLUSH PRIVILEGES;
   
备份脚本内容(每周一次全备,六次增量备份,保留2周的备份,并压缩):

#!/bin/bash
BEGINTIME=`date +"%Y-%m-%d %H:%M:%S"`
format_time=`date +"%Y-%m-%d_%H:%M:%S"`
week=`date +%w`
backupbin=/usr/src/percona-xtrabackup-2.1.3/bin
backdir=/data/databasebak/bak
file_cnf=/etc/my.cnf
user_name=backupuser
password="skEBfef5E2"
db="db1 db2 db3 db4"
out_log=$backdir/xtrabackup_log_$format_time
time_cost=$backdir/xtrabackup_time.txt

if [ -f "$backdir.lastlastlastweek.gz" ];then
        rm -rf $backdir.lastlastweek.gz
        mv $backdir.lastweek.gz $backdir.lastlastweek.gz
fi

if [ -d "$backdir/rec5" ];then
        gzip -cr $backdir >$backdir.lastweek.gz
        rm -rf $backdir         
        mkdir $backdir
fi
 
#full
if [ ! -d "$backdir/full" ];then
        echo "#####start full backup at $BEGINTIME to directory full" >>$time_cost
        $backupbin/innobackupex --defaults-file=$file_cnf --no-timestamp --user=$user_name --password=$password --slave-info --databases="$db" $backdir/full 1> $out_log 2>&1
        break;
elif [ ! -d "$backdir/rec0" ];then
        echo "#####start 0 incremental backup at $BEGINTIME to directory rec0" >>$time_cost
        $backupbin/innobackupex --defaults-file=$file_cnf  --no-timestamp --user=$user_name --password=$password --slave-info --databases="$db" --incremental --incremental-basedir=$backdir/full $backdir/rec0 1> $out_log 2>&1
        break;
elif [ ! -d "$backdir/rec1" ];then
        echo "#####start 1 incremental backup at $BEGINTIME to directory rec1" >>$time_cost
        $backupbin/innobackupex --defaults-file=$file_cnf  --no-timestamp --user=$user_name --password=$password --slave-info --databases="$db" --incremental --incremental-basedir=$backdir/rec0 $backdir/rec1 1> $out_log 2>&1
        break;
elif [ ! -d "$backdir/rec2" ];then
        echo "#####start 2 incremental backup at $BEGINTIME to directory rec2" >>$time_cost
        $backupbin/innobackupex --defaults-file=$file_cnf  --no-timestamp --user=$user_name --password=$password --slave-info --databases="$db" --incremental --incremental-basedir=$backdir/rec1 $backdir/rec2 1> $out_log 2>&1
        break;
elif [ ! -d "$backdir/rec3" ];then
        echo "#####start 3 incremental backup at $BEGINTIME to directory rec3" >>$time_cost
        $backupbin/innobackupex --defaults-file=$file_cnf  --no-timestamp --user=$user_name --password=$password --slave-info --databases="$db" --incremental --incremental-basedir=$backdir/rec2 $backdir/rec3 1> $out_log 2>&1
        break;
elif [ ! -d "$backdir/rec4" ];then
        echo "#####start 4 incremental backup at $BEGINTIME to directory rec4" >>$time_cost
        $backupbin/innobackupex --defaults-file=$file_cnf  --no-timestamp --user=$user_name --password=$password --slave-info --databases="$db" --incremental --incremental-basedir=$backdir/rec3 $backdir/rec4 1> $out_log 2>&1
        break;
elif [ ! -d "$backdir/rec5" ];then
        echo "#####start 5 incremental backup at $BEGINTIME to directory rec5" >>$time_cost
        $backupbin/innobackupex --defaults-file=$file_cnf  --no-timestamp --user=$user_name --password=$password --slave-info --databases="$db" --incremental --incremental-basedir=$backdir/rec4 $backdir/rec5 1> $out_log 2>&1
        break;
 fi
 ENDTIME=`date +"%Y-%m-%d %H:%M:%S"`
 begin_data=`date -d  "$BEGINTIME" +%s`
 end_data=`date -d  "$ENDTIME" +%s`
 spendtime=`expr $end_data - $begin_data`
 echo "it takes $spendtime sec for packing the data directory" >>$time_cost

部署备份脚本;

# crontab -l

10 2 * * *  /opt/cron/mysqldbbakup.sh

恢复:

#全备恢复:

innobackupex --apply-log --redo-only  --defaults-file=$file_cnf --user=$user_name --password=$password    $backdir/full

#增备恢复,修改增量备份目录,逐个apply-log,到第五天的增量rec4都是输出都显示innobackupex: completed OK!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 채팅 명령 및 사용 방법
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

mysql의 증분 백업에 Xtrabackup을 사용하는 방법 mysql의 증분 백업에 Xtrabackup을 사용하는 방법 May 30, 2023 pm 02:50 PM

Inside를 이용한 MySQL 증분 백업은 바이너리가 1개뿐이다. 또한, 호환성상의 이유로 innobackupex는 xtrabackup의 소프트 링크로 사용된다. 즉, xtrabackup은 이제 Innodb가 아닌 테이블 백업을 지원하며, Innobackupex는 다음 버전에서 제거될 예정이다. (8.0은 제거되었습니다.) xtraba를 사용하는 것이 좋습니다.

MySql을 위한 다양한 백업 솔루션: MySQL 백업을 효율적으로 생성하고 복원하는 방법 MySql을 위한 다양한 백업 솔루션: MySQL 백업을 효율적으로 생성하고 복원하는 방법 Jun 15, 2023 pm 03:28 PM

MySql은 다양한 비즈니스 및 애플리케이션 시나리오에서 널리 사용되는 일반적으로 사용되는 관계형 데이터베이스 관리 시스템입니다. MySQL 백업 문제의 경우 백업 계획의 선택과 실행 방법이 중요합니다. 이 기사에서는 다양한 백업 옵션과 MySQL 백업을 효율적으로 생성 및 복원하는 방법을 소개합니다. 1. 백업 계획 선택 MySQL 백업 계획을 선택하는 과정에서는 비즈니스 시나리오와 실제 상황을 바탕으로 자신에게 적합한 백업 계획을 선택해야 합니다. 콜드 백업 소위 콜드 백업은 MySQL 데이터베이스를 완성하는 것입니다.

재해 복구를 위해 MySQL 데이터 백업 및 복구 도구를 사용하는 방법 재해 복구를 위해 MySQL 데이터 백업 및 복구 도구를 사용하는 방법 Aug 02, 2023 am 09:06 AM

재해 복구를 위해 MySQL 데이터 백업 및 복구 도구를 사용하는 방법 데이터 백업 및 복구는 데이터베이스 관리 프로세스에서 매우 중요한 부분입니다. 데이터를 백업하면 우발적인 손상, 하드웨어 오류 또는 기타 재앙적인 사건으로부터 데이터베이스를 보호할 수 있습니다. 널리 사용되는 관계형 데이터베이스 관리 시스템인 MySQL은 데이터 백업 및 복구를 달성하기 위한 몇 가지 강력한 도구를 제공합니다. 이 기사에서는 MySQL의 데이터 백업 및 복구 도구를 사용하여 재해 복구를 수행하는 방법을 소개합니다. MySQL 데이터 백업 도구-mysql

MySQL 데이터베이스에서 ibd 파일을 효과적으로 관리하고 유지하는 방법 MySQL 데이터베이스에서 ibd 파일을 효과적으로 관리하고 유지하는 방법 Mar 16, 2024 am 11:21 AM

MySQL 데이터베이스에서 각 InnoDB 테이블은 테이블의 데이터와 인덱스를 저장하는 .ibd 파일에 해당합니다. 따라서 MySQL 데이터베이스의 관리 및 유지 관리를 위해서는 ibd 파일 관리도 특히 중요합니다. 이 기사에서는 MySQL 데이터베이스에서 ibd 파일을 효과적으로 관리하고 유지하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 1. 테이블 공간 확인 및 최적화 먼저 다음 SQL 문을 사용하여 테이블의 디스크 공간 사용량을 확인할 수 있습니다. SELECTTAB

데이터에 대한 MySQL 롤링 백업 기술 데이터에 대한 MySQL 롤링 백업 기술 Jun 15, 2023 pm 07:47 PM

MySQL은 다양한 분야에서 널리 사용되는 인기 있는 관계형 데이터베이스입니다. 그러나 다른 애플리케이션과 마찬가지로 MySQL에는 데이터 손상, 충돌, 악의적인 공격과 같은 위험이 있습니다. 따라서 데이터를 백업하는 것이 중요합니다. 백업은 데이터에 보안과 일종의 "실행 취소" 기능을 제공하여 불안정성과 위험을 줄이거나 제거할 수도 있습니다. 가장 일반적인 백업 유형은 전체 백업과 증분 백업입니다. 그러나 자주 실시간 백업이 필요한 경우 롤링 백업이 더 나은 접근 방식입니다. 롤링 백업은 허용 가능한 경우입니다.

MySql 데이터베이스 백업: 효율적인 MySQL 데이터베이스 백업 및 복구를 달성하는 방법 MySql 데이터베이스 백업: 효율적인 MySQL 데이터베이스 백업 및 복구를 달성하는 방법 Jun 15, 2023 pm 11:37 PM

MySQL은 현재 가장 널리 사용되는 관계형 데이터베이스 관리 시스템 중 하나입니다. 그 효율성과 안정성으로 인해 많은 기업과 개발자가 가장 먼저 선택합니다. 하지만 여러 가지 이유로 MySQL 데이터베이스를 백업해야 합니다. MySQL 데이터베이스를 백업하는 것은 백업이 실패하면 중요한 데이터가 손실될 수 있기 때문에 쉬운 작업이 아닙니다. 따라서 데이터 무결성과 복구 가능성을 보장하려면 효율적인 MySQL 데이터베이스 백업 및 복구를 달성하기 위한 몇 가지 조치를 취해야 합니다. 이 기사에서는 달성하는 방법을 소개합니다.

MySQL 데이터베이스 백업 및 복구 성능 튜닝 프로젝트 경험 분석 MySQL 데이터베이스 백업 및 복구 성능 튜닝 프로젝트 경험 분석 Nov 04, 2023 am 09:46 AM

MySQL 데이터베이스 백업 및 복구 성능 튜닝 프로젝트 경험 분석 일상적인 운영 및 유지 관리에 있어 MySQL 데이터베이스 백업 및 복구 작업은 필수적입니다. 그러나 멀티테라바이트 또는 페타바이트 수준의 데이터 규모에서는 백업 및 복구에 필요한 시간과 리소스 소비가 데이터베이스 성능을 제한하는 주요 요인이 되는 경우가 많습니다. 본 글에서는 대규모 인터넷 기업을 대상으로 한 백업 및 복구 성능 튜닝의 실제 사례를 통해 몇 가지 실무 경험과 기술을 공유하겠습니다. 1. 백업 솔루션 선택 다양한 비즈니스 요구 사항과 데이터 규모에 따라 백업 솔루션 선택도 고려해야 합니다.

MySQL 백업 및 복구에 대한 종합 가이드 MySQL 백업 및 복구에 대한 종합 가이드 Jun 15, 2023 am 09:48 AM

MySQL은 현재 가장 널리 사용되는 관계형 데이터베이스 관리 시스템 중 하나이며 엔터프라이즈 수준 애플리케이션에서 널리 사용됩니다. 개발자이든 데이터 관리자이든 MySQL 백업 및 복구에 대한 기본 지식을 이해해야 합니다. 백업 및 복구는 기업이 데이터를 보호하는 데 도움이 될 뿐만 아니라 시스템이 불리한 상황에 신속하게 대응하고 가능한 한 정상적인 작동 조건으로 복원할 수 있도록 지원합니다. 이 기사에서는 MySQL 백업 및 복구 단계를 자세히 설명하고 독자가 MySQL 데이터베이스를 보호하는 데 도움이 되는 몇 가지 모범 사례를 제공합니다.

See all articles