mariabackup的使用


一.mysqldump與xtrabackup
1.mysqldump可以查看或者編輯十分方便,它也可以靈活性的恢復之前的數據;
2.mysqldump不關心底層的存儲引擎,既適用於支持事務的,也適用於不支持事務的表;
3.mysqldump不能作為一個快速備份大量的數據或可伸縮的解決方案。如果數據庫過大,即使備份步驟需要的時間不算太久,但有可能恢復數據的速度也會非常慢,因為它涉及的SQL語句插入磁盤I/O,創建索引等等。

4.對於大規模的備份和恢復,更合適的做法是物理備份,復制其原始格式的數據文件,可以快速恢復,這時候就可以用上xtrabackup,mariadb已經集成了該工具,在/app/mariadb/bin目錄下,可執行命令叫mariabackup

5.xtrabackup的缺點是由於是采取復制物理文件的方式備份,需要大量的磁盤空間,用於存放備份。

 

二.mariabackup全量備份與恢復語句

注意:只能備份本機的mysql
1.全量備份語句
/app/mariadb/bin/mariabackup --defaults-file=/app/mariadb/my.cnf --backup --user=root --password='dreamtechIT2019' --port=3306  --target-dir=/app/mariadb/backup_data/full


2.全量恢復語句
/app/mariadb/bin/mariabackup --defaults-file=/app/mariadb/my.cnf --copy-back --datadir=/app/mariadb/data --target-dir=/app/mariadb/backup_data/full

chown -R mysql:mysql /app/mariadb/data
/app/mariadb/support-files/mysql.server start


三.mariadbbackup增量備份與恢復語句

備份
1.增量備份

/app/mariadb/bin/mariabackup --defaults-file=/app/mariadb/my.cnf --backup --user=root --password='dreamtechIT2019' --port=3306  --target-dir=/app/mariadb/backup_data/full(做一次全量備份)


/app/mariadb/bin/mariabackup --defaults-file=/app/mariadb/my.cnf --backup --user=root --password='dreamtechIT2019'  --port=3306 --target-dir=/app/mariadb/backup_data/inc1 --incremental-basedir=/app/mariadb/backup_data/full

2.基於上一個增量備份,繼續增量備份
/app/mariadb/bin/mariabackup --defaults-file=/app/mariadb/my.cnf --backup --user=root --password='dreamtechIT2019'  --port=3306 --target-dir=/app/mariadb/backup_data/inc2 --incremental-basedir=/app/mariadb/backup_data/inc1

3.基於上一個增量備份,繼續增量備份
/app/mariadb/bin/mariabackup --defaults-file=/app/mariadb/my.cnf --backup --user=root --password='dreamtechIT2019'  --port=3306 --target-dir=/app/mariadb/backup_data/inc3 --incremental-basedir=/app/mariadb/backup_data/inc2

 

恢復

3.增量恢復
apply-log-only的作用

(在完全備份中,執行兩種類型的操作以使數據庫保持一致:從日志文件中針對數據文件重播已提交的事務,並回滾未提交的事務。在准備增量備份時,必須跳過未提交事務的回滾,因為備份時未提交的事務可能正在進行中,並且很可能它們將在下一次增量備份中提交。您應該使用該選項來阻止回滾階段.)

#准備全量備份的數據

/app/mariadb/bin/mariabackup --defaults-file=/app/mariadb/my.cnf --prepare --apply-log-only --target-dir=/app/mariadb/backup_data/full

 

#准備第一次增量的數據

/app/mariadb/bin/mariabackup --defaults-file=/app/mariadb/my.cnf --prepare --apply-log-only --target-dir=/app/mariadb/backup_data/full   --incremental-dir=/app/mariadb/backup_data/inc1

 

#准備第二次增量的數據

/app/mariadb/bin/mariabackup --defaults-file=/app/mariadb/my.cnf --prepare --apply-log-only  --target-dir=/app/mariadb/backup_data/full  --incremental-dir=/app/mariadb/backup_data/inc2

 

#准備最后一次增量的數據,最后一次不加--apply-log-only 

/app/mariadb/bin/mariabackup --defaults-file=/app/mariadb/my.cnf --prepare   --target-dir=/app/mariadb/backup_data/full  --incremental-dir=/app/mariadb/backup_data/inc3

 

#停止數據庫,並刪除舊的數據文件,注意備份/app/mariadb/data/目錄下的binlog

/app/mariadb/support-files/mysql.server stop
rm -rf /app/mariadb/data/*

 

#開始恢復合並后的全部數據的數據庫

/app/mariadb/bin/mariabackup --defaults-file=/app/mariadb/my.cnf --copy-back --datadir=/app/mariadb/data --target-dir=/app/mariadb/backup_data/full

 

#啟動恢復后的數據庫

chown -R mysql:mysql /app/mariadb/data
/app/mariadb/support-files/mysql.server start

 

四.跨服務器的數據庫恢復

1.重新安裝空的mariadb,安裝目錄指定為/app/mariadb

2.將/app/mariadb/backup_data拷貝到新數據庫服務器的/app/mariadb目錄

3.執行以下命令恢復

/app/mariadb/bin/mariabackup --defaults-file=/app/mariadb/my.cnf --prepare --apply-log-only --target-dir=/app/mariadb/backup_data/full

/app/mariadb/bin/mariabackup --defaults-file=/app/mariadb/my.cnf --prepare --apply-log-only --target-dir=/app/mariadb/backup_data/full --incremental-dir=/app/mariadb/backup_data/inc1

/app/mariadb/bin/mariabackup --defaults-file=/app/mariadb/my.cnf --prepare --apply-log-only --target-dir=/app/mariadb/backup_data/full --incremental-dir=/app/mariadb/backup_data/inc2

/app/mariadb/bin/mariabackup --defaults-file=/app/mariadb/my.cnf --prepare --target-dir=/app/mariadb/backup_data/full --incremental-dir=/app/mariadb/backup_data/inc3

/app/mariadb/support-files/mysql.server stop

#注意備份/app/mariadb/data/目錄下的binlog
rm -rf /app/mariadb/data/*

/app/mariadb/bin/mariabackup --defaults-file=/app/mariadb/my.cnf --copy-back --datadir=/app/mariadb/data --target-dir=/app/mariadb/backup_data/full

chown -R mysql:mysql /app/mariadb/data
/app/mariadb/support-files/mysql.server start

4.注意恢復的時候要按照增量備份順序來恢復,否則增量數據無法正常恢復,這是由於每個增量備份的xtrabackup_checkpoints,都記錄了上一個日志序列號from_lsn,結束的日志序列號to_lsn,一脈相承,如下圖所示

[root@iZbp1at8fph52evh70atb1Z full]# cat xtrabackup_checkpoints
backup_type = log-applied
from_lsn = 0
to_lsn = 198078813872
last_lsn = 198078816863
recover_binlog_info = 0
[root@iZbp1at8fph52evh70atb1Z full]# cd ..
[root@iZbp1at8fph52evh70atb1Z backup_data]# cd inc1/
[root@iZbp1at8fph52evh70atb1Z inc1]# cat xtrabackup_checkpoints
backup_type = incremental
from_lsn = 198078813872
to_lsn = 198078814600
last_lsn = 198078814609
recover_binlog_info = 0
[root@iZbp1at8fph52evh70atb1Z inc1]# cd ../inc2/
[root@iZbp1at8fph52evh70atb1Z inc2]# cat xtrabackup_checkpoints
backup_type = incremental
from_lsn = 198078814600
to_lsn = 198078816133
last_lsn = 198078816142
recover_binlog_info = 0
[root@iZbp1at8fph52evh70atb1Z inc2]# cd ../inc3/
[root@iZbp1at8fph52evh70atb1Z inc3]# cat xtrabackup_checkpoints
backup_type = incremental
from_lsn = 198078816133
to_lsn = 198078816854
last_lsn = 198078816863
recover_binlog_info = 0

5.使用mariabackup備份數據庫,相當於將/app/mariadb/data目錄復制了一份,所以存放備份文件的磁盤空間,需要根據data目錄的大小去評估

[root@iZbp1at8fph52evh70atb1Z backup_data]# du --max-depth=1 -lh
2.7M ./inc1
2.0G ./full
2.0G .
[root@iZbp1at8fph52evh70atb1Z backup_data]# cd /app/mariadb/
[root@iZbp1at8fph52evh70atb1Z mariadb]# du --max-depth=1 -lh
3.5M ./share
2.0G ./backup_data
84K ./support-files
24K ./scripts
3.6G ./data
354M ./mysql-test
1.3G ./bin
5.5M ./include
72K ./docs
729M ./lib
760K ./man
2.8M ./sql-bench

[root@iZbp1at8fph52evh70atb1Z data]# ls -lh
total 3.5G
-rw-r----- 1 mysql mysql 16K Mar 26 13:55 aria_log.00000001
-rw-r----- 1 mysql mysql 52 Mar 26 13:55 aria_log_control
-rw-r----- 1 mysql mysql 1.4M Mar 26 13:55 ib_buffer_pool
-rw-r----- 1 mysql mysql 2.0G Mar 26 14:13 ibdata1
-rw-rw---- 1 mysql mysql 512M Mar 26 14:13 ib_logfile0
-rw-rw---- 1 mysql mysql 512M Mar 26 13:55 ib_logfile1
-rw-rw---- 1 mysql mysql 512M Mar 26 13:55 ib_logfile2
-rw-rw---- 1 mysql mysql 12M Mar 26 13:55 ibtmp1
-rw-rw---- 1 mysql mysql 2.6K Mar 26 13:55 iZbp1at8fph52evh70atb1Z.err
-rw-rw---- 1 mysql mysql 6 Mar 26 13:55 iZbp1at8fph52evh70atb1Z.pid
-rw-rw---- 1 mysql mysql 0 Mar 26 13:55 multi-master.info
drwx------ 2 mysql mysql 4.0K Mar 26 13:55 mysql
-rw-rw---- 1 mysql mysql 1.2K Mar 26 14:13 mysql-bin.000001
-rw-rw---- 1 mysql mysql 19 Mar 26 13:55 mysql-bin.index
drwx------ 2 mysql mysql 4.0K Mar 26 13:55 performance_schema
drwx------ 2 mysql mysql 4.0K Mar 26 13:55 report@002dbinlog
drwx------ 2 mysql mysql 4.0K Mar 26 13:55 sbtest
drwx------ 2 mysql mysql 4.0K Mar 26 13:55 test
-rw-r----- 1 mysql mysql 28 Mar 26 13:55 xtrabackup_binlog_pos_innodb
-rw-r----- 1 mysql mysql 666 Mar 26 13:55 xtrabackup_info

[root@iZbp1at8fph52evh70atb1Z full]# ls -lh
total 2.0G
-rw-r----- 1 root root 16K Mar 26 14:11 aria_log.00000001
-rw-r----- 1 root root 52 Mar 26 14:11 aria_log_control
-rw-r----- 1 root root 298 Mar 26 14:11 backup-my.cnf
-rw-r----- 1 root root 1.4M Mar 26 14:11 ib_buffer_pool
-rw-r----- 1 root root 2.0G Mar 26 14:11 ibdata1
-rw-r----- 1 root root 2.5K Mar 26 14:11 ib_logfile0
drwx------ 2 root root 4.0K Mar 26 14:11 mysql
drwx------ 2 root root 4.0K Mar 26 14:11 performance_schema
drwx------ 2 root root 4.0K Mar 26 14:11 report@002dbinlog
drwx------ 2 root root 4.0K Mar 26 14:11 sbtest
drwx------ 2 root root 4.0K Mar 26 14:11 test
-rw-r----- 1 root root 36 Mar 26 14:11 xtrabackup_binlog_info
-rw-r----- 1 root root 111 Mar 26 14:11 xtrabackup_checkpoints
-rw-r----- 1 root root 601 Mar 26 14:11 xtrabackup_info

參考文檔:

https://mariadb.com/kb/en/library/mariabackup-overview/

https://www.jianshu.com/p/169f96c709b1

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM