如何在 azure 虚拟机中备份 MySQL 数据库,并使用带 Python 的 Azure 函数将备份发送到 blob 存储
How can I back up a MySQL database in an azure virtual machine and send backups to blob storage using Azure functions with Python
我在 Azure VM 中有一个 MySQL 数据库,我正在寻找一种在 Python 中编写 Azure 函数的方法,该函数将 mysqldump shell 命令的内容发送到一个 blob 存储容器。我每天使用定时器触发器备份数据库几次。
我的初始测试我使用 os.system()
到 运行 一个 mysqldump shell 命令,我在临时存储中存储了一个 gzip 版本然后上传,这在 vscode,但这在生产中不起作用。在我的日志中它只是说找不到文件,我已经尝试了几个不同的文件位置以在生产中进行测试。
我正在寻找一种更好的方法来执行这些更新,最好将 gzip 文件的内容存储到某个 python 对象中,然后使用 blob 输出绑定来存储。
你只要在你的VM中使用python schedule
就可以做我想的一切,不需要使用Azure功能,它是你的VM在云端的外部环境,它无法访问您的虚拟机内部的任何内容。尝试使用以下代码按计划直接从您的 VM 上传 .zip 文件:
from azure.storage.blob import BlobClient
import time
import schedule
def uploadZip():
storage_connection_string='<your storage connection string>'
container_name = 'backups'
#ignore the process about generating the .zip file,just store the file to local temp path
templeFilePath = "d:/home/temp/test.zip"
blob_client = BlobClient.from_connection_string(storage_connection_string,container_name,time.strftime('%Y-%m-%d,%H:%M:%S',time.localtime())+".zip")
with open(templeFilePath,'rb') as stream:
blob_client.upload_blob(stream)
print("upload successfully")
#backup each 12 hours
#schedule.every(12).hours.do(uploadZip)
#for a quick test, upload each 5 seconds
schedule.every(5).seconds.do(uploadZip)
while 1:
schedule.run_pending()
结果:
我在 Azure VM 中有一个 MySQL 数据库,我正在寻找一种在 Python 中编写 Azure 函数的方法,该函数将 mysqldump shell 命令的内容发送到一个 blob 存储容器。我每天使用定时器触发器备份数据库几次。
我的初始测试我使用 os.system()
到 运行 一个 mysqldump shell 命令,我在临时存储中存储了一个 gzip 版本然后上传,这在 vscode,但这在生产中不起作用。在我的日志中它只是说找不到文件,我已经尝试了几个不同的文件位置以在生产中进行测试。
我正在寻找一种更好的方法来执行这些更新,最好将 gzip 文件的内容存储到某个 python 对象中,然后使用 blob 输出绑定来存储。
你只要在你的VM中使用python schedule
就可以做我想的一切,不需要使用Azure功能,它是你的VM在云端的外部环境,它无法访问您的虚拟机内部的任何内容。尝试使用以下代码按计划直接从您的 VM 上传 .zip 文件:
from azure.storage.blob import BlobClient
import time
import schedule
def uploadZip():
storage_connection_string='<your storage connection string>'
container_name = 'backups'
#ignore the process about generating the .zip file,just store the file to local temp path
templeFilePath = "d:/home/temp/test.zip"
blob_client = BlobClient.from_connection_string(storage_connection_string,container_name,time.strftime('%Y-%m-%d,%H:%M:%S',time.localtime())+".zip")
with open(templeFilePath,'rb') as stream:
blob_client.upload_blob(stream)
print("upload successfully")
#backup each 12 hours
#schedule.every(12).hours.do(uploadZip)
#for a quick test, upload each 5 seconds
schedule.every(5).seconds.do(uploadZip)
while 1:
schedule.run_pending()
结果: