中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么利用Xtrabackup進行mysql增量備份

發布時間:2022-10-31 09:42:58 來源:億速云 閱讀:131 作者:iii 欄目:開發技術

本篇內容主要講解“怎么利用Xtrabackup進行mysql增量備份”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“怎么利用Xtrabackup進行mysql增量備份”吧!

利用Xtrabackup進行mysql增量備份

現在xtrabackup版本升級到了8.0,但是只對mysql8.0才有支持, 我們這還是使用2.4, 但是2.4相比之前的2.1有了比較大的變化:innobackupex 功能全部集成到 xtrabackup 里面,只有一個 binary,另外為了使用上的兼容考慮,innobackupex 作為 xtrabackup 的一個軟鏈,即 xtrabackup 現在支持非Innodb表備份,并且 Innobackupex 在下一版本中移除(8.0已經移除了),建議通過xtrabackup替換innobackupex。還有其他的一些新特性,更多的說明可以看xtrabackup新版詳細說明。

安裝

如果安裝需要依賴就把依賴安裝一下

wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb
sudo dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb
sudo apt-get update
sudo apt-get install percona-xtrabackup-24

設置數據庫用于備份賬戶

mysql> CREATE USER 'bkpuser'@'localhost' IDENTIFIED BY '123456';
mysql> GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'bkpuser'@'localhost';
mysql> FLUSH PRIVILEGES;

全量備份

xtrabackup --user=bkpuser --password=123456 --backup --target-dir=/data/backups/mysql
# 會看到輸出
200603 09:55:37 Executing UNLOCK TABLES
200603 09:55:37 All tables unlocked
200603 09:55:37 [00] Copying ib_buffer_pool to /data/backups/mysql/ib_buffer_pool
200603 09:55:37 [00]        ...done
200603 09:55:37 Backup created in directory '/data/backups/mysql/'
200603 09:55:37 [00] Writing /data/backups/mysql/backup-my.cnf
200603 09:55:37 [00]        ...done
200603 09:55:37 [00] Writing /data/backups/mysql/xtrabackup_info
200603 09:55:37 [00]        ...done
xtrabackup: Transaction log of lsn (837940114) to (837940123) was copied.
200603 09:55:37 completed OK!
  • 準備備份

xtrabackup --prepare --target-dir=/data/backups/mysql
  • 復制備份

我這里為了演示全量備份就直接將我博客 mysql 存儲的數據目錄給移動一下

mv /var/lib/mysql /var/lib/mysql_bak
mkdir /var/lib/mysql
xtrabackup --copy-back --target-dir=/data/backups/mysql  # 這樣會保留原始備份 他會將當時讀到my.cnf的datadir設置為恢復路徑
200603 10:47:42 [01]        ...done
200603 10:47:42 [01] Copying ./performance_schema/mutex_instances.frm to /var/lib/mysql/performance_schema/mutex_instances.frm
200603 10:47:42 [01]        ...done
200603 10:47:42 [01] Copying ./performance_schema/events_transactions_history_long.frm to /var/lib/mysql/performance_schema/events_transactions_history_long.frm
200603 10:47:42 [01]        ...done
200603 10:47:42 [01] Copying ./xtrabackup_info to /var/lib/mysql/xtrabackup_info
200603 10:47:42 [01]        ...done
200603 10:47:42 [01] Copying ./ibtmp1 to /var/lib/mysql/ibtmp1
200603 10:47:42 [01]        ...done
200603 10:47:42 completed OK!
  • 備份成功 重新啟動 博客還能正常訪問 哈哈哈哈

# 將恢復目錄的屬主更改一下
chown -R mysql:mysql mysql
/etc/init.d/mysql start

如果恢復玩不想要備份數據可以使用 xtrabackup --move-back 命令

增量備份

增量是基于已有數據進行備份的,也就行需要先創建一次全量備份,然后記錄當時的記錄點

  • 創建備份

xtrabackup --user=bkpuser --password=123456 --backup --target-dir=/data/backups/base
# 基于全量備份進行增量
xtrabackup --user=bkpuser --password=123456 --backup --target-dir=/data/backups/inc1 --incremental-basedir=/data/backups/base
  • 查看備份類型 確認是增量備份了

root@longing:/data/backups/inc1# cat xtrabackup_checkpoints 
backup_type = incremental
from_lsn = 837943393
to_lsn = 837943393
last_lsn = 837943402
compact = 0
recover_binlog_info = 0
flushed_lsn = 837943402

from_lsn 是備份的起始 LSN,對于增量備份,它必須to_lsn與先前 base 備份的相同。

在這種情況下,您可以看到to_lsn (最后一個檢查點LSN)和last_lsn(最后一個復制的LSN)之間存在差異,這意味著在備份過程中服務器上有一些流量。

  • 我們可以測試一下 對第一個增加繼續創建增量 創建增量之前先創建幾條數據

xtrabackup --user=bkpuser --password=123456 --backup --target-dir=/data/backups/inc2 --incremental-basedir=/data/backups/inc1
  • 準備恢復

已經有3個備份了,我們要先對基礎數據進行準備,然后對兩個增量進行準備

xtrabackup --user=bkpuser --password=123456 --prepare --apply-log-only --target-dir=/data/backups/base
xtrabackup --user=bkpuser --password=123456 --prepare --apply-log-only --target-dir=/data/backups/base --incremental-dir=/data/backups/inc1
xtrabackup --user=bkpuser --password=123456 --prepare --target-dir=/data/backups/base --incremental-dir=/data/backups/inc2

xtrabackup --apply-log-only 合并除最后一個以外的所有增量時應使用, 一旦準備好,增量備份就與完整備份相同,可以用相同的方式還原它們。

  • 恢復

xtrabackup --copy-back --target-dir=/data/backups/base

中間插入的數據就能看見了,真棒!

提問總結

  • 增量備份步驟

  • 創建基礎備份

  • 一定條件進行增量備份創建

  • 對所有備份進行準備 所有增量基于基礎備份 相當于合并操作

  • 最后和全量備份一樣 直接恢復即可

原理

InnoDB內部會維護一個redo日志文件,我們也可以叫做事務日志文件.事務日志會存儲每一個InnoDB表數據的記錄修改。當InnoDB啟動時,InnoDB會檢查數據文件和事務日志,并執行兩個步驟:它應用(前滾)已經提交的 事務日志到數據文件,并將修改過但沒有提交的數據進行回滾操作。

Xtrabackup 在啟動時會記住log sequence number(LSN), 并且復制所有的數據文件。復制過程需要一些時間,所以這期間如果數據文件有改動,那么將會使數據庫處于一個不同的時間點。這時,xtrabackup 會運行一個后臺進程,用于監視事務日志,并從事務日志復制最新的修改。Xtrabackup 必須持續的做這個操作,是因為事務日志是會輪轉重復的寫入,并且事務日志可以被重用。所以 xtrabackup 自啟動開始,就不停的將事務日志中每個數據文件的修改都記錄下來。上面就是 xtrabackup 的備份過程。

為什么最后一次增量備份不用 "--apply-log-only"

最后一次"準備"操作可以不用跳過回滾操作,這樣用來恢復的數據文件本地就處理好了,當服務啟動后就不會再進入到回滾階段,如果最后一次使用了這個參數,服務器啟動后將進入回滾階段。所以這個--apply-log-only 只是用來合并增量用的避免下一個增量不可用。 可以參見 參見 man xtrabackup

為什么備份完后要準備備份 "prepare"

一般情況下,在備份完成后,數據尚且不能用于恢復操作,因為備份的數據中可能會包含尚未提交的事務或已經提交但尚未同步至數據文件中的事務。因此,此時數據文件仍處理不一致狀態。他作用是通過回滾未提交的事務及同步已經提交的事務至數據文件使數據文件處于一致性狀態。

為什么選擇這個做備份?

  • mysqldump 備份缺點

效率較低,備份和還原速度慢,份過程中,數據插入和更新操作會被掛起

  • MySQL 備份工具

跨平臺性差,備份時間長,冗余備份,浪費存儲空間

  • XtraBackup

備份過程中不鎖庫表,適合生產環境,由專業組織Percona提供( 改進MySQL分支 )

  • XtraBackup能對表 庫進行備份嗎?

當然了,只不過博主太懶了,寫起來太麻煩了,不過原理都是差不多,操作也差不多,大家自己搞搞!

xtrabackup --user=bkpuser --password=123456 --backup --databases="u_test" --no-timestamp --target-dir=/data/backups/u
xtrabackup --prepare --target-dir=/data/backups/u

還原

  • prepare,利用--apply-log的作用是通過回滾未提交的事務及同步已經提交的事務至數據文件使數據文件處于一致性狀態

  • copy,因為是部分備份,不能直接用--copy-back,只能手動來復制需要的庫,也要復制ibdata(數據字典)

  • cp /data/backups/u/ibdata1 /var/lib/mysql/

  • cp -r u/u_test /var/lib/mysql/

到此,相信大家對“怎么利用Xtrabackup進行mysql增量備份”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

青海省| 荔浦县| 个旧市| 五河县| 高州市| 莒南县| 乌拉特前旗| 思南县| 临朐县| 天峨县| 灵寿县| 华蓥市| 松原市| 华池县| 五台县| 高要市| 新平| 嵊州市| 西盟| 湖州市| 阳江市| 温泉县| 东丰县| 绍兴县| 鹿邑县| 内乡县| 金乡县| 布拖县| 衡山县| 延津县| 南汇区| 汨罗市| 太湖县| 梅河口市| 宁远县| 精河县| 固阳县| 樟树市| 深圳市| 尚志市| 麻江县|