Azure上MySQL的离线备份:将备份拷贝到Azure Blob上
公司在Azure的Iaas虚拟机上部署有好几台MySQL数据库,至于没有选择Azure Database 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
Azure上MySQL的离线备份:将备份拷贝到Azure Blob上的更多相关文章
- mysql和mariadb备份工具xtrabackup和mariabackup(mariadb上版本必须用这个)
简介 xtraBackup(PXB) 工具是 Percona 公司用 perl 语言开发的一个用于 MySQL 数据库物理热备的备份工具,支持 MySQl(Oracle).Percona Server ...
- (4.2)mysql备份还原——备份概述
1.什么情况下会用到备份呢? [1.1]灾难恢复 [1.2]单位审计:数据库在过去某一个点是什么样的 [1.3]跨机房灾备:异地备份 [1.4]认为的DDL或者DML语句,导致主从库的数据消失 [1. ...
- MySQL基于mysqldump及lvmsnapshot备份恢复
一.备份对象 数据 配置文件 代码:存储过程,存储函数,触发器 跟复制相关的配置 二进制日志文件 二.备份工具 mysqldump:逻辑备份工具 InnoDB热备.MyISAM温备.Aria温备 备份 ...
- 学一点 mysql 双机异地热备份----快速理解mysql主从,主主备份原理及实践
双机热备的概念简单说一下,就是要保持两个数据库的状态 自动同步.对任何一个数据库的操作都自动应用到另外一个数据库,始终保持两个数据库数据一致. 这样做的好处多. 1. 可以做灾备,其中一个坏了可以切换 ...
- mysql用户授权及数据备份恢复
用户授权与权限撤销 修改数据库管理员从本机登陆的密码测试: mysqladmin -hlocalhost -uroot -p password "新密码" Enter passwo ...
- MySQL基于LVM快照的备份恢复(临时)
目录1.数据库全备份2.准备LVM卷3.数据恢复到LVM卷4.基于LVM快照备份数据5.数据灾难恢复6.总结 写在前面:测试环境中已安装有mysql 5.5.36数据库,但数据目录没有存放在LVM卷, ...
- centos6.5环境通过shell脚本备份php的web及mysql数据库并做远程备份容灾
centos6.5环境通过shell脚本备份php的web及mysql数据库并做远程备份容灾 系统:centos6.5 1.创建脚本目录 mkdir -p /usr/local/sh/ 创建备份web ...
- 学一点 MYSQL 双机异地热备份—-MYSQL主从,主主备份原理及实践
简单介绍mysql双机,多机异地热备简单原理实战. 双机热备的概念简单说一下,就是要保持两个数据库的状态自动同步.对任何一个数据库的操作都自动应用到另外一个数据库,始终保持两个数据库数据一致. 这样做 ...
- MySQL 分区表原理及数据备份转移实战
MySQL 分区表原理及数据备份转移实战 1.分区表含义 分区表定义指根据可以设置为任意大小的规则,跨文件系统分配单个表的多个部分.实际上,表的不同部分在不同的位置被存储为单独的表.用户所选择的.实现 ...
随机推荐
- Docker系列(四):容器之间的网络通信
首先我们需要知道:两个容器要能通信,必须要有属于同一个网络的网卡. 先来看下正常情况下我们的容器默认是否是能通信的,这里运行两个测试容器: docker run -it --name=bbox1 bu ...
- Python3 学习笔记之 IDLE
IDLE: IDLE是Python标准发行版内置的一个简单小巧的IDE,包括了交互式命令行.编辑器.调试器等基本组件,足以应付大多数简单应用. 基本操作: File->New File 新建立p ...
- PHP 微信机器人 Vbot 结合 Laravel 基础入门及实例
新来了项目,需要能监听指定微信群的消息并进行转发.基于 PHP 7 的 web 微信机器人 Vbot 可以满足需求.Vbot 本质上就是实现了登录网页版微信来进行自动回复.群管理等等操作. githu ...
- C#中的等值判断1
目录 简介 值类型和引用类型的相等比较 和相等比较相关的函数 string 和 System.Uri 的等值比较 泛型接口 IEquatable<T> 自定义比较方法 举例 总结 简介 最 ...
- 使用malloc函数或new运算符为链表结点分配内存空间
目录 使用malloc函数或new运算符为链表结点分配内存空间 使用malloc函数或new运算符为链表结点分配内存空间 当我们定义链表结点类型后,如何在每次需要使用新结点时临时分配相应大小的内存空间 ...
- python 中的一点新知识
逻辑行与物理行 所谓物理行(Physical Line)是你在编写程序时 你所看到 的内容.所谓逻辑行(Logical Line)是 Python 所看到 的单个语句.Python 会假定每一 物理行 ...
- 浏览器渗透框架BeEF使用笔记(一)
0x00 前言 BeEF,全称The Browser Exploitation Framework,是一款针对浏览器的渗透测试工具. 用Ruby语言开发的,Kali中默认安装的一个模块,用于实现对XS ...
- [LUOGU1122] 最大子树和 - 树形动规
题目描述 小明对数学饱有兴趣,并且是个勤奋好学的学生,总是在课后留在教室向老师请教一些问题.一天他早晨骑车去上课,路上见到一个老伯正在修剪花花草草,顿时想到了一个有关修剪花卉的问题.于是当日课后,小明 ...
- Feign服务调用请求方式及参数总结
前言 最近做微服务架构的项目,在用feign来进行服务间的调用.在互调的过程中,难免出现问题,根据错误总结了一下,主要是请求方式的错误和接参数的错误造成的.在此进行一下总结记录.以下通过分为三种情况说 ...
- 使用oracle脚本生成VO和Dao
话不多说直接上代码. 生成VO的脚本: SELECT '/**' || T2.COMMENTS || '*/ @Column(name="' || T1.COLUMN_NAME || '&q ...