MariaDB物理备份工具Mariabackup

本文详细介绍了Mariabackup,一款由MariaDB提供的开源物理备份工具,用于InnoDB,Aria和MyISAM表的在线备份。文章涵盖了其工作原理,语法格式,以及如何进行完全备份与恢复,增量备份与恢复的全过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Mariabackup

简介

Mariabackup是MariaDB提供的一个开源工具,用于对InnoDB,Aria和MyISAM表进行物理在线备份。这个工具是基于Percona的XtraBackup(版本2.3.8)的解决方案。
这里有一点需要注意,在MariaDB10.3.x及以上的版本用Percona XtraBackup工具会有问题。原因可能是MariaDB10.3以上版本的redo日志格式和之前不同了。

Percona的官方文档:https://www.percona.com/doc/percona-xtrabackup/2.4/index.html
Mariabackup的官方文档:https://mariadb.com/kb/en/library/mariabackup-overview/
Percona XtraBackup: https://blog.youkuaiyun.com/L835311324/article/details/83628339

这个物理备份工具的原理可以参考这篇文章: http://mysql.taobao.org/monthly/2016/03/07/

语法格式:

mariabackup [--defaults-file=#] [--backup | --prepare | --copy-back | --move-back] [OPTIONS]

常用选项

  • - -backup
    备份数据库。
    使用此命令选项,Mariabackup会对您的数据库执行备份操作。备份将写入目标目录,由- -target-dir选项设置。
  • - -copy-back
    将备份还原到数据目录。
    使用此命令,Mariabackup将备份从目标目录复制到数据目录,如- -datadir选项所定义。您必须在运行此命令之前停止MariaDB服务器。数据目录必须为空。如果要使用备份覆盖数据目录,请使用该- -force-non-empty-directories选项。
    请记住,在恢复备份之前,首先需要使用该- -prepare选项运行Mariabackup 。在完全备份的情况下,这使得文件的时间点保持一致。使用增量备份,这会将增量应用于基本备份。准备好备份后,您可以运行- -copy-back将其应用于MariaDB Server。
    运行该- -copy-back命令会将备份文件复制到数据目录。如果要保存备份以供日后使用,请使用此命令。如果您不想保存备份以供日后使用,请使用该- -move-back命令。
  • - -defaults-file
    定义包含默认配置的文件的路径。
  • -H, --host
    定义要备份的MariaDB服务器的主机
  • - -incremental-basedir
    定义是否要增加备份
  • - -incremental-dir
    定义是否要增加准备好的备份
    将此选项与- -prepare命令选项一起使用会导致Mariabackup增加准备好的备份,而不是从头开始复制。增量将.delta文件和日志文件应用到目标目录中。
  • - -move-back
    将备份还原到数据目录。
    使用此命令,Mariabackup将备份从目标目录移动到数据目录,如–datadir选项所定义。您必须在运行此命令之前停止MariaDB服务器。数据目录必须为空。如果要使用备份覆盖数据目录,请使用该–force-non-empty-directories选项。
    请记住,在恢复备份之前,首先需要使用该–prepare选项运行Mariabackup 。在完全备份的情况下,这使得文件的时间点保持一致。使用增量备份,这会将增量应用于基本备份。准备好备份后,您可以运行–move-back将其应用于MariaDB Server。
  • -p, --password
    定义用于连接MariaDB Server的密码。
  • -P, --port
    定义要连接的服务器端口
  • - -prepare
    准备现有备份以还原到MariaDB服务器 。
    Mariabackup --backup在目标目录中的操作期间生成的文件尚未准备好在服务器上使用。在将数据还原到MariaDB之前,首先需要准备备份。
    在完全备份的情况下,文件不是时间点一致的,因为它们是在不同时间拍摄的。如果您尝试在未先准备数据的情况下还原数据库,InnoDB会将新数据拒绝为损坏。使用该–prepare命令运行Mariabackup 会使数据准备就绪,因此您可以将其还原到MariaDB Server。使用增量备份时,需要使用–prepare命令和–incremental-dir选项通过增量备份中的增量更新基本备份。
  • -S, --socket
    定义用于连接本地数据库的套接字
  • - -user
    定义用于连接MariaDB服务器的用户名
  • - -version-check
    启用版本检查。
    使用此选项,您可以启用Mariabackup版本检查
  • - -version
    打印版本信息。

完全备份与恢复

  • 备份

用户名为root
密码为centos
备份到目录/backup/$(date ‘+%y-%m-%d’)_fullbackup 这里的$(date ‘+%y-%m-%d’)_fullbackup目录会自动创建,而backup需要自己创建

mariabackup --backup --target-dir /backup/$(date '+%y-%m-%d')_fullbackup  --user root  --password centos
  • 恢复

第一步:准备全备数据

mariabackup --prepare --target-dir   --user backup_user --password backup_passwd

第二步:还原数据 (保证要还原的数据库服务器的data目录为空)

mariabackup --copy-back --target-dir /backup/18-07-30_fullbackup  --user root  --password centos 

在这里插入图片描述
第三步:修改data目录权限
因为备份的用户是root,还原过去的时候属主没有变化,所以要吧还原过去的数据的属主和属组修改一下

chown -R mysql:mysql /usr/local/mariadb/data

增量备份与还原

  • 备份

完全备份

mariabackup --backup --target-dir /backup/fullbackup  --user root  --password centos

增量备份

mariabackup --backup --target-dir /backup/inc1   --incremental-basedir /backup/fullbackup --user root --password centos

这里的 /backup/fullbackup表示基于全备做的增量备份

  • 恢复

现在我们有2个备份,一个是全备一个是增量备份,具体步骤如下

第一步:准备全备数据

mariabackup --prepare --target-dir /backup/fullbackup/    --user root --password centos     --apply-log-only

第二步:将增量备份与全备合并

mariabackup --prepare --target-dir /backup/fullbackup/  \
   --user root --password centos  \
   --incremental-dir /backup/inc1   --apply-log-only

第三步:还原(保证data目录为空)

mariabackup --copy-back --target-dir /backup/fullbackup/ \
--user root  --password centos 

第四步:修改属主属组

 chown -R mysql:mysql /usr/local/mariadb/data
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值