乐趣区

关于mysql:技术分享-mysqlbackup-可以远程备份吗

作者:秦广飞

爱可生 DBA 团队成员,负责我的项目日常问题解决及公司平台问题排查,对数据库有趣味,对技术有想法。一入 IT 深似海,从此节操是路人。

本文起源:原创投稿

* 爱可生开源社区出品,原创内容未经受权不得随便应用,转载请分割小编并注明起源。

本文目录

背景介绍

测试环境

备份命令

测试场景

  • 1.A 服务器本地备份 MySQL A
  • 2.A 服务器近程备份 MySQL B

测试后果

总结

题外话

背景介绍

最近在我司客户现场遇到一个乏味的景象,对于应用 mysqlbackup 工具,近程备份其余服务器上的实例,跟大家分享一下。

mysqlbackup 反对近程备份吗?答案天然是不反对的。

那这篇文章?且缓缓往下看。

测试环境

两台服务器,咱们假如就叫 A 和 B,各装有一个 MySQL 实例,端口都是 3306。

为了接下来的测试,咱们在 A 实例上创立备份用户 user_A@’%’,明码 password_A,测试库 a1、a2、a3。

同样,咱们在 B 实例上创立备份用户 user_B@’%’,明码 password_B,测试库 b1、b2、b3。

对了,备份工具放弃跟客户现场统一:MySQL Enterprise Backup version 4.0.0。

好了,我的测试环境如下:

主机名 主机 IP 实例 版本 端口 用户 明码 测试库 备份工具 版本
qin_2 10.186.64.13 MySQL A 5.7.25 3306 user_A@’%’ password_A a1 a2 a3 mysqlbackup 4.0.0
qin_4 10.186.64.16 MySQL B 5.7.25 3306 user_B@’%’ password_B b1 b2 b3 mysqlbackup 4.0.0

备份命令

咱们晓得 mysqlbackup 属于物理备份工具。备份的是数据文件,因而也只能本地备份拷贝文件,这就表明了物理备份不能近程备份。

但咱们能够应用 –host 选项指定服务器 IP。

因为本次测试,不是为了具体钻研 mysqlbackup 备份参数的影响,因而,应用最简略的备份命令如下:

shell> mysqlbackup --defaults-file=/opt/mysql/etc/3306/my.cnf --user=user_A --password=password_A --host=10.186.64.13 --backup-dir=/data/backup01 backup

测试场景

1.A 服务器本地备份 MySQL A

测试过程

MySQL 运行时备份

MySQL 进行时备份

应用谬误的明码备份

测试小结

mysqlbackup 能够在 MySQL 运行时,进行热备,且当 MySQL 进行运行时,不能备份。

当应用谬误的用户明码时,mysqlbackup 也不能备份胜利。

2.A 服务器近程备份 MySQL B

测试过程

当 MySQL B 运行时(MySQL A 运行),在 A 服务器上备份 MySQL B。

当 MySQL B 运行时(MySQL A 进行),在 A 服务器上备份 MySQL B。

当 MySQL B 进行时,在 A 服务器上备份 MySQL B。

测试小结

当 MySQL B 实例运行时,无论 MySQL A 是否运行,近程备份都能胜利,但备份的其实是 MySQL A 的库(a1、a2、a3)。

当 MySQL B 实例进行时,无论 MySQL A 是否运行,近程备份都会失败。

测试后果

从下面测试场景的后果来看,mysqlbackup 工具在应用 –host 选项指定近程服务器备份时,如果指定了正确的用户名和明码,且近程服务器上的 MySQL 实例失常运行,备份是能够胜利的,但实际上备份的还是本地的 MySQL 实例,且不论本地 MySQL 实例是否在运行中。

是不是很神奇,因为咱们曾经测试过了,本地备份时,如果 MySQL 实例进行运行,是不能备份胜利的,然而当初近程居然都能够了。

实际上,因为客户环境,所有实例的用户、明码、端口都统一,甚至库名也统一,所以现场很具备迷惑性。

那么,咱们看下官网文档,对于这个版本的 –host 是怎么解释的:

官网文档介绍,–host 是为了兼容性,才能够配置在备份选项中,实际上并没有作用,mysqlbackup 还是会应用本地的 host 连贯数据库,但测试下来,发现如同并不是这样,因为 mysqlbackup 通过了近程服务器上 MySQL 的连贯验证。

接下来,我替换一下 mysqlbackup 版本,应用 mysqlbackup 4.1.4 测试看看:

从图中能够看出,mysqlbackup 4.1.4 曾经提醒不能应用 –host 指定的 IP,替换为应用 localhost 形式连贯数据库,且默认应用 /tmp/mysql.sock。

这样的话,应用 mysqlbackup 4.0 往上的版本,就只能应用 socket 形式连贯数据库了,即备份用户必须是 localhost。

总结

mysqlbackup 工具不能通过近程备份实例,且 4.1 版本之后,只能应用 localhost 用户通过 socket 形式连贯数据库。

本文测试发现的,mysqlbackup 4.0 通过 –host 选项连贯近程实例备份本地数据库,只是特例。

更正阐明

截图中呈现的 mysqlback 命令,是失误写错啦,应该是:mysqlbackup。

退出移动版