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