EN 联系我们加入我们
典型案例
您现在的位置:首页 > 典型案例
【案例分享】NBU的MariaDB备份方法


客户一套Mysql用NBU不能备份,工程师到达现场后检查发现:Mysql是MariaDB,NBU为7.7.3版本,而且安装了Agent,配置了脚本。查看配置未发现任何故障,于是,找到一台相似的Mysql,通过详细比对发现path的环境变量不同,也就是MariaDB和Mysql的目录结构不一样。虽然很多人认为MariaDB是Mysql的开源版本,但在NBU支持方面,MariaDB稍逊一筹。查看 Knowledgebase发现,NBU在8.0之后的版本做了一些改动,能够支持MariaDB。

但显然7.7.3版本是不支持的,那么MariaDB都有哪些备份方式呢?

MariaDB的NBU备份方式有以下几种:

1、导表。Mariadump导出数据后用NBU以备份文件的方式备份dump文件;但毕竟属于逻辑导出,并不完善,不推荐;

2、工具1-Percona XtraBackup。Percona XtraBackup是一款开源的备份软件,也是可实现对表级别的备份,在10.3版本之前主要用于MariaDB的备份,后被Mariabackup取代,可实现备份目的,但由于是完全开源,对版本的支持性不好,不推荐;

3、代理。由于NBU的Agent需要安装客户端,利用Agent的方式备份数据到一个文件,然后备走对于文件;但此种方式需要在NBU 8.0之后才支持MariaDB,不推荐;

4、工具2 -Mariabackup。Mariabackup不同于Xtrabackup,是官方支持且推荐的企业级备份方式。同样,备份完成后的文件也可以通过NBU以备份文件的方式备份出来,推荐。

下面主要介绍Mariabackup的概况、备份和恢复:

 基于MariaDB的Mariabackup备份恢复

1、Mariabackup的安装部署

Mariabackup是MariaDB提供的开源工具,用于对InnoDB、Aria和MyISAM表进行物理在线备份。InnoDB采用“热门在线”方式备份,最初来自Percona XtraBackup 2.3.8版本,适用于Linux和Windows。

MariaDB 10.1引入了MariaDB的独有功能,例如InnoDB页面压缩和静态数据加密,这些独有功能在MariaDB用户中非常受欢迎。但是,来自MySQL生态系统的现有备份解决方案(如Percona XtraBackup)不支持这些功能的完全备份。

为满足用户需求,我们决定通过创建Mariabackup(Mariabackup以广泛使用的备份工具-Percona XtraBackup为基础,从其2.3.8版本扩展而来。),制定一个可完全支持MariaDB独有功能的备份解决方案。

Mariabackup支持的功能

Mariabackup支持Percona XtraBackup 2.3.8版本的所有主要功能,另外还有如下特点:

a.使用静态数据加密备份/恢复表;

b.使用InnoDB页面压缩备份/恢复表;

c.Galera Cluster的mariabackup SST方法;

d.Microsoft Windows支持;

e.使用从MariaDB 10.2.16版本和MariaDB 10.3.8版本开始的MyRocks存储引擎备份/恢复表。 

MariaDB   Enterprise Backup支持一些其他功能:

a.在备份期间最小化锁定以实现范围更广、更高效的备份:

1)依赖于BACKUP STAGE命令和DDL日志记录的使用;

2)在ALTER TABLE语句的复制阶段没有锁定,往往是这些语句的最长阶段。

b.为本地磁盘上存储内容的所有存储引擎提供最佳备份支持。

与Percona   XtraBackup相比的差异

a.Percona XtraBackup将其InnoDB重做日志文件复制到文件xtrabackup_logfile;Mariabackup使用文件ib_logfile0;

b.Mariabackup 不支持 以 libgcrypt为基础的Percona XtraBackup的备份加密;

c.因为是Xtrabackup,没有符号链接Mariabackup和Innobackupex;相反,Mariabackup有Innobackupex命令行选项来启用Innobackupex兼容的选项;

d.在--compact与--rebuild_indexes不支持的选项;

e.MariaDB 10.1.24版本中,Mariabackup删除了--stream=tar的支持;

f.该Xbstream实用程序已重命名为Mbstream。但要在创建备份时选择此输出格式,Mariabackup的--stream选项仍然需要该Xbstream值;

g.Mariabackup不支持无锁binlog。 

版本控制方案的差异

a.每个Percona XtraBackup版本都有两个版本号 - Percona XtraBackup版本号及其对应的MySQL Server版本号。例如:Xtrabackup 2.2.8版本对应MySQL服务器5.6.22;

 b.每个Mariabackup版本只有一个版本号,与其对应的MariaDB Server版本的版本号相同。例如:Mariabackup对应的MariaDB服务器10.2.15-MariaDB Linux(x86_64)。

有关Mariabackup版本的更多信息,请参阅Mariabackup版本与MariaDB Server版本的兼容性。https://mariadb.com/kb/en/library/mariabackup-overview/#compatibility-of-mariabackup-releases-with-mariadb-server-releases

 

2、MariaDB的Mariabackup备份

使用Mariabackup时,可选择执行完全备份或增量备份:完全备份在空目录中创建数据库服务器的完整备份,而增量备份通过备份过的数据更改来更新之前的备份。下文介绍如何执行完整备份。

为备份数据库,需要运行Mariabackup,选择--backup执行备份,使用--target-dir选项放置备份文件。进行完整备份时,目标目录必须为空或不存在。

备份需运行如下命令:

$ mariabackup --backup \

   --target-dir=/var/mariadb/backup/ \

   --user=mariabackup --password=mypassword

备份所需时间取决于目标数据库或表的大小。如有需要,可取消备份(备份过程不会修改数据库)。

Mariabackup将备份文件写入目标目录,若目标目录不存在,需创建目标目录;如果目标目录已存在并包含备份文件,则会引发错误并中止备份。

图为示例备份目录:

$ ls /var/mariadb/backup/

 

aria_log.0000001  mysql                   xtrabackup_checkpoints

aria_log_control  performance_schema      xtrabackup_info

backup-my.cnf     test                    xtrabackup_logfile

ibdata1           xtrabackup_binlog_info


3、 MariaDB的Mariabackup恢复

准备备份

备份操作期间,在不同时间点复制数据文件,会使Mariabackup在目标目录中创建的数据文件时间点不一致。如果尝试从复制文件还原,InnoDB会检测到不一致的情况并中止备份,避免数据文件受损。

备份还原之前,需提前准备使数据文件保持一致:

$ mariabackup --prepare \

   --target-dir = / var / mariadb / backup /


恢复备份

备份完成后,可使用--copy-back或--move-back选项还原备份。--copy-back选项允许保留原始备份文件;--move-back选项实际上是将备份文件移动到Datadir(原始备份文件将会丢失):

a.停止MariaDB Server进程;

b.确保Datadir是空的;

c.任选一种选项运行Mariabackup:

$ mariabackup --copy-back \

   --target-dir = / var / mariadb / backup /

d.可能需要修复文件权限;

当Mariabackup还原数据库时,会保留备份的文件和目录权限,将文件作为用户和组,还原数据库写入磁盘。因此,在还原备份后,可能需要调整数据目录的所有者以匹配MariaDB服务器的用户和组。例如,要递归地将文件的所有权更改为Mysql用户和组,可以执行:

$ chown -R mysql:mysql / var / lib / mysql /

e.最后,启动MariaDB Server进程。

使用其他备份工具恢复

MariaDB完整备份后,就是一个功能齐全的MariaDB数据目录。因此,只要MariaDB Server进程在目标服务器上停止,便可使用任意文件复制工具恢复备份rysnc。

可执行以下操作来恢复备份:

$ rsync -avrP

 / var / mariadb / backup / var / lib / mysql /

$ chown -R mysql:mysql / var / lib / mysql /

$ rm / var / lib / mysql / ib_logfile *

以MariaDB 10.2.10之前的版本使用Mariabackup时,还必须删除所有预先存在的 InnoDB重做日志文件。例如:

$ rm / var / lib / mysql / ib_logfile *

4、MariaDB的Mariabackup实际备份语句示例

备份:

用户名为root
  密码为P@ssw0rd
  备份到目录/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 P@ssw0rd

恢复:

第一步:准备全备数据

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

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

mariabackup   --copy-back --target-dir /backup/18-07-30_fullbackup  --user root    --password P@ssw0rd

第三步:修改data目录权限
  因为备份的用户是root,还原过去的时候属主没有变化,所以要把还原数据的属主和属组修改一下

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

 


增量备份与还原

备份:

完全备份:mariabackup   --backup --target-dir /backup/fullbackup    --user root  --password P@ssw0rd

增量备份:mariabackup   --backup --target-dir /backup/inc1     --incremental-basedir /backup/fullbackup   --user root --password P@ssw0rd

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

有增量的恢复:

有增量的备份恢复,需要先将备份进行整合:

a.准备全备的预读:

mariabackup   --prepare --target-dir /backup/fullbackup/      --user root --password P@ssw0rd       --apply-log-only

b.合并上增量备份:

mariabackup   --prepare --target-dir /backup/fullbackup/    \

   --user root --password P@ssw0rd  \

   --incremental-dir /backup/inc1   --apply-log-only

c.新建或清空目标位置目录/usr/local/mariadb/data/,当然也可将原目录改名后重建新的data;

d.进行还原操作:

mariabackup   --copy-back --target-dir /backup/fullbackup/ \

--user   root  --password P@ssw0rd

e.修改属主:

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

 


如欲了解更多,请登录安图特官方网站:www.antute.com.cn

版权所有 安图特(北京)科技有限公司 备案号:京ICP备17074963号-1
技术支持:创世网络