首頁 資料庫 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 Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 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整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

怎麼利用Xtrabackup進行mysql增量備份 怎麼利用Xtrabackup進行mysql增量備份 May 30, 2023 pm 02:50 PM

利用Xtrabackup進行mysql增量備份現在xtrabackup版本升級到了8.0,但是只對mysql8.0才有支援,我們這還是使用2.4,但是2.4相比之前的2.1有了比較大的變化:innobackupex功能全部集成到xtrabackup裡面,只有一個binary,另外為了使用上的兼容考慮,innobackupex作為xtrabackup的一個軟鏈,即xtrabackup現在支持非Innodb表備份,並且Innobackupex在下一版本中移除(8.0已經移除了),建議通過xtraba

MySql的多種備份方案:如何有效率地建立和還原MySQL備份 MySql的多種備份方案:如何有效率地建立和還原MySQL備份 Jun 15, 2023 pm 03:28 PM

MySql是一種常用的關係型資料庫管理系統,被廣泛應用於各種業務和應用場景。對於MySQL的備份問題,備份方案的選擇和執行方法至關重要。在本文中,我們將介紹多種備份方案,以及如何有效率地建立和還原MySQL備份。一、備份方案的選擇在選擇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資料庫備份與復原的工作是不可或缺的。然而,面對數TB甚至PB級別的資料規模,備份復原所需的時間和資源消耗往往成為限制資料庫效能的關鍵因素。本文將透過一個大型網路企業備份恢復效能調優的實務案例,分享一些實用的經驗與技巧。一、備份方案選擇針對不同的業務需求和資料規模,備份方案的選擇也應考慮

MySQL備份與復原全面指南 MySQL備份與復原全面指南 Jun 15, 2023 am 09:48 AM

MySQL是目前最受歡迎的關聯式資料庫管理系統之一,在企業級應用中被廣泛使用。無論是開發者還是資料管理員,都需要了解MySQL備份與復原的基本知識。備份和復原不僅能夠幫助企業保護數據,還能夠使系統在不良情況下快速應對,盡可能使其恢復到正常運作狀態。本文將詳細介紹MySQL備份與復原的操作步驟,並提供一些最佳實踐,以協助讀者在保護其MySQL資料庫方面走得更遠。

See all articles