文檔:https://mariadb.com/kb/en/incremental-backup-and-restore-with-mariabackup/
一悬槽、完整備份
在進(jìn)行增量備份前,需要對數(shù)據(jù)庫做一次完整備份
mariabackup --backup --target-dir=/root/mariadb/fullbackup --user=mariabackup --password=mypassword
備份完成之后后裸,會在 target-dir 目錄中生成 xtrabackup_checkpoints 文件包含了關(guān)于備份的元數(shù)據(jù)旋讹,如下
backup_type = full-backuped
from_lsn = 0
to_lsn = 71650434
last_lsn = 71650443
- back_type 備份類型
- from_lsn 起始日志序號
- to_lsn 下一次增量備份的起始日志序號
- last_lsn 寫入重做日志的最后一個事物的偏移量
二殖蚕、增量備份
在完成一次完整備份后,就可以基于完整備份做增量備份骗村,在執(zhí)行增量備份時嫌褪,需要指定完整備份數(shù)據(jù)的地址
mariabackup --backup --target-dir=/root/mariadb/incrementalbackup_1 --incremental-basedir=/root/mariadb/fullbackup/ --user=mariabackup --password=mypassword
執(zhí)行增量備份時, target-dir 目錄必須為空胚股,且需要通過 incremental-basedir 目錄指定上一次執(zhí)行備份的 target-dir 目錄地址,備份完成后查看 xtrabackup_checkpoints 文件
backup_type = incremental
from_lsn = 71650434
to_lsn = 71651518
last_lsn = 71651527
可以看到裙秋,這里的 from_lsn 序號與上一次備份的 to_lsn 序號是對應(yīng)上的琅拌,并且備份類型也變成了 incremental 方式
如果需要繼續(xù)做增量備份缨伊,則重復(fù)這一操作,不過 incremental-basedir 目錄需要從完整備份修改為上一次的增量備份地址
mariabackup --backup --target-dir=/root/mariadb/incrementalbackup_2 --incremental-basedir=/root/mariadb/incrementalbackup_1/ --user=mariabackup --password=mypassword
查看 xtrabackup_checkpoints 文件
backup_type = incremental
from_lsn = 71651518
to_lsn = 71651866
last_lsn = 71651875
三进宝、還原
處理備份文件
與完整備份一樣刻坊,在恢復(fù)數(shù)據(jù)庫前,需要對備份的文件進(jìn)行處理
因?yàn)榘姹镜脑虻辰?MariaDB 10.2 開始谭胚,可以通過以下方式處理備份數(shù)據(jù)
# 先對完整備份文件進(jìn)行處理
mariabackup --prepare --target-dir=/root/mariadb/fullbackup/
# 對增量備份文件進(jìn)行處理,并將差異同步到完整備份的目錄
mariabackup --prepare --target-dir=/root/mariadb/fullbackup/ --incremental-dir=/root/mariadb/incrementalbackup_1
# 對增量備份文件進(jìn)行處理未玻,并將差異同步到完整備份的目錄
mariabackup --prepare --target-dir=/root/mariadb/fullbackup/ --incremental-dir=/root/mariadb/incrementalbackup_2
處理完成后灾而,查看完整備份的 xtrabackup_checkpoints 文件,可以看到 to_lsn 和 last_lsn 已經(jīng)指向最新的序號
backup_type = log-applied
from_lsn = 0
to_lsn = 71651866
last_lsn = 71651875
在 MariaDB 10.1 之前扳剿,需要通過以下命令處理文件
mariabackup --prepare --apply-log-only --target-dir=/root/mariadb/fullbackup/
mariabackup --prepare --apply-log-only --target-dir=/root/mariadb/fullbackup/ --incremental-dir=/root/mariadb/incrementalbackup_1
還原
# 停止 mariadb server 進(jìn)程
service mariadb stop
# 確保 datadir 目錄為空
rm -rf /var/lib/mysql/*
# 還原
mariabackup --copy-back --target-dir=/root/mariadb/fullbackup/
# 修改權(quán)限
chown -R mysql:mysql /var/lib/mysql/
# 啟動 mariadb server 進(jìn)程
service mariadb start