<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
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        MySQL中使用innobackupex、xtrabackup進行大數據的備份和還原教程

        來源:懂視網 責編:小采 時間:2020-11-09 21:01:45
        文檔

        MySQL中使用innobackupex、xtrabackup進行大數據的備份和還原教程

        MySQL中使用innobackupex、xtrabackup進行大數據的備份和還原教程:大數據量備份與還原,始終是個難點。當MYSQL超10G,用mysqldump來導出就比較慢了。在這里推薦xtrabackup,這個工具比mysqldump要快很多。 一、Xtrabackup介紹 1、Xtrabackup是什么 Xtrabackup是一個對InnoDB做數據備份的工具,支持在線熱備份(備份
        推薦度:
        導讀MySQL中使用innobackupex、xtrabackup進行大數據的備份和還原教程:大數據量備份與還原,始終是個難點。當MYSQL超10G,用mysqldump來導出就比較慢了。在這里推薦xtrabackup,這個工具比mysqldump要快很多。 一、Xtrabackup介紹 1、Xtrabackup是什么 Xtrabackup是一個對InnoDB做數據備份的工具,支持在線熱備份(備份

        大數據量備份與還原,始終是個難點。當MYSQL超10G,用mysqldump來導出就比較慢了。在這里推薦xtrabackup,這個工具比mysqldump要快很多。

        一、Xtrabackup介紹

        1、Xtrabackup是什么

        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。

        2、Xtrabackup可以做什么 :

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

        在xtrabackup的上一次整庫備份基礎上做增量備份(innodb only)
        以流的形式產生備份,可以直接保存到遠程機器上(本機硬盤空間不足時很有用)

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

        (1)首先完成一個完全備份,并記錄下此時檢查點的LSN(Log Sequence Number)。
        (2)在進程增量備份時,比較表空間中每個頁的LSN是否大于上次備份時的LSN,如果是,則備份該頁,同時記錄當前檢查點的LSN。
        首 先,在logfile中找到并記錄最后一個checkpoint(“last checkpoint LSN”),然后開始從LSN的位置開始拷貝InnoDB的logfile到xtrabackup_logfile;接著,開始拷貝全部的數據文 件.ibd;在拷貝全部數據文件結束之后,才停止拷貝logfile。

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

        因為innobackupex支持innodb,myisam,所以本文說一下,怎么使用innobackupex。

        二,安裝xtrabackup

        1、下載地址

        http://www.percona.com/downloads/XtraBackup/

        2、安裝

        根據需求,選擇不同的版本,我選擇的是rpm安裝包,如果報以下錯誤
        代碼如下:
        [root@localhost xtrabackup]# rpm -ivh percona-xtrabackup-2.2.4-5004.el6.x86_64.rpm
        warning: percona-xtrabackup-2.2.4-5004.el6.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID cd2efd2a: NOKEY
        error: Failed dependencies:
        perl(Time::HiRes) is needed by percona-xtrabackup-2.2.4-5004.el6.x86_64

        解決辦法:

        代碼如下:

        [root@localhost xtrabackup]# yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL //安裝依賴包 
        [root@localhost xtrabackup]# rpm -ivh percona-xtrabackup-2.2.4-5004.el6.x86_64.rpm   //重新安裝 
        warning: percona-xtrabackup-2.2.4-5004.el6.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID cd2efd2a: NOKEY 
        Preparing... ########################################### [100%] 
        1:percona-xtrabackup ########################################### [100%] 

        注意:

        xtrabackup 2.2.4不支持mysql 5.1.73,所以如果要用新的xtrabackup,就要用高版本的mysql數據庫,不然就會報以下錯誤:
        innobackupex: Error: Unsupported server version: '5.1.73'

        二、修改my.cnf

        查看一下mysqld下面有沒有datadir,如果沒有加上
        代碼如下:
        [mysqld] 
        datadir=/var/lib/mysql 

        不加的話,還原數據的時候,有可能會出現以下問題:
        代碼如下:
        xtrabackup: Error: Please set parameter 'datadir'
        innobackupex: fatal error: no 'mysqld' group in MySQL options
        innobackupex: fatal error: OR no 'datadir' option in group 'mysqld' in MySQL options

        三、全部數據庫備份與還原

        1、全部數據庫備份

        代碼如下:
        # innobackupex --defaults-file=/etc/my.cnf --user=root /home/tank/backup/ 

        如果報以下錯誤:

        代碼如下:
        InnoDB: Error: log file ./ib_logfile0 is of different size 5242880 bytes
        InnoDB: than specified in the .cnf file 50331648 bytes!
        innobackupex: Error: The xtrabackup child process has died at /usr/bin/innobackupex line 2679.

        解決辦法:在my.cnf的mysqld中加入以下內容:

        代碼如下:
        [mysqld] 
        innodb_log_file_size = 5M 

        2、單數據庫備份

        代碼如下:
        # innobackupex --defaults-file=/etc/my.cnf --user=root --database=backup_test /home/tank/backup/ 

        3、數據庫備份并壓縮

        代碼如下:
        # innobackupex --defaults-file=/etc/my.cnf --user=root --stream=tar  /home/tank/backup | gzip > /home/tank/backup/`date +%F_%H-%M-%S`.tar.gz 

        4、全數據還原

        代碼如下:
        # /etc/init.d/mysqld stop      //停掉mysql 
        # mv /var/lib/mysql /var/lib/mysql_bak   //數據目錄備份 
        # mkdir -p /var/lib/mysql  //重建數據目錄 
         
        //--apply-log選項的命令是準備在一個備份上啟動mysql服務 
        # innobackupex --defaults-file=/etc/my.cnf --user=root --apply-log /home/tank/backup/2014-09-18_16-35-12 
         
        //--copy-back 選項的命令從備份目錄拷貝數據,索引,日志到my.cnf文件里規定的初始位置 
        # innobackupex --defaults-file=/etc/my.cnf --user=root --copy-back /home/tank/backup/2014-09-18_16-35-12 
         
        # chown -R mysql.mysql /var/lib/mysql  //改變文件所屬 
        # /etc/init.d/mysqld stop  //啟動mysql 

        四、增量備份與還原

        1、創建測試數據庫和表

        代碼如下:
        create database backup_test;  //創建庫 
         
        CREATE TABLE `backup` (  //創建表 
         `id` int(11) NOT NULL AUTO_INCREMENT , 
         `name` varchar(20) NOT NULL DEFAULT '' , 
         `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP , 
         `del` tinyint(1) NOT NULL DEFAULT '0', 
         PRIMARY KEY (`id`) 
        ) ENGINE=myisam DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; 

        2、增量備份

        代碼如下:
        mysql> INSERT INTO backup (name) VALUES ('tank'),('tank1');  //插入數據 
         
        # innobackupex --defaults-file=/etc/my.cnf --user=root --incremental-basedir=/home/tank/backup/2014-09-18_16-35-12 --incremental /home/tank/backup/ 

        3、在增量的基礎上在進行增量備份

        代碼如下:
        mysql> INSERT INTO backup (name) VALUES ('tank2'),('tank3'),('tank4'),('tank5'),('tank6');  //在插入數據 
         
        //2014-09-18_18-05-20這個目錄,上次增量備份產生的目錄 
        # innobackupex --defaults-file=/etc/my.cnf --user=root --incremental-basedir=/home/tank/backup/2014-09-18_18-05-20 --incremental /home/tank/backup/ 

        查看增量備份記錄文件:

        代碼如下:
        [root@localhost 2014-09-18_16-35-12]# cat xtrabackup_checkpoints   //全備目錄下的文件 
        backup_type = full-prepared 
        from_lsn = 0             //全備起始為0 
        to_lsn = 23853959 
        last_lsn = 23853959 
        compact = 0 
         
        [root@localhost 2014-09-18_18-05-20]# cat xtrabackup_checkpoints  //第一次增量備份目錄下的文件 
        backup_type = incremental 
        from_lsn = 23853959 
        to_lsn = 23854112 
        last_lsn = 23854112 
        compact = 0 
         
        [root@localhost 2014-09-18_18-11-43]# cat xtrabackup_checkpoints  //第二次增量備份目錄下的文件 
        backup_type = incremental 
        from_lsn = 23854112 
        to_lsn = 23854712 
        last_lsn = 23854712 
        compact = 0 

        增量備份做完后,把backup_test這個數據庫刪除掉,drop database backup_test;這樣可以對比還原后。

        4、增量還原

        代碼如下:
        # innobackupex --defaults-file=/etc/my.cnf --user=root --apply-log --redo-only /home/tank/backup/2014-09-18_16-35-12 
         
        # innobackupex --defaults-file=/etc/my.cnf --user=root --apply-log --redo-only /home/tank/backup/2014-09-18_16-35-12 --incremental-dir=/home/tank/backup/2014-09-18_18-05-20 
         
        # innobackupex --defaults-file=/etc/my.cnf --user=root --apply-log --redo-only /home/tank/backup/2014-09-18_16-35-12 --incremental-dir=/home/tank/backup/2014-09-18_18-11-43 

        在這里有三個目錄:

        1)、/home/tank/backup/2014-09-18_16-35-12,全備份目錄
        2)、/home/tank/backup/2014-09-18_18-05-20,第一次增量備份產生的目錄
        3)、/home/tank/backup/2014-09-18_18-11-43,第二次增量備份產生的目錄

        到這里增量還原,還沒有結束,還有最重要一步,就是要進行一次全量還原。停止數據庫,刪除/var/lib/mysql,在還原。

        增量備份的原理就是,把增量目錄下的數據,整合到全變量目錄下,然后在進行,全數據量的還原。

        總體來說,innobackupex速度快,支持innodb,myisam,用起來是還不是很方便,單庫還原,還是增量備份還原,都要進行全部數據庫還原,這個不合理。

        五、innobackup 常用參數說明

        --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包中可獲得該文件)。
        在 使用參數stream=tar備份的時候,你的xtrabackup_logfile可能會臨時放在/tmp目錄下,如果你備份的時候并發寫入較大的話 xtrabackup_logfile可能會很大(5G+),很可能會撐滿你的/tmp目錄,可以通過參數--tmpdir指定目錄來解決這個問題。

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

        --redo-only --apply-log組,
        強制備份日志時只redo ,跳過rollback。這在做增量備份時非常必要。

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

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

        --compress[=LEVEL]
        對備份數據迚行壓縮,僅支持ibbackup,xtrabackup還沒有實現;

        --include=REGEXP
        對 xtrabackup參數--tables的封裝,也支持ibbackup。備份包含的庫表,例如:--include="test.*",意思是要備份 test庫中所有的表。如果需要全備份,則省略這個參數;如果需要備份test庫下的2個表:test1和test2,則寫 成:--include="test.test1|test.test2"。也可以使用通配符,如:--include="test.test*"。

        --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.sock所在位置,以便備份進程登錄mysql.

        您可能感興趣的文章:

      1. mysqldump備份還原和mysqldump導入導出語句大全詳解
      2. PHP備份/還原MySQL數據庫的代碼
      3. mysql 數據庫備份和還原方法集錦 推薦
      4. MySQL數據庫備份和還原的常用命令小結
      5. MySQL使用命令備份和還原數據庫
      6. 詳解MYSQL的備份還原(PHP實現)
      7. 命令行模式下備份、還原 MySQL 數據庫的語句小結
      8. 深入解析Linux下MySQL數據庫的備份與還原
      9. MySQL數據庫如何導入導出(備份還原)
      10. 史上最簡單的MySQL數據備份與還原教程(上)(三十五)
      11. 聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        MySQL中使用innobackupex、xtrabackup進行大數據的備份和還原教程

        MySQL中使用innobackupex、xtrabackup進行大數據的備份和還原教程:大數據量備份與還原,始終是個難點。當MYSQL超10G,用mysqldump來導出就比較慢了。在這里推薦xtrabackup,這個工具比mysqldump要快很多。 一、Xtrabackup介紹 1、Xtrabackup是什么 Xtrabackup是一個對InnoDB做數據備份的工具,支持在線熱備份(備份
        推薦度:
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 久久久久亚洲爆乳少妇无| 亚洲午夜电影在线观看| 亚洲精品色播一区二区| 两性刺激生活片免费视频| 亚洲精品影院久久久久久| 最近免费中文在线视频| 亚洲熟妇色自偷自拍另类| 青娱乐免费视频在线观看| 亚洲综合色7777情网站777| 成人A级毛片免费观看AV网站| 亚洲xxxx视频| 四虎影视永久免费观看| 黄色网址在线免费观看| 国产亚洲精品高清在线| 99视频在线精品免费| 亚洲人成免费电影| 国产午夜免费秋霞影院| 久久久久久国产a免费观看不卡| 亚洲精品夜夜夜妓女网| **毛片免费观看久久精品| 中文字幕亚洲综合久久综合 | 亚洲成人福利在线观看| 成年免费大片黄在线观看岛国| WWW国产亚洲精品久久麻豆| 亚洲高清无码综合性爱视频| jizz免费在线观看| 777亚洲精品乱码久久久久久| 免费av欧美国产在钱| 新最免费影视大全在线播放| 亚洲va久久久噜噜噜久久狠狠 | 亚洲午夜福利AV一区二区无码| 毛片在线全部免费观看| 亚洲an日韩专区在线| 免费在线观看黄色毛片| 桃子视频在线观看高清免费视频| 亚洲熟妇成人精品一区| 国产亚洲精aa成人网站| 搡女人免费视频大全| 中国一级毛片免费看视频| 亚洲国产夜色在线观看| 久久亚洲高清综合|