日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
使用xtrabackup工具備份與恢復(fù)MySQL數(shù)據(jù)庫的方法-創(chuàng)新互聯(lián)

下面一起來了解下使用xtrabackup工具備份與恢復(fù)MySQL數(shù)據(jù)庫的方法,相信大家看完肯定會(huì)受益匪淺,文字在精不在多,希望使用xtrabackup工具備份與恢復(fù)MySQL數(shù)據(jù)庫的方法這篇短內(nèi)容是你想要的。

在北侖等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì) 網(wǎng)站設(shè)計(jì)制作按需定制開發(fā),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),全網(wǎng)整合營銷推廣,成都外貿(mào)網(wǎng)站建設(shè),北侖網(wǎng)站建設(shè)費(fèi)用合理。

一. 為什么需要備份

在實(shí)際生產(chǎn)環(huán)境中誤刪操作,硬件損壞都會(huì)導(dǎo)致數(shù)據(jù)不可用,這個(gè)時(shí)候我們就需要備份來實(shí)現(xiàn)災(zāi)難恢復(fù)。還需注意的是硬件級(jí)的冗余,例如raid,也不能取代備份操作,因?yàn)閿?shù)據(jù)誤刪之后數(shù)據(jù)也是沒有的,所以備份必不可少。

二. 備份的分類

1.物理備份和邏輯備份

物理備份 : 它是直接拷貝mysql的存儲(chǔ)在磁盤上的數(shù)據(jù)文件。這種備份使用的空間大,特別是innodb存儲(chǔ)數(shù)據(jù)使用的表空間,因?yàn)楸砜臻g分配大小是按一定的比例增長,所以存在沒有使用的空間。但是恢復(fù)時(shí)使用的時(shí)間少。
邏輯備份 : 將數(shù)據(jù)以sql語句的形式導(dǎo)出。導(dǎo)出數(shù)據(jù)和恢復(fù)數(shù)據(jù)所用的時(shí)間多,但占用空間小。

2.熱備、溫備、冷備

熱備 : 對(duì)線上環(huán)境不見任何鎖,不影響線上任何數(shù)據(jù)庫操作。
溫備 : 在備份之間要獲取鎖,并施加鎖。在加鎖期間會(huì)影響某些操作。
冷備 : 備份之前停掉云服務(wù)器,然后在備份。

使用xtrabackup工具備份與恢復(fù)MySQL數(shù)據(jù)庫的方法

三. XtraBackup

XtraBackup是Percona旗下的一款開源熱備工具,能夠在不鎖數(shù)據(jù)庫的情況下備份MySQL數(shù)據(jù)。它能夠備份InnoDB,XtraDB,MyISAM表,MySQL版本支持5.1,5.5,5.5,5.7。
XtraBackup具有如下功能:

能夠?qū)nnoDB實(shí)現(xiàn)熱備,無需暫停數(shù)據(jù)庫
能夠?qū)ySQL進(jìn)行增量備份
對(duì)MySQL備份能夠?qū)崿F(xiàn)流式壓縮并傳輸給其他云服務(wù)器
MySQL服務(wù)運(yùn)行時(shí)能夠在MySQL云服務(wù)器之間進(jìn)行表的遷移
能夠很容易創(chuàng)建一個(gè)MySQL從云服務(wù)器
備份MySQL時(shí)不會(huì)增加云服務(wù)器負(fù)擔(dān)

XtraBackup能夠帶InnoDB引擎創(chuàng)建的表實(shí)現(xiàn)熱備,對(duì)MyISAM引擎實(shí)現(xiàn)溫備。

四. XtraBackup如何實(shí)現(xiàn)備份

XtraBackup在備份數(shù)據(jù)是先備份InnoDB數(shù)據(jù),再備份MyISAM數(shù)據(jù),最后再記錄此次備份的信息。

1.XtraBackup如何對(duì)InnoDB實(shí)現(xiàn)備份

在解釋原理之前我們需要介紹InnoDB引擎的兩個(gè)重要特性,一個(gè)事務(wù)特性,一個(gè)是存儲(chǔ)數(shù)據(jù)所使用的表空間

1)事務(wù)

在InnoDB引擎中,一旦用戶的操作涉及到修改MySQL數(shù)據(jù),他并不會(huì)直接寫入磁盤,就會(huì)產(chǎn)生一個(gè)事務(wù),并將事務(wù)是記錄在事務(wù)日志中的,而記錄日志是使用的round-robin方式,事務(wù)日志空間大小一定,也就說后面的事務(wù)日志會(huì)覆蓋前面。只有當(dāng)用戶提交事務(wù)后,數(shù)據(jù)才會(huì)持久化到磁盤。

2)表空間

InnoDB存儲(chǔ)數(shù)據(jù)使用的是表空間,在這個(gè)空間中,InnoDB自行組織數(shù)據(jù),所有的數(shù)據(jù)放在page上,每個(gè)page的大小固定默認(rèn)是16KB,你可以通過innodb_page_size將其調(diào)大調(diào)小。一個(gè)page中除了存儲(chǔ)數(shù)據(jù)庫數(shù)據(jù),還存儲(chǔ)了這個(gè)表的元數(shù)據(jù),用于描述此page。其中一個(gè)元數(shù)據(jù)就是log sequence number日志序列號(hào),它是進(jìn)行增量備份的基礎(chǔ)。

3)備份原理

XtraBackup在開始的時(shí)候會(huì)記錄日志序列號(hào)(LSN),然后開始拷貝磁盤上的數(shù)據(jù)文件。在此期間如果數(shù)據(jù)改變了,那么數(shù)據(jù)就處于不同的位置。數(shù)據(jù)改變了,我們不一定要拷貝變化的數(shù)據(jù),我們可以記錄在此期間的改變的事務(wù)日志即可,因?yàn)槭聞?wù)日志也記錄了數(shù)據(jù)的改變。所以在拷貝數(shù)據(jù)期間,XtraBackup會(huì)啟動(dòng)一個(gè)后臺(tái)進(jìn)程監(jiān)控事務(wù)日志,并拷貝在此期間寫入的事務(wù)日志。這個(gè)過程是一個(gè)持續(xù)過程,因?yàn)槭聞?wù)日志會(huì)覆蓋前面的。

4)增量備份實(shí)現(xiàn)原理

在前面提到過增量備份的實(shí)現(xiàn)依賴于LSN,它是一個(gè)page所具有的屬性。那么在備份時(shí)如何利用他實(shí)現(xiàn)增量備份呢?首先我們對(duì)數(shù)據(jù)進(jìn)行完全備份,完全備份時(shí)數(shù)據(jù)有四個(gè)頁,頁的編號(hào)為1,2,3,4。完全備份后如果LSN編為1的page數(shù)據(jù)改變了,此時(shí)他的LSN的編號(hào)在大的LSN編號(hào)加1,也就是說他的編號(hào)會(huì)變?yōu)?,而不是2。同理如果LSN為3的變化了,他的LSN編號(hào)會(huì)變?yōu)?。增量備份的時(shí)候我們只需要備份lsn編號(hào)為5,6的page即可。
由于MyISAM引擎存儲(chǔ)數(shù)據(jù)沒有LSN所以在物理備份下實(shí)現(xiàn)增量備份。

2.XtraBackup備份MyISAM表

XtraBackup是在備份完InnoDB表之后,會(huì)運(yùn)行LOCK TABLES FOR BACKUP拷貝MyISAM表和.frm文件。這個(gè)鎖是在InnoDB數(shù)據(jù)拷貝后添加這個(gè)鎖是一個(gè)backup lock他比FLUSH TABLES WITH READ LOCK這個(gè)鎖更加輕量級(jí)。而且在加鎖期間并不會(huì)影響InnoDB DML操作,這也就是為什么說XtraBackup備份InnoDB是熱備,備份MyISAM是溫備。
拷貝MyISAM時(shí),并不影響InnoDB數(shù)據(jù)的操作,也就是說InnoDB數(shù)據(jù)在改變。這樣會(huì)導(dǎo)致MyISAM和InnoDB數(shù)據(jù)在某一時(shí)刻并不是一致的。為了能讓其數(shù)據(jù)一致,拷貝完之后還需要事務(wù)日志和二進(jìn)制日志。而這個(gè)過程他要施加LOCK BINLOG FOR BACKUP鎖,拷貝完成之后才會(huì)對(duì)二進(jìn)制日志和table解鎖。

3.備份創(chuàng)建的文件解釋

  • backup-my.cnf:它并不是原始的my.cnf,而是Xtrabackup在備份時(shí)獲取的InnoDB引擎的相關(guān)數(shù)據(jù)。預(yù)還原的時(shí)候它會(huì)讀取此文件的內(nèi)容,或者從 XtraBackup --defaults-file指明的文件中讀取。
  • xtrabackup_checkpoints:描述備份的類型(全備或增量備份)、它的狀態(tài)(例如prepared)和他的LSN范圍??煽慈缦率纠?br/>完全備份
    backup_type = full-backuped
    from_lsn = 0
    to_lsn = 15188961605
    last_lsn = 15188961605

    增量備份

    backup_type = incremental
    from_lsn = 15188961605
    to_lsn = 15189350111
    last_lsn = 15189350111
  • xtrabackup_binlog_info:在備份的那一刻云服務(wù)器二進(jìn)制所處的位置,通過SHOW MASTER STATUS獲取
  • xtrabackup_binlog_pos_innodb:InnoDB表當(dāng)前所處的二進(jìn)制位置。與InnoDB事務(wù)相關(guān)
  • xtrabackup_logfile:在備份過程中拷貝的事務(wù)日志,用于預(yù)還原

五.實(shí)驗(yàn)

本實(shí)驗(yàn)將會(huì)演示備份和還原操作,使用innobackup命令。
操作系統(tǒng)為centos 7.2
MySQL版本為5.5

1.安裝Percona-Xtrabackup

~]# wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.4/binary/redhat/7/x86_64/Percona-XtraBackup-2.4.4-rdf58cf2-el7-x86_64-bundle.tar
展開tarball 其中包含三個(gè)rpm,
percona-xtrabackup-24:包含最新的Percona XtraBackup GA 二進(jìn)制以及相關(guān)文件
percona-xtrabackup-24-debuginfo:用于調(diào)試percona-xtrabackup-24中的二進(jìn)制程序
percona-xtrabackup-test-24:Percona Xtrabackup測試組件
~]# tar xf Percona-XtraBackup-2.4.4-rdf58cf2-el7-x86_64-bundle.tar   
~]# yum install -y percona-xtrabackup-24-debuginfo-2.4.4-1.el7.x86_64.rpm percona-xtrabackup-24-2.4.4-1.el7.x86_64.rpm percona-xtrabackup-test-24-2.4.4-1.el7.x86_64.rpm

2.對(duì)數(shù)據(jù)進(jìn)行完全備份及其還原

1)創(chuàng)建完全備份

~]# innobackupex --defaults-file=/etc/my.cnf --user=root --host=127.0.0.1 --password=123456  /backups/full
完全備份成功的話,最后的輸出信息會(huì)出現(xiàn)completed OK!

  • 參數(shù)解釋
    --defaults-file:讀取mysql默認(rèn)的參數(shù),這個(gè)要是命令行的第一個(gè)參數(shù),不能是符號(hào)鏈接文件。
    --user --host --password 登錄主機(jī),用戶名和密碼
    /backups/full:備份目錄,如果沒有會(huì)自動(dòng)創(chuàng)建
  • 生成文件

    [root@slave ~]# ls -l /backups/full/
    total 0
    drwxr-x---. 7 root root 227 Mar 16 14:20 2018-03-16_14-20-35
    [root@slave ~]# ls -l /backups/full/2018-03-16_14-20-35/
    total 18460
    -rw-r-----. 1 root root    417 Mar 16 14:20 backup-my.cnf
    drwxr-x---. 2 root root    272 Mar 16 14:20 hellodb
    -rw-r-----. 1 root root 18874368 Mar 16 14:20 ibdata1
    drwxr-x---. 2 root root   4096 Mar 16 14:20 mysql
    drwxr-x---. 2 root root   4096 Mar 16 14:20 performance_schema
    drwxr-x---. 2 root root    62 Mar 16 14:20 pt
    drwxr-x---. 2 root root    20 Mar 16 14:20 test
    -rw-r-----. 1 root root    25 Mar 16 14:20 xtrabackup_binlog_info
    -rw-r-----. 1 root root    113 Mar 16 14:20 xtrabackup_checkpoints
    -rw-r-----. 1 root root    522 Mar 16 14:20 xtrabackup_info
    -rw-r-----. 1 root root   2560 Mar 16 14:20 xtrabackup_logfile

    innobackupex會(huì)在指定存放數(shù)據(jù)的目錄下用當(dāng)前時(shí)間創(chuàng)建一個(gè)目錄,所有生成的備份文件都會(huì)這個(gè)時(shí)間目錄下。

  • __查看xtrabackup_checkpoints文件__
    backup_type = full-backuped
    from_lsn = 0
    to_lsn = 1843549
    last_lsn = 1843549
    compact = 0
    recover_binlog_info = 0

    可以通過backup_type看到這是一個(gè)完全備份,lsn從0到1843549。

2)完全備份還原

這個(gè)備份不能用于恢復(fù),因?yàn)閭浞莸臄?shù)據(jù)中可能會(huì)包含尚未提交的事務(wù)或已經(jīng)提交但尚未同步至數(shù)據(jù)文件中的事務(wù),此時(shí)數(shù)據(jù)文件處于不一致的狀態(tài)。因此,我們現(xiàn)在就是要通過回滾未提交的事務(wù)及同步已經(jīng)提交的事務(wù)至數(shù)據(jù)文件也使得數(shù)據(jù)文件處于一致性狀態(tài)。

  • 預(yù)還原
    ~]# innobackupex --apply-log --redo-only /backups/full/2018-03-16_14-20-35/
    預(yù)還原成功的話,最后的輸出信息會(huì)出現(xiàn)completed OK!
    參數(shù)說明

    --apply-log:應(yīng)用在備份期間產(chǎn)生的事務(wù)日志。
    --redo-only:表明應(yīng)用日志的方式,將提交的日志重新提交,沒有提交的事務(wù)不要回滾,因?yàn)樗苡锌赡茉谙聜€(gè)備份中提交了。
  • 還原
    還原時(shí),mysql云服務(wù)器需要關(guān)閉,而且數(shù)據(jù)目錄需要為空。
    ~]# systemctl stop mariadb
    ~]# mv /var/lib/mysql /tmp
    ~]# mkdir /var/lib/mysql
    ~]# innobackupex --defaults-file=/etc/my.cnf --copy-back  /backups/full/2018-03-16_14-20-35/
    ~]# chown -R mysql.mysql /var/lib/mysql
    ~]# systemctl start mariadb

2.完全備份+增量備份及其還原

  • 備份
    完全備份
    ~]# innobackupex --defaults-file=/etc/my.cnf --user=root --host=127.0.0.1 --password=123456  /backups/full
    第一次增量備份
    ~]# innobackupex --defaults-file=/etc/my.cnf --user=root --host=127.0.0.1 --password=123456 --incremental /backups/incr-1  --incremental-basedir=/backups/full/2018-03-16_14-20-35/
    第二次增量備份
    ~]# innobackupex --defaults-file=/etc/my.cnf --user=root --host=127.0.0.1 --password=123456 /backups/incr-2 /backups/incr-2 --incremental-basedir=/backups/incr-1/2018-03-16_15-20-32/
    參數(shù)說明

    --incremental 表明此備份為增量備份。
    --incremental-basedir 指明增量備份一誰為基礎(chǔ)。
    /backups/incr-1 指明備份所放置的目錄
  • 預(yù)還原
    完全備份預(yù)還原
    ~]#  innobackupex --apply-log --redo-only /backups/full/2018-03-16_14-20-35/
    第一次增量備份預(yù)還原
    ~]#  innobackupex --apply-log --redo-only /backups/incr-1/2018-03-16_15-20-32/ --incremental-dir=/backups/full/2018-03-16_14-20-35/
    第二次增量備份與還原
    ~]#  innobackupex --apply-log --redo-only /backups/incr-1/2018-03-16_16-01-44/ --incremental-dir=/backups/full/2018-03-16_14-20-35/

    --incremental-dir:指明以哪個(gè)備份作為還原處理。
  • 還原
    參考備份還原

六. 備份腳本

#!/bin/bash
# Description: innobackupex backup MySQL
# Date: 2018-01-23
# Version: 0.1.0
# Author: lirou

#這個(gè)備份計(jì)劃以一周為一個(gè)周期,周一為完全備份,周二到周日都是以周一為基礎(chǔ)的增量備份。
#以一周還原的時(shí)候只需要周一的完全備份和周日的增量備份即可。

backup_dir_parent=/var/lib/mysql/backups
backup_dir=
full_backup_dir=
increment_backup_dir=
backup_times=
backup_max_times=5

#登錄云服務(wù)器參數(shù)
mysql_host=127.0.0.1
mysql_user=root
mysql_password=123456
#MySQL服務(wù)配置文件
defaults_file=/etc/my.cnf

#記錄備份是輸出的信息
backup_log=/var/log/innobackup/innobackup.log
#記錄每次備份是否成功
backup_status=/var/log/innobackup/innobackup.status

! [ -d $backup_dir_parent ] && mkdir -pv $backup_dir_parent
! [ -d $backup_log ] && mkdir -pv $backup_log

week=$(date "+%u")

if [ $week -eq 1 ]; then

   backup_times=$(ls -l $backup_dir_parent | grep -i '^d.*backup.*' | wc -l)  
   if [ $backup_times -ge $backup_max_times ];then
     rm -rf ${backup_dir_parent}/$(ls -lt $backup_dir_parent |tail -l)
   fi

   backup_dir=${backup_dir_parent}/backup-$(date "+%Y-%m-%d")
   full_backup_dir=${backup_dir}/full
   innobackupex --defaults-file=${defaults_file} --host=${mysql_host} --user=${mysql_user} --password=${mysql_password} ${full_backup_dir} &> $backup_log
else
   backup_dir=${backup_dir_parent}/$(ls  -lt $backup_dir_parent | grep -i '^d.*backup.*' | head -1 | grep -o 'backup.*')
   increment_backup_dir=${backup_dir}/incr-${week}
   innobackupex --defaults-file=${defaults_file} --host=${mysql_host} --user=${mysql_user} --password=${mysql_password} --incremental=${backup_dir}/full ${increment_backup_dir} &> $backup_log 
fi

echo "$(date '+%Y-%m-%d'):$?" >>  $backup_status 

此備份腳本在制作定時(shí)任務(wù)時(shí),一定要確保周一的完全備份執(zhí)行了,因?yàn)橹芏街苋盏脑隽慷家运麨榛A(chǔ)。

看完使用xtrabackup工具備份與恢復(fù)MySQL數(shù)據(jù)庫的方法這篇文章后,很多讀者朋友肯定會(huì)想要了解更多的相關(guān)內(nèi)容,如需獲取更多的行業(yè)信息,可以關(guān)注我們的行業(yè)資訊欄目。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


文章題目:使用xtrabackup工具備份與恢復(fù)MySQL數(shù)據(jù)庫的方法-創(chuàng)新互聯(lián)
瀏覽地址:http://www.dlmjj.cn/article/jdeoj.html