日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

青蛙学Linux—MySQL备份工具XtraBackup

發布時間:2025/4/16 数据库 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 青蛙学Linux—MySQL备份工具XtraBackup 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

XtraBackup是Percona公司開發的一款免費開源的MySQL備份工具。與上一篇介紹的mysqldump不同,XtraBackup可以對MySQL進行物理備份(備份的是MySQL的文件而不是生成sql文件),且XtraBackup可以對MySQL進行在線備份。

1、安裝XtraBackup

要安裝XtraBackup,可以在Percona公司的官網上下載CentOS的RPM安裝包,也可以使用Percona提供的YUM源。這里介紹通過YUM進行安裝的方法。

首先在https://www.percona.com/downloads/percona-release/redhat/上下載Percona提供的YUM的RPM包,然后安裝該RPM包即可使用Percona的YUM源,通過該YUM源可以安裝所有的Percona產品。

通過以下命令查看可以安裝的XtraBackup版本:

[root@localhost ~]# yum list percona-xtrabackup*

這里選擇2.4的版本進行安裝:

[root@localhost ~]# yum install percona-xtrabackup-24.x86_64

2、XtraBackup主要工具

使用XtraBackup進行備份時,主要使用以下兩個工具:

  • xtrabackup
  • innobackupex

xtrabackup工具只能備份InnoDB和XtraDB兩種引擎的數據庫,而且只備份idb文件不備份frm文件;同時,xtrabackup不能備份表結構和觸發器等。

innobackupex是使用Perl腳本對xtrabackup進行的封裝和功能擴展。innobackupex可以備份和恢復MyISAM、InnoDB和XtraDB引擎的表和frm文件,所以通常使用innobackupex來備份MySQL。

這兩個工具都是根據MySQL配置文件my.cnf來獲取備份文件的,同時需要連接到數據庫和數據存儲目錄的操作權限。

注意:innobackupex在備份使用MyISAM的數據庫時,會對全庫進行加鎖操作,阻塞寫操作,若備份是在從庫上進行的話會影響主從復制,產生延遲。而對于使用InnoDB的數據庫,則不會阻塞讀寫。

3、XtraBackup備份恢復過程

3.1、MyISAM引擎

XtraBackup首先執行flush tables with read lock生成鎖以阻止新的寫入,然后將表中的數據刷新使其全部保存到硬盤上,接著開始復制文件,文件復制完成后釋放鎖。

3.2、InnoDB引擎

備份

XtraBackup在開始備份時會記住log sequence number(LSN),然后開始復制文件。同時,XtraBackup會啟動一個后臺進程用于監視事務日志,并從事務日志中復制最新的修改,該操作是持續進行的。所以XtraBackup在備份InnoDB時不會產生阻塞。

恢復—準備(prepare)階段

XtraBackup使用事務日志對備份的數據進行前滾和回滾操作,以保證這些數據與備份結束時的數據庫狀態一致。

恢復—恢復階段

XtraBackup在準備階段完成后,即可使用準備好的數據對InnoDB進行恢復。

4、使用XtraBackup

4.1、innobackupex語法及常用選項

innobackupex的命令語法如下:

innobackupex --選項

常用選線:

  • --host:指定連接的MySQL主機
  • --port:指定連接的MySQL端口
  • --socket:指定連接本地數據庫時使用的MySQL socket路徑
  • --user:備份使用的MySQL用戶
  • --password:備份使用的MySQL用戶的密碼
  • --databases:對指定的數據庫進行備份,指定多個庫時使用”庫1 庫2 … 庫n”表示
  • --no-timestamp:不使用以時間命名的目錄保存備份數據,使用名為BACKUP-DIR的目錄保存備份數據
  • --default-files:指定MySQL配置文件的路徑,該選項必須在所有選項之前;XtraBackup默認使用/etc/my.cnf這個配置文件
  • --incremental:創建增量備份
  • --incremental-basedir:指定基于哪個備份做增量備份
  • --incremental-dir:在恢復階段的準備過程中用于指定增量備份的路徑
  • --apply-log:應用xtrabackup_logfile文件,重做已提交的事務,回滾未提交的事務
  • --redo-only:只重做已提交的事務,不回滾未提交的事務
  • --use-memory:在恢復過程中的準備階段可以使用的內存大小
  • --copy-back:恢復備份到數據庫的數據存儲目錄
  • --compact:壓縮備份
  • --stream={tar|xbstream}:在備份過程中對數據進行流式化處理,不經過中間階段直接壓縮
  • --parallel:指定啟動的線程數,用于提高備份速度

在使用XtraBackup進行備份時,建議創建一個僅用于執行備份的MySQL用戶,只授予以下權限:

reload,lock tables,replication client,create tablespace,super,process

4.2、使用innobackupex進行完全備份

這里使用一個例子來演示如何使用innobackupex對MySQL進行完全備份。

實驗環境:

  • MySQL通過源碼安裝,配置文件未/etc/my.cnf,socket文件為/tmp/mysqld.sock
  • 使用MySQL的backup用戶進行備份,用戶密碼為123456
  • 備份數據存儲在目錄/data/backup/full目錄下

運行以下命令進行備份:

[root@localhost full]# innobackupex --user=backup --password=123456 --socket=/tmp/mysqld.sock /data/backup/full

innobackupex會在指定的備份目錄下產生一個以時間戳命名的目錄并將備份的數據存儲在該目錄中。在該目錄中除了備份的MySQL數據庫文件,還有以下幾個文件:

backup-my.cnf # 備份用到的配置選項信息 xtrabackup_checkpoints # 記錄備份的類型、起始LSN和結束LSN等信息 xtrabackup_info # 記錄備份過程中的各種詳細信息 xtrabackup_logfile # 事務日志文件,用于在恢復過程中的準備階段對備份的數據進行前滾和回滾操作

4.3、使用完全備份進行恢復

這里通過將上面備份的數據進行恢復來介紹如何進行完全備份的恢復。

準備階段(prepare)

該階段僅對使用InnoDB引擎的MySQL有意義。在該階段中將調用xtrabackup_logfile對備份的數據進行前滾和回滾操作。使用以下命令執行prepare:

[root@localhost full]# innobackupex --apply-log /data/backup/full/2019-01-29_15-22-00
恢復數據庫

在prepare階段執行成功后,就可以恢復數據庫了。使用以下命令進行數據庫恢復:

[root@localhost full]# innobackupex --default-file=/etc/my.cnf --copy-back /data/backup/full/2019-01-29_15-22-00

注意以下兩點:

  • 進行恢復時必須先關閉MySQL服務
  • MySQL的數據存儲目錄必須為空,因為innobackupex不會覆蓋已經存在的文件
修改數據存儲目錄的權限

恢復完成后,必須修改重新生成的數據存儲目錄的權限為運行MySQL的用戶,否則MySQL將無法讀取該目錄:

[root@localhost db]# chown -R mysql:mysql mysql

完成以上步驟后,啟動MySQL即可。

4.4、使用innobackup進行增量備份

第一次的增量備份必須基于一個完全備份,之后每次的增量備份都是基于上一次的增量備份進行的。

注意:增量備份主要針對InnoDB,對于MyISAM而言,仍然是完全備份。

這里通過上面的完全備份進行兩次增量備份來演示如何進行增量備份。

第一次增量備份(基于完全備份):

[root@localhost incremental]# innobackupex --user=backup --password=123456 --socket=/tmp/mysqld.sock --incremental /data/backup/incremental --incremental-basedir=/data/backup/full/2019-01-29_15-22-00

第二次增量備份(基于第一次增量備份):

[root@localhost incremental]# innobackupex --user=backup --password=123456 --socket=/tmp/mysqld.sock --incremental /data/backup/incremental --incremental-basedir=/data/backup/incremental/2019-01-29_15-46-21

4.5、使用增量備份恢復數據庫

使用增量備份恢復數據庫相對來說步驟比較復雜,在prepare階段分為以下三個步驟:

  • 使用完全備份進行一次prepare操作,此時必須添加—redo-only參數,不回滾未提交的數據,因為這些數據可能在后面的備份中已經提交了
  • 將增量備份prepare到完全備份上,除prepare最后一次增量備份外,其他次的增量備份也必須添加—redo-only參數
  • 對合并了增量備份的完全備份再進行一次prepare操作,此時生成的數據才可以用于最后的恢復
  • 這里使用上面生成的完全備份和兩次增量備份來演示如何使用增量備份進行數據庫的恢復:

    第一次的prepare(使用完全備份):

    [root@localhost backup]# innobackupex --apply-log --redo-only /data/backup/full/2019-01-29_15-22-00

    第二次的prepare(使用第一次的增量備份prepare到完全備份上):

    [root@localhost backup]# innobackupex --apply-log --redo-only /data/backup/full/2019-01-29_15-22-00 --incremental-dir=/data/backup/incremental/2019-01-29_15-46-21

    第三次的prepare(使用第二次的增量備份prepare到完全備份上):

    [root@localhost backup]# innobackupex --apply-log /data/backup/full/2019-01-29_15-22-00 --incremental-dir=/data/backup/incremental/2019-01-29_15-50-42

    最后一次prepare(使用完全備份最后進行一次完整的prepare):

    [root@localhost backup]# innobackupex --apply-log /data/backup/full/2019-01-29_15-22-00

    成功執行完以上操作后即可恢復數據庫了:

    [root@localhost incremental]# innobackupex --default-file=/etc/my.cnf --copy-back /data/backup/full/2019-01-29_16-35-26

    4.6、針對海量數據的備份優化

    針對海量數據,可以使用XtraBackup提供的流式特性,在備份的過程中直接進行壓縮而不經過中間環節。

    這里通過一個例子來演示如何使用流式特性:將MySQL中的所有數據庫進行完全備份,并將備份直接打包成tar并調用gzip進行壓縮,保存在/data/bakcup/tar目錄下,運行以下命令

    [root@localhost backup]# innobackupex --user=backup --password=123456 --socket=/tmp/mysqld.sock --stream=tar /data/backup/tar |gzip > /data/backup/tar/backup.tar.gz

    要對生成的tar.gz包進行解壓,需要添加i參數:

    [root@localhost tar]# tar -zixvf backup.tar.gz

    轉載于:https://www.cnblogs.com/yu2006070-01/p/10332626.html

    總結

    以上是生活随笔為你收集整理的青蛙学Linux—MySQL备份工具XtraBackup的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 又欲又污又肉又黄短文 | 国产高清无密码一区二区三区 | 黄色大片网站 | av首页在线 | 亚洲精品国产手机 | jizz亚洲女人高潮大叫 | 欧美日韩精品在线观看 | 日韩av伦理 | 黄色av小说在线观看 | 国产精品伊人久久 | 乱子伦一区二区三区 | 人妻丰满熟妇av无码区不卡 | 欧美亚洲精品在线 | 亚洲男人天堂久久 | 青青国产精品 | 搡老熟女国产 | 天天操天天碰 | 天天色天天插 | 日日夜夜精 | 91久久久久久久久久久久 | 亚洲偷偷| 三级网站免费看 | 亚洲午夜久久久久久久国产 | 久久奇米 | 伊人久综合 | 18禁超污无遮挡无码免费游戏 | 国产精品伦一区二区三级古装电影 | a午夜| 特黄特色大片免费视频大全 | 欧美三日本三级少妇99 | 亚洲天堂免费视频 | 男人的天堂一区 | а√中文在线资源库 | 一本久道久久综合无码中文 | 91网站大全| 国产精品日韩精品 | 日韩一级在线视频 | 欧美日韩成人 | 青青草视频污 | 97色在线 | 精品国产鲁一鲁一区二区三区 | 亚洲一区欧美激情 | 人人插人人干 | 精品国产一区二区三区av性色 | 天天曰 | 天堂在线免费观看 | av在线黄色 | 国产精品福利影院 | 日韩av在线免费观看 | 精品国产一区二区三区久久久久久 | 国产xxxx孕妇 | 可以直接在线观看的av | 男人插女人的网站 | 嫩模啪啪 | 亚洲三级在线 | 国产在线区| h在线网站| 日韩av电影在线播放 | 日本人添下边视频免费 | 欧美a网| 女人张开双腿让男人捅 | av资源在线看 | 成人激情视频在线播放 | 国产一区二区在线不卡 | 国产影视一区二区三区 | 一个色综合网站 | 国产chinasex麻豆videos | 男人操女人网站 | 丝袜 亚洲 另类 国产 制服 | 一区二区三区视频在线观看免费 | 永久免费看片在线播放 | 西西4444www大胆无视频 | 水果视频污 | 日日天天 | a视频在线观看免费 | 少妇毛片 | 欧美日韩色视频 | 国产视频久久 | 天天看片天天射 | 精品少妇一区二区三区密爱 | 三级av网 | juliaann精品艳妇hd | 免费观看日韩毛片 | 午夜性色 | 天堂网视频在线观看 | 体感预报日剧 | 欧美日一区二区三区 | 天天爽天天射 | 日韩黄色一级片 | 777国产成人入口 | 手机看片日韩在线 | 国产伦理片在线观看 | 欧美日一本| 亚洲国产日韩欧美在线观看 | 亚洲高清毛片 | 国产精品乱轮 | 国产精品一区二区无码对白 | 国产一区二区视频在线免费观看 | 国产精品一区二区三区免费在线观看 |