Azure上MySQL的离线备份:将备份拷贝到Azure Blob上


公司在Azure的Iaas虚拟机上部署有好几台MySQL数据库,至于没有选择AzureDatabase for MySQL,是因为预算有限(钱不够啊!说多了也是泪,坑的还是DBA自己)。选择了Iaas的话,DBA就必须考虑离线备份(offline backup),以预防灾难性故障出现。我们选择将历史数据库备份文件用AzCopy同步到Azure存储账户的Blob存储上面。下面简单的介绍、总结一下如何使用AzCopy将XtraBackup备份上传到Azure存储账号的Blob存储上。

Linux上的 AzCopy简介

AzCopy是一个命令行实用程序,AzCopy是用于向/从 Azure Blob 和文件存储复制数据的命令行实用程序。可在文件系统和存储帐户之间或在存储帐户之间复制数据。

目前它有两个版本的 AzCopy 可下载:

AzCopy on Linux 面向 Linux 平台,它提供 POSIX 样式的命令行选项。

AzCopy on Windows提供 Windows 样式的命令行选项。

关于AzCopy的介绍,官方文档使用 Linux 上的 AzCopy 传输数据已经有很详细的介绍了,如有什么不清楚的,建议通读这篇文章。

之前在Linux上安装AzCopy,必须首先安装.NET Core,但是从 AzCopy 7.2 版本开始,.NET Core 依赖项随 AzCopy 包打包在一起。 如果使用的是 7.2 版或更高版本,则安装.NET Core 不再是先决条件

其实这篇文章很早之前就存在我的笔记里面,之前的安装比较麻烦一下(这里将之前的笔记部分全部删除,官方文档也找不到早期Azcopy版本的介绍使用了),目前最新现在AzCopy V10

AzCopy v10 中的新增功能

· 将文件系统同步到 Azure Blob 存储,或反之。使用azcopy sync <source> <destination>非常适合增量复制方案。

· 支持将整个帐户(仅限 Blob 服务)复制到另一个帐户。

· 使用新的 URL 放置块API 来支持帐户到帐户的复制。无需向客户端传输数据,因此数据传输速度更快。

· 列出或删除给定路径中的文件和 Blob

· 支持在路径中使用通配符模式,并支持 --exclude 标志。

· 使用每个 AzCopy 实例创建作业顺序和相关的日志文件。可以查看和重启以前的作业,以及恢复失败的作业。AzCopy 还会在失败后自动重试传输。

· 提供常规性能改进。

AzCopy的安装配置

AzCopy不需要安装。只需要解压压缩包,找到对应的azcopy文件就可以使用。当然,最好将azcopy文件拷贝到系统路径以方便使用。

AzCopy V8安装

# wget -O azcopy.tar.gz https://aka.ms/downloadazcopylinux64

# tar -xzvf azcopy.tar.gz

# cd azcopy/

AzCopy V10安装

# tar -xf azcopy_linux_amd64_10.2.1.tar.gz

# cd azcopy_linux_amd64_10.2.1/

# mv azcopy /usr/bin/

检查是否安装了AzCopy

# whereis azcopy

azcopy: /usr/bin/azcopy /usr/lib/azcopy

# locate azcopy

检查AzCopy的版本

直接输入AzCopy命令(之前的AzCopy版本没有查看版本的参数, AzCopy V10有相关查看版本的参数),如下所示:

# azcopy
------------------------------------------------------------------------------
azcopy 7.3.0-netcore Copyright (c) 2018 Microsoft Corp. All Rights Reserved.
------------------------------------------------------------------------------
# azcopy is designed for high-performance uploading, downloading, and copying
data to and from Microsoft Azure Blob, and File storage.
# Command Line Usage:
 azcopy --source <source> --destination <destination> [options]
# Options:
 [--source-key] [--dest-key] [--source-sas] [--dest-sas] [--verbose] [--resume] 
 [--config-file] [--quiet] [--parallel-level] [--source-type] [--dest-type] 
 [--recursive] [--include] [--check-md5] [--dry-run] [--preserve-last-modified-time]
 [--exclude-newer] [--exclude-older] [--sync-copy] [--set-content-type] [--blob-type] 
 [--delimiter] [--include-snapshot] [--block-size-in-mb]
------------------------------------------------------------------------------
For azcopy command-line help, type one of the following commands:
# Detailed command-line help for azcopy --- azcopy --help
# Detailed help for any azcopy option --- azcopy --help source-key
# Command line samples --- azcopy --help sample
You can learn more about azcopy at http://aka.ms/azcopy.

如果是AzCopy V10,它有提供版本参数--version

# azcopy --version

azcopy version 10.2.1

AzCopy的卸载删除

其实AzCopy不需要安装,所以使用下面命令找到相关文件,直接删除即可

# whereis azcopy
azcopy: /usr/bin/azcopy /usr/lib/azcopy
# locate azcopy
# cd /usr/lib
# rm -rf azcopy/
# rm -rf /usr/bin/azcopy

AzCopy使用案例

AzCopy命令版本很多,不同版本直接的参数和功能也有差异,这里不打算一一介绍了,毕竟官方文档也有较详细的介绍(好像之前AzCopy V7的版本相关文档已经搜索不到了)

AzCopy V8

https://docs.azure.cn/zh-cn/storage/common/storage-use-azcopy-linux?toc=%2fstorage%2fblobs%2ftoc.json

AzCopy V10

https://docs.azure.cn/zh-cn/storage/common/storage-use-azcopy-v10?toc=%2fstorage%2fblobs%2ftoc.json

https://github.com/MicrosoftDocs/azure-docs.zh-cn/blob/master/articles/storage/common/storage-use-azcopy-v10.md

这里仅仅介绍一两个简单例子,如下所示(Azcopy V7):

azcopy \
 --source /mysql/mysql_backup/2018-10-11 \
 --destination https://xxxxx.blob.core.chinacloudapi.cn/xxxxx/ \
 --dest-key EnslAGoOwWaj9ZFnwYtVMqQhoNJOAKh88o5FZvxC8f1wT+AeHf1eKF/ZoQSvHh54iObFfhyxSPraCOp4oDBZyQ== \
 --recursive

测试传输速度。

同步:增量复制和删除(仅适用于 Blob 存储)

.\azcopy sync "C:\local\path" "https://account.blob.core.chinacloudapi.cn/mycontainer<sastoken>" --recursive=true

这里的sastoken是什么呢? 去你的存储账号,在共享访问签名哪里, 点击生成SAS和连接字符串,就会生成"SAS令牌"

azcopy sync "/mysql/mysql_backup/db_backup""https://xxxx.blob.core.chinacloudapi.cn/xxxx?sv=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" --recursive=true

当然最终还是要配置成crontab作业,所以将上面命令放在shell脚本中,并且将AzCopy命令的输出写入到日志,配上邮件发送,基本上就完成了。

参考资料:

https://docs.azure.cn/zh-cn/storage/common/storage-use-azcopy-linux

http://www.178linux.com/84550

https://github.com/MicrosoftDocs/azure-docs.zh-cn/blob/master/articles/storage/common/storage-use-azcopy-v10.md

优质内容筛选与推荐>>
1、Zabbix日常监控之lvs监控
2、【转载】Java并发编程:volatile关键字解析 by 海子
3、2010山东省第一届ACM程序设计竞赛
4、hdu 1052 Tian Ji -- The Horse Racing (田忌赛马)
5、DEV C++ 指標初始化


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn