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!

핫 AI 도구

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

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

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

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

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

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

뜨거운 주제











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

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

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

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

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

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

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

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