如何从Azure Blob存储将MySQL数据库恢复到Azure Database for MySQL灵活服务器
从Azure Blob存储导入SQL文件到Azure MySQL单服务器
1. 配置Blob存储访问权限
- 确保Azure MySQL服务器能访问你的Blob存储:如果用VNet集成,需配置VNet peering;如果是公网访问,要在Blob存储防火墙规则里添加MySQL服务器的公网IP
- 生成Blob存储的SAS令牌,权限至少勾选「读取」,有效期要覆盖整个导入操作的时长
2. (可选但推荐)把SQL文件下载到同区域跳转服务器
为了提升导入速度,建议将Blob里的SQL文件下载到和MySQL服务器同区域的Azure VM(跳转服务器)上:
# 使用Azure CLI下载Blob文件 az storage blob download --account-name <你的存储账户名> --container-name <容器名> --name <SQL文件名> --file ./local-backup.sql --sas-token "<你的SAS令牌>"
3. 用mysql命令完成导入
方式一:直接从Blob流式导入
如果网络条件允许,可直接通过curl拉取Blob内容并管道到mysql命令:
# 替换尖括号里的参数 curl "https://<存储账户名>.blob.core.windows.net/<容器名>/<SQL文件名>?<SAS令牌>" | mysql -h <MySQL服务器FQDN> -u <用户名> -p<密码> <目标数据库名>
注意:
-p后面直接跟密码,不要加空格;如果密码含特殊字符,要用双引号包裹
方式二:从本地文件导入
如果已经把SQL文件下载到本地/跳转服务器,用常规导入命令即可:
mysql -h <MySQL服务器FQDN> -u <用户名> -p<密码> <目标数据库名> < ./local-backup.sql
4. 验证导入结果
登录MySQL服务器,检查数据是否导入成功:
USE <目标数据库名>; SHOW TABLES; SELECT COUNT(*) FROM <某张表名>;
内容的提问来源于stack exchange,提问作者Andrew Gee
相关产品推荐
相关产品推荐

