<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        Xtrabackup與innobackupex熱備份MySQL數據_MySQL

        來源:懂視網 責編:小采 時間:2020-11-09 20:14:13
        文檔

        Xtrabackup與innobackupex熱備份MySQL數據_MySQL

        Xtrabackup與innobackupex熱備份MySQL數據_MySQL:Xtrabackup與innobackupex熱備份MySQL數據 一.Xtrabackup 簡介及備份原理說明: Xtrabackup是由percona開發的一個開源軟件,能夠非常快速地備份與恢復mysql數據庫,且支持在線熱備份(備份時不影響數據讀寫),此軟件可以說是innodb熱備工具ibb
        推薦度:
        導讀Xtrabackup與innobackupex熱備份MySQL數據_MySQL:Xtrabackup與innobackupex熱備份MySQL數據 一.Xtrabackup 簡介及備份原理說明: Xtrabackup是由percona開發的一個開源軟件,能夠非常快速地備份與恢復mysql數據庫,且支持在線熱備份(備份時不影響數據讀寫),此軟件可以說是innodb熱備工具ibb

        Xtrabackup與innobackupex熱備份MySQL數據

        一.Xtrabackup 簡介及備份原理說明:

        Xtrabackup是由percona開發的一個開源軟件,能夠非常快速地備份與恢復mysql數據庫,且支持在線熱備份(備份時不影響數據讀寫),此軟件可以說是innodb熱備工具ibbackup的一個開源替代品

        Xtrabackup中包含兩個工具:

        1、xtrabackup:用于熱備份innodb,xtradb引擎表的工具,不能備份其他表。

        2、innobackupex:對xtrabackup封裝的perl腳本,提供了用于myisam(會鎖表)和innodb引擎,及混合使用引擎備份的能力。

        Xtrabackup可以做什么

        1、在線(熱)備份整個庫的InnoDB, XtraDB表

        2、在xtrabackup的上一次整庫備份基礎上做增量備份(innodb only)

        3、以流的形式產生備份,可以直接保存到遠程機器上(本機硬盤空間不足時很有用)

        MySQL數據庫本身提供的工具并不支持真正的增量備份,二進制日志恢復是point-in-time(時間點)的恢復而不是增量備份。Xtrabackup工具支持對InnoDB存儲引擎的增量備份,工作原理如下:

        (1)首先完成一個完全備份,并記錄下此時檢查點的LSN(Log Sequence Number)。

        (2)在進程增量備份時,比較表空間中每個頁的LSN是否大于上次備份時的LSN,如果是,則備份該頁,同時記錄當前檢查點的LSN。

        在Xtrabackup的wiki上簡單的介紹了一下實現的原理:

        首先,在logfile中找到并記錄最后一個checkpoint(“last checkpoint LSN”),然后開始從LSN的位置開始拷貝InnoDB的logfile到xtrabackup_logfile;接著,開始拷貝全部的數據文件.ibd;在拷貝全部數據文件結束之后,才停止拷貝logfile。

        因為logfile里面記錄全部的數據修改情況,所以,即使在備份過程中數據文件被修改過了,恢復時仍然能夠通過解析xtrabackup_logfile保持數據的一致。

        Tip1:Xtrabackup是一個用于備份InnoDB/XtrDB的工具,真正的在線備份(不影響數據的讀寫),InnoDB Hot Backup的開源替代品。

        Tip2:在使用參數stream=tar備份的時候,你的xtrabackup_logfile可能會臨時放在/tmp目錄下,如果你備份的時候并發寫入較大的話xtrabackup_logfile可能會很大(5G+),很可能會撐滿你的/tmp目錄,可以通過參數--tmpdir指定目錄來解決這個問題。

        備份原理

        XtraBackup基于InnoDB的crash-recovery功能。它會復制innodb的data file,由于不鎖表,復制出來的數據是不一致的,在恢復的時候使用crash-recovery,使得數據恢復一致。

        InnoDB維護了一個redo log,又稱為transaction log,事務日志,它包含了innodb數據的所有改動情況。當InnoDB啟動的時候,它會先去檢查data file和transaction log,并且會做二步操作:

        1.It applies committed transaction log entries to the data files

        2.it performs an undo operation on any transactions that modified data but did not commit.

        XtraBackup在備份的時候,一頁一頁地復制innodb的數據,而且不鎖定表,與此同時,XtraBackup還有另外一個線程監視著transactions log,一旦log發生變化,就把變化過的log pages復制走。為什么要急著復制走呢? 前幾章的時候就提過這個問題,因為transactions log文件大小有限,寫滿之后,就會從頭再開始寫,所以新數據可能會覆蓋到舊的數據。

        在prepare過程中,XtraBackup使用復制到的transactions log 對備份出來的innodb data file進行crash recovery。

        實現細節

        文件權限

        xtrabackup以read-write模式打開innodb的數據文件,然后對其進行復制。其實它不會修改此文件。也就是說,運行xtrabackup的用戶,必須對innodb的數據文件具有讀寫權限。

        為什么要用rw模式呢?直接read模式不好么?因為xtrabackup采用了其內置的innodb庫來打開文件,而innodb庫打開文件的時候就是rw的。

        Tuning the OS Buffers

        因為XtraBackup要從文件系統中復制大量的數據,所以它盡可能地使用posix_fadvise(),來告訴OS不要緩存讀取到的數據,從而提升性能。因為這些數據不會重用到了,OS卻沒有這么聰明。如果要緩存一下的話,幾個G的數據,會對OS的虛擬內存造成很大的壓力,其它進程,比如mysqld很有可能被swap出去,這樣系統就會受到很大影響了。

        posix_fadvise(file,0,0, POSIX_FADV_DONTNEED)

        而且XtraBackup在讀取數據的時候還盡可能地預讀:

        posix_fadvise(file,0,0, POSIX_FADV_SEQUENTIAL)

        復制數據文件

        在備份innodb page的過程中,XtraBackup每次讀寫1MB的數據,1MB/16KB=個page。

        這個不可配置。讀1MB數據之后,XtraBackup一頁一頁地遍歷這1MB數據,使用innodb的buf_page_is_corrupted()函數檢查此頁的數據是否正常,如果數據不正常,就重新讀取這一頁,最多重新讀取10次,如果還是失敗,備份就失敗了,退出。

        It skips this check on the doublewrite buffer??

        在復制transactions log的時候,每次讀寫512KB的數據。同樣不可以配置。

        二.下載及安裝配置

        1. Xtrabackup二進制位下載地址:

        http://www.percona.com/downloads/XtraBackup/XtraBackup-1.6/Linux/binary/x86_/

        2.MySQL5.1.56的下載地址:

        http://dev.mysql.com/downloads/mysql/5.1.html#downloads

        操作系統環境:

        CentOS release 5.4 (Final) x86_ GNU/Linux 2.6.18-1.el5

        2.安裝配置

        (1)安裝配置mysql-5.1.56

        在MySQL 5.1.38前的版本中,當你需要安裝InnoDB Plugin時,必須下載Plugin的文件,解壓后再進行一系列的安裝。從MySQL 5.1.38開始往后,MySQL包含了2個不同版本的InnoDB存儲引擎—一個是舊版本的引擎,稱之為build-in innodb;另一個是1.0.4版本的InnoDB存儲引擎。

        Shell> tar –zxvvf mysql-5.1.56.tar.gz

        Shell> cd mysql-5.1.56

        Shell> ./configure --prefix=/opt/mysql5156 \

        --with-charset=utf8 --with-collation=utf8_general_ci \

        --with-extra-charsets=latin1,gb2312 \

        --with-plugins=innobase,innodb_plugin,myisam,heap,csv,federated,blackhole \

        --enable-local-infile --enable-thread-safe-client

        Shell> make

        Shell >make install

        Shell> cp support-files/my-medium.cnf /etc/my.cnf

        Shell>cd /opt/mysql5156

        Shell>chown -R mysql .

        Shell>chgrp -R mysql .

        Shell>bin/mysql_install_db -user=mysql

        Shell>chown -R root .

        Shell> chown -R mysql var

        配置啟動plugin-innodb

        Shell > vi /etc/my.cnf

        port= 3307

        socket = /tmp/mysql5156.sock

        [mysqld]

        port= 3307

        socket = /tmp/mysql5156.sock

        ignore_builtin_innodb

        啟動:shell>/opt/mysql5156/bin/mysqld_safe –user=mysql &

        加載plugin-innodb:

        mysql>INSTALL PLUGIN INNODB SONAME 'ha_innodb_plugin.so';

        mysql >INSTALL PLUGIN INNODB_TRX SONAME 'ha_innodb_plugin.so';

        mysql >INSTALL PLUGIN INNODB_LOCKS SONAME 'ha_innodb_plugin.so';

        mysql >INSTALL PLUGIN INNODB_LOCK_WAITS SONAME 'ha_innodb_plugin.so';

        mysql >INSTALL PLUGIN INNODB_CMP SONAME 'ha_innodb_plugin.so';

        mysql >INSTALL PLUGIN INNODB_CMP_RESET SONAME 'ha_innodb_plugin.so';

        mysql >INSTALL PLUGIN INNODB_CMPMEM SONAME 'ha_innodb_plugin.so';

        mysql >INSTALL PLUGIN INNODB_CMPMEM_RESET SONAME 'ha_innodb_plugin.so';

        上述語句只需執行一次就ok了,即使重啟mysqld也不需要再次安裝了。

        mysql > show plugins;

        mysql> select @@innodb_version;

        +------------------+

        | @@innodb_version |

        +------------------+

        | 1.0.15 |

        +------------------+

        1 row in set (0.00 sec)

        mysql執行INSTALL PLUGIN INNODB SONAME 'ha_innodb_plugin.so';如果報錯提示:ERROR 12 (HY000): The ‘plugin’ feature is disabled; you need MySQL built with ‘HAVE_DLOPEN’ to have it working

        經上網搜索找到解決問題方法:

        在編譯時不要用靜態編譯,將下面兩個從編譯參數中刪除:

        --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static。至于原因不是很清楚。

        (2)安裝配置Xtrabackup

        先看看如何安裝Xtrabackup,最簡單的安裝方式是使用RPM包,不過想使用源代碼方式安裝的話,其安裝方式有點古怪,因為它采用的在MySQL源代碼上打補丁構建的方式安裝的。這里使用二進制包的安裝方式,相對比較靈活。

        Shell> mkdir /usr/local/xtrabackup

        Shell> tar -zxvf xtrabackup-1.6.tar.gz -C /usr/local/xtrabackup

        Shell>cd /usr/local/xtrabackup/bin

        Shell>ln -s innobackupex-1.5.1 innobackupex

        配置環境變量:

        Shell>export PATH=$PATH:/usr/local/xtrabackup/bin

        修改mysql配置文件:

        Shell> vi /etc/my.cnf

        添加或修改:datadir = /usr/local/mysql/var(數據庫目錄)

        特別注意:default_table_type = InnoDB (必須改,否則進行增量備份的時候不成功)

        三.xtrabackup的備份與恢復使用

        關于xtrabackup的參數選項,如下:

        --defaults-file=

        #默認配置文件的路徑,如果補該參數,xtrabackup將從依次從以下位置查找配置文件:

        /etc/my.cnf

        /etc/mysql/my.cnf

        /usr/local/etc/my.cnf

        ~/.my.cnf

        并讀取配置文件中的[mysqld]和[xtrabackup]配置段

        --defaults-extra-file=

        #如果使用了該參數,在讀取了全局配置文件之后,會再讀取這里指定的配置文件

        --target-dir=name

        #備份文件的存放目錄路徑

        --backup

        #實施備份到target-dir

        --prepare

        #實施對備份文件迚行恢復前的準備(生成InnoDB log file)

        --print-param

        #打印備份或恢復時需要的參數

        --use-memory=#

        #該參數在prepare的時候使用,控制prepare時innodb實例使用的內存量

        --suspend-at-end

        #在target-dir目錄下產生一個xtrabackup_suspended文件,將xtrabackup進程掛起,不停地將數據文件的變化同步到備份文件,直到用戶手工刪除xtrabackup_suspended文件

        --throttle=

        #每秒IO次數,backup時使用的I/O操作量,使備份對數據庫正常業務的影響最小化--log-stream

        該參數在backup的時候使用,將xtrabackup_logfile的內容輸出到標準輸出,使用該參數時會自動使用--suspend-at-end參數,innobackupex腳本的--stream模式會使用該參數。

        --incremental-lsn=name

        #增量備份時只拷貝LSN比該參數指定值新的ibd pages,前次備份到了哪個LSN可以看前次備份集的xtrabackup_checkpoints文件。

        --incremental-basedir=name

        #該參數在backup的時候使用,備份比該參數指定位置的備份集新的idb pages

        --incremental-dir=name

        #該參數在prepare的時候使用,指定prepare時產生的.delta文件和日志文件的存放路徑

        --tables=name

        #在備份file-per-table類型的數據文件時使用,使用正則表達式指定需要備份的innodb 表

        --datadir=name

        #MySQL數據庫的數據文件目錄。

        xtrabackup只備份InnoDB數據文件,表結構是不備份的,所以恢復的時候,你必須有對應表結構文件(.frm)

        1.普通備份(全量備份)

        shell>mkdir -p /backup/xtrabackup

        shell>xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/backup/xtrabackup

        全量備份模擬恢復:

        需要執行兩次xtrabackup --prepare

        shell>xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/backup/xtrabackup

        shell>xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/backup/xtrabackup

        刪除數據庫目錄下的數據文件:

        Shell>rm -rf /usr/local/mysql/var/ib*

        Shell>cp /backup/xtrabackup/ib* /usr/local/mysql/var

        Shell>chown -R mysql.root /usr/local/mysql/var

        重啟測試是否恢復成功。

        注意,xtrabackup只備份數據文件,并不備份數據表結構(.frm),所以使用xtrabackup恢復的時候,你必須有對應表結構文件(.frm)。

        2. 普通備份(增量備份)

        增量備份優點:

        1、數據庫太大沒有足夠的空間全量備份,作增量備份有效節省空間,且效率高。

        2、支持熱備份。備份過程不鎖表,不受時間,不影響用戶使用。

        3、每日備份只產生少量數據,遠程備份傳輸更方便。同時節省空間。

        4、備份恢復基于文件操作,降低直接對數據庫操作風險。

        5、備份效率更高,恢復效率更高。

        增量備份及模擬恢復步驟:

        shell>mkdir -p /backup/xtrabackup/base

        shell>mkdir -p /backup/xtrabackup/delta

        (1)先做一次全量備份,因為后面的增量備份要以此為基礎

        shell>xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/backup/xtrabackup/base

        shell>ls /backup/xtrabackup/base

        ibdata1 xtrabackup_checkpoints xtrabackup_logfile

        (2)以此全量備份為基礎進行增量備份

        Shell>xtrabackup --defaults=/etc/my.cnf --backup --target-dir=/backup/xtrabackup/delta/ --incremental-basedir=/backup/xtrabackup/base/

        shell>ls /backup/xtrabackup/delta

        ibdata1.delta xtrabackup_checkpoints xtrabackup_logfile

        ps:在增量備份的目錄下,數據文件都是以.delta結尾的。增量備份只備份上一次全量備份后被修改過的page,所以增量備份只暫用較少的空間。增量備份可以在增量備份的基礎上增量。

        (注意:/backup/xtrabackup/delta/是每次都需修改的。比如第二次增量就改成/backup/xtrabackup/delta2,當然可以寫個腳本進行自動備份)

        增量備份模擬恢復過程:

        我們需要分別對全量、增量備份各做一次prepare操作。

        shell>xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/backup/xtrabackup/base/

        shell>xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/backup/xtrabackup/base/

        --incremental-dir=/backup/xtrabackup/delta/

        shell>xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/backup/xtrabackup/base/

        shell>rm -rf /usr/local/mysql/var/ib* #刪除原來數據目錄下的數據文件

        Shell>cp /backup/xtrabackup/base/ib* /usr/local/mysql/var

        Shell>chown -R mysql.root /usr/local/mysql/var

        重啟后測試是否成功。

        再次提醒,xtrabackup只備份InnoDB數據文件,表結構是不備份的,所以恢復的時候,你必須有對應表結構文件(.frm)。

        3.增量備份

        對比innobackupex和xtrabackup我們可以看到,innobackupex操作起來更方便,但是innobackupex會有短暫的鎖表(時間依賴于MyISAM大小)。xtrabackup備份還有另一個重要特性:增量備份。(未來的版本innobackupex也可能增長該功能)

        比如表中目前有10條數據,先備份.備份到/usr/local/backup/1/目錄 (完整備份)

        shell> xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/usr/local/backup/1/

        查看它的lsn點:

        shell> cat xtrabackup_checkpoints

        backup_type = full-backuped

        from_lsn = 0:0

        to_lsn = 0:592411

        再向表中插入數據,增量備份

        shell>xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/usr/local/backup/2/ --incremental-basedir=/usr/local/backup/1/

        把增量備份到2(1到2的增量備份)

        查看它的lsn點:

        shell>cat xtrabackup_checkpoints

        backup_type = incremental

        from_lsn = 0:592411

        to_lsn = 0:908563

        再向表中插入數據,增量備份

        shell>xtrabackup --defauls-file=/etc/my.cnf --backup --target-dir=/usr/local/backup/3/ --incremental-basedir=/usr/local/backup/1/

        把增量備份到3(1到3的增量備份,2的備份已經包含在里面了,按照這種方式備份的話,最后的還原只需要還原完全備份和最后一份增量備份即可)

        查看它的lsn點:

        shell>cat xtrabackup_checkpoints

        backup_type = incremental

        from_lsn = 0:592411

        to_lsn = 0:15078

        或則另一種增量備份方式:

        shell>xtrabackup --defauls-file=/etc/my.cnf --backup --target-dir=/usr/local/backup/3/ --incremental-basedir=/usr/local/backup/2/

        把增量備份到3(2到3的增量備份,各個增量備份,按照這種方式備份的話,最后的還原需要還原完全備份和各個增量備份)

        查看它的lsn點:

        shell>cat xtrabackup_checkpoints

        backup_type = incremental

        from_lsn = 0:908563

        to_lsn = 0:15078

        增量備份模擬恢復:

        我們需要分別對全量、增量備份各做一次prepare操作。

        ①:基于(1到3的增量備份,2的備份已經包含在里面了,按照這種方式備份的話,最后的還原只需要還原完全備份和最后一份增量備份即可)

        把第1次的完備恢復

        shell>xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/usr/local/backup/1/

        繼續把增量備份恢復上去

        shell>xtrabackup --prepare --target-dir=/usr/local/backup/1/ --incremental-dir=/usr/local/backup/3/

        shell>xtrabackup --prepare --target-dir=/usr/local/backup/1/

        恢復完成

        接著

        cd /usr/local/backup/1/

        cp 1/ib* /usr/local/mysql/var/

        chown –R mysql.root /usr/local/mysql/var

        /etc/init.d/mysql restart

        ②基于(2到3的增量備份,各個增量備份,按照這種方式備份的話,最后的還原需要還原完全備份和各個增量備份)

        把第1次的完備恢復

        xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/usr/local/backup/1/

        繼續把增量備份恢復上去

        shell>xtrabackup --prepare --target-dir=/usr/local/backup/1/ --incremental-dir=/usr/local/backup/2/

        繼續把增量備份恢復上去

        shell>xtrabackup --prepare --target-dir=/usr/local/backup/1/ --incremental-dir=/usr/local/backup/3/

        恢復完成

        接著

        cd /usr/local/backup/1/

        cp 1/ib* /usr/local/mysql/var/

        chown –R mysql.root /usr/local/mysql/var

        /etc/init.d/mysql restart

        四、innobackupex備份與恢復

        Usage:

        innobackup [--sleep=MS] [--compress[=LEVEL]] [--include=REGEXP] [--user=NAME]

        [--password=WORD] [--port=PORT] [--socket=SOCKET] [--no-timestamp]

        [--ibbackup=IBBACKUP-BINARY] [--slave-info] [--stream=tar]

        [--defaults-file=MY.CNF]

        [--databases=LIST] [--remote-host=HOSTNAME] BACKUP-ROOT-DIR

        innobackup --apply-log [--use-memory=MB] [--uncompress] [--defaults-file=MY.CNF]

        [--ibbackup=IBBACKUP-BINARY] BACKUP-DIR

        innobackup --copy-back [--defaults-file=MY.CNF] BACKUP-DIR

        第一個命令行是熱備份mysql數據庫。

        帶有--apply-log選項的命令是準備在一個備份上啟動mysql服務。

        帶有--copy-back選項的命令從備份目錄拷貝數據,索引,日志到my.cnf文件里規定的初始位置。

        參數注釋:

        --defaults-file=

        #同xtrabackup的--defaults-file 參數;

        --apply-log

        #對xtrabackup的--prepare參數的封裝;

        --copy-back

        #做數據恢復時將備份數據文件拷貝到MySQL服務器的datadir;

        --remote-host=HOSTNAME

        #通過ssh將備份數據存儲到進程服務器上;

        --stream=[tar]

        #備份文件輸出格式,tar時使用tar4ibd,該文件可在XtarBackup binary文件中獲得。如果備份時有指定--stream=tar,則tar4ibd文件所處目錄一定要在$PATH中(因為使用的是tar4ibd去壓縮,在XtraBackup的binary包中可獲得該文件);

        --tmpdir=DIRECTORY

        #當有指定--remote-host or --stream時,事務日志臨時存儲的目錄,默認采用MySQL配置文件中所指定的臨時目錄tmpdir;

        --redo-only --apply-log組,

        #強制備份日志時只redo,跳過rollback。這在做增量備份時非常必要;

        --use-memory=

        #該參數在prepare的時候使用,控制prepare時innodb實例使用的內存量;

        --throttle=IO

        #同xtrabackup的--throttle參數;

        --sleep=

        #是給ibbackup使用的,指定每備份1M數據,過程停止拷貝多少毫秒,也是為了在備份時盡量減小對正常業務的影響,具體可以查看ibbackup的手冊;

        --compress[=LEVEL]

        #對備份數據迚行壓縮,僅支持ibbackup,xtrabackup還沒有實現;

        --include=REGEXP

        #對xtrabackup參數--tables的封裝,也支持ibbackup;

        --databases=LIST

        #列出需要備份的databases,如果沒有指定該參數,所有包含MyISAM和InnoDB表的database都會被備份 ;

        --uncompress

        #解壓備份的數據文件,支持ibbackup,xtrabackup還沒有實現該功能;

        --slave-info

        #備份從庫, 加上--slave-info備份目錄下會多生成一個xtrabackup_slave_info文件,這里會保存主日志文件以及偏移, 文件內容類似于:

        CHANGE MASTER TO MASTER_LOG_FILE='', MASTER_LOG_POS=0

        --socket=SOCKET

        #MySQL服務器的socket文件位置

        1、使用Innobachkupex備份(暫不支持增量備份)

        (1)普通備份

        shell> mkdir -p /backup/innobackupex/

        Shell>innobackupex --defaults-file=/etc/my.cnf --user=root --password=root \

        --databases='i_db' --no-lock /backup/ innobackupex / \

        2> /tmp/innobackup.log

        xtrabackup_51 Ver 1.5 Rev undefined for 5.1.52 unknown-linux-gnu (x86_)

        [01] Copying /usr/local/mysql/var/ibdata1

        to /backup/innobackupex/2011-04-12_00-44-29/ibdata1

        [01]...done

        xtrabackup: The latest check point (for incremental): '0:32538662'

        xtrabackup: Stopping log copying thread.

        xtrabackup: Transaction log of lsn (0 32538662) to (0 32538662) was copied.

        注釋:

        使用mysql的root用戶備份,密碼為root

        備份文件的存放路徑是/backup/innobackupex/,該目錄下將創建以時間戳為名稱的備份目錄

        --no-lock備份時不鎖定表

        --databases="i_db"用于指定要備份的數據庫

        2>/tmp/backup.log是將備份過程中的輸出信息保存到/tmp/backup.log

        注意:在使用innobackupex進行備份時,在配置文件my.cnf中要明確指定mysql的數據文件目錄,否則會報錯。

        [mysqld]

        datadir=/usr/local/mysql/var

        (2)打包(tar)備份

        Shell>innobackupex --defaults-file=/etc/my.cnf --user=root --password=root \

        --databases='i_db' --no-lock --stream=tar /backup/innobackupex/ \

        2> /tmp/innobackup.log 1> /backup/innobackupex/i_aura.tar

        這種備份時間會比較長,主要是執行打包操作。解包過程,需要使用tar ixvf解壓對應的文件后,注意參數-i必須加入。

        模擬恢復過程:

        Shell> mysql –uroot –proot –e’drop database i_db’

        Shell>mysqladmin –uroot –proot shutdown

        Shell>rm –rf /usr/local/mysql/var/ib *

        shell >cd /backup/innobackupex/

        shell >tar ixvf i_aura.tar

        shell>ls

        backup-my.cnf i_aura.tar ibdata1 i_db stderr stdout xtrabackup_binary xtrabackup_checkpoints xtrabackup_logfile

        準備還原

        shell>innobackupex-1.5.1 --defaults-file=/etc/my.cnf --no-lock --apply-log /data/back_data/

        拷貝還原數據:

        shell>innobackupex --defaults-file=/etc/my.cnf –no-lock --copy-back /backup/innobackupex/

        Shell>cd /usr/local/mysql/var

        Shell>chown -R mysql:root . #一定要修改權限

        shell> mysqld_safe –user=mysql &

        檢查刪除的數據庫,如果恢復則證明該恢復過程無誤。

        (3)壓縮(tar)備份

        Shell>innobackupex --defaults-file=/etc/my.cnf --user=root --password=root \

        --databases=”i_db test”--no-lock --stream=tar /backup/innobackupex/ \

        2> /tmp/innobackup.log | gzip > /backup/innobackupex/i_aura.tar

        這種備份時間會比較長,主要是執行壓縮操作。

        解壓縮過程,需要使用tar izxvf 解壓對應的文件后,注意參數-i必須加入。

        還原:

        使用tar -izxvf解壓對應的文件后,操作完全同普通備份。

        模擬恢復過程:

        Shell> mysql –uroot –proot –e’drop database i_db’

        Shell>mysqladmin –uroot –proot shutdown

        Shell>rm –rf /usr/local/mysql/var/ibdata1 ib_logfile*

        shell >cd /backup/innobackupex/

        shell >tar ixvf i_aura.tar

        shell>ls

        backup-my.cnf i_aura.tar.gz ibdata1 i_db stderr stdout xtrabackup_binary xtrabackup_checkpoints xtrabackup_logfile

        準備還原:

        shell> innobackupex --defaults-file=/etc/my.cnf –no-lock --apply-log /backup/innobackupex/……

        拷貝還原數據:

        shell> innobackupex --defaults-file=/etc/my.cnf –no-lock --copy-back /backup/innobackupex/

        Shell>cd /usr/local/mysql/var

        Shell>chown -R mysql:root .

        shell> mysqld_safe -user=mysql &

        檢查刪除的數據庫,如果恢復則證明該恢復過程無誤。

        (4)整庫備份及恢復。

        備份:

        Shell>innobackupex --user=root --password=root --defaults-file=/etc/my.cnf \

        /backup/innobackupex/

        檢查備份的文件:

        Shell>ls /backup/innobackupex/

        2011-04-12_09-20-13

        模擬恢復:

        首先停掉數據庫,然后刪除數據庫目錄下的所有數據庫文件。

        Shell> mysql –uroot –proot shutdown

        Shell>rm -rf /usr/local/mysql/var/*

        首先寫日志文件,然后恢復,如下。(注:2011-04-12_09-20-13是自動生成的以備份時間命名的文件夾,恢復時根據情況進行選擇)

        Shell>innobackupex --apply-log --defaults-file=/etc/my.cnf \

        /backup/innobackupex/2011-04-12_09-20-13

        Shell>innobackupex --copy-back --defaults-file=/etc/my.cnf \

        /backup/innobackupex/2011-04-12_09-20-13

        使用cd或者ls 命令看看你的數據庫目錄下是不是有文件了?

        修改數據庫文件權限,否則無法啟動。(這步我是cd到原數據庫目錄下進行的)

        Shell>chown -R mysql:mysql .

        重啟數據庫,測試恢復是否成功。

        五.備份到遠程服務器

        (1)innobackupex遠程備份方法一

        當前數據庫所在機器IP:192.168.1.131,現在要備份到192.168.1.132的/data目錄下。

        Shell>innobackupex --user=root --password=root --defaults=/etc/my.cnf --stream=tar /data | ssh root@192.168.1.132 cat " >" /data/backup.tar

        接著需要輸入遠程服務器密碼......然后就開始備份了,備份完成后登陸到遠程服務器看看是不是有了呢?

        目前使用xtrabackup增量備份是不支持到遠程的。如何解決呢?可以使用nfs 網絡文件系統把遠程服務器磁盤掛載到本地。

        (2)innobackupex遠程備份方法二

        #在本地后臺啟動1234監聽,以便接受備份文件

        nc -d -l 1234 > /data/$A/20100118000001.tar &

        #ssh到服務器A執行備份,并將備份包推送到備份機B上。同時記錄下log。

        ssh $A ‘innobackupex-1.5.1 --stream=tar --include=’renren.*’ --throttle=500 --socket=/data/mysql/backup/mysql.sock --defaults-file=/data/dbbackup/my.cnf --user=root --password=xxxxxxx --slave-info /data/dbbackup | nc $B 1234′ < /dev/null > /data/xtrabackup.log 2>&1

        參數解釋:

        --stream=tar : 告訴xtrabackup,備份需要以tar的文件流方式輸出。

        --include=’renren.*’:備份包含的庫表,如例:意思是要備份renren庫中所有的表。如果需要全備份,則省略這個參數;如果需 要備份renren庫下的2個表:tableA & tableB,則寫成:--include=’renren.tableA|renren.tableB’;再如果renren庫下只有2個前綴是 table的表,你還可以寫成:--include=’renren.table*’。

        --throttle=500:xtrabackup在備份過程中,IO操作比較多,因此需要限定一下IO操作。以免服務器壓力過大,不過好像作用不太明顯,也不知道是不是設置的還是過大。待測…

        --socket=/data/mysql/backup/mysql.sock:指定mysql.sock所在位置,以便備份進程登錄mysql.

        --defaults-file=/data/dbbackup/my.cnf :如果您的/etc/my.cnf中沒有使用如[mysqld3306]的片段啟動mysql,則不需要這行參數,如果使用了上面的片段,那么 xtrabackup是無法解析/etc/my.cnf文件的(嚴格上來說是會解析錯誤),所以,我們需要手工完成一個my.cnf文件,文件片段如下, 只需要指定6個參數即可讓xtrabackup正常工作,各參數意思請參考mysql文檔:

        [mysqld]

        datadir=/data/var

        innodb_data_home_dir = /data/ibdata

        innodb_data_file_path=ibdata1:10M;ibdata2:10M:autoextend

        innodb_log_group_home_dir = /data/iblogs

        innodb_log_files_in_group = 2

        innodb_log_file_size = 1G

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        Xtrabackup與innobackupex熱備份MySQL數據_MySQL

        Xtrabackup與innobackupex熱備份MySQL數據_MySQL:Xtrabackup與innobackupex熱備份MySQL數據 一.Xtrabackup 簡介及備份原理說明: Xtrabackup是由percona開發的一個開源軟件,能夠非常快速地備份與恢復mysql數據庫,且支持在線熱備份(備份時不影響數據讀寫),此軟件可以說是innodb熱備工具ibb
        推薦度:
        標簽: 備份 數據 mysql
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top 主站蜘蛛池模板: 毛片免费观看网站| 国产在线a免费观看| 一级毛片直播亚洲| 成人黄网站片免费视频| 亚洲第一黄片大全| 亚洲激情黄色小说| 国产在线a免费观看| 99久久婷婷国产综合亚洲| 和日本免费不卡在线v| 亚洲一区二区三区在线网站| 无码国产精品一区二区免费| 国产91在线|亚洲| 暖暖在线日本免费中文| 无套内谢孕妇毛片免费看看| 亚洲性久久久影院| 免费av片在线观看网站| 亚洲国产成人精品久久| 成全视频免费高清| 曰批全过程免费视频免费看| 久久久久一级精品亚洲国产成人综合AV区 | **aaaaa毛片免费同男同女| 成年女人色毛片免费看| 亚洲熟女精品中文字幕| 国产又粗又猛又爽又黄的免费视频| 性色av极品无码专区亚洲| 国产专区一va亚洲v天堂| 免费观看91视频| 亚洲人成综合网站7777香蕉| 在线观看亚洲免费| 花蝴蝶免费视频在线观看高清版| 亚洲精品高清久久| 精品熟女少妇AV免费观看| 免费人成动漫在线播放r18| 亚洲av无码一区二区乱子伦as| 色片在线免费观看| 免费激情网站国产高清第一页| 亚洲午夜免费视频| 日本牲交大片免费观看| 久久免费精品视频| 亚洲成a∨人片在无码2023| 亚洲色精品88色婷婷七月丁香|