脚本自动下载阿里云每日备份的数据库镜像后台。前端时间街临时有个需求。需要根据每天的数据快照,计算出需要的数据结果,写入数据库,并提供查询接口。遇到过两点没试过:阿里云导出的数据库是.frm和.ibd结构的数据,需要恢复的服务器需要每天自动拉取阿里云生成的镜像备份.更重要的是如何使用自动脚本拉取阿里云备份的数据库快照解决阿里云的API和SDK选择Python开发Python安装aliyunsdkrds和aliyunsdkcore参考链接pythonSDKAPI代码获取每日备份URL的具体实现代码,你可以根据自己的需要修改#!/usr/bin/envpython#coding=utf-8fromaliyunsdkcore.clientimportAcsClientfromaliyunsdkcore.acs_exception.exceptionsimportClientExceptionfromaliyunsdkcore.acs_exception.exceptionsimportServerExceptionfromaliyunsdkrds.request.v20140815.DescribeBackupsRequestimportDescribeBackupsRequestimportjsonimportsysimportgetoptdefparser_args(argv):access_key=''access_secret=''region=''db_instance_id=''try:opts,args=getopt.getopt(argv,"hk:s:r:i:",["access_key=","access_secret=","region=","db_instance_id="])exceptgetopt.GetoptError:print('获取opt错误,''usage:mysql_db_back_url.py-k-s-r-i''例如:mysql_db_back_url.py-k12312-s12312-rcn-shanghai-irm-uf6d4vg47vtr432z9')sys.exit(2)foropt,arginopts:ifopt=='-h':print('GetoptError,''usage:mysql_db_back_url.py-k-s-r-i''例如:mysql_db_back_url.py-k12312-s12312-rcn-shanghai-irm-uf6d4vg47vtr432z9')sys.exit()elifoptin("-k","--access_key"):access_key=argelifoptin("-s","--access_secret"):access_secret=argelifoptin("-r","--region"):region=argelifoptin("-i","--db_instance_id"):db_instance_id=arg返回access_key,access_secret,region,db_instance_iddefmain():access_key,access_secret,region,db_instance_id=parser_args(sys.argv[1:])client=AcsClient(access_key,access_secret,region)request=DescribeBackupsRequest()request.set_accept_format('json')request.set_DBInstanceId(db_instance_id)#RDS数据库实例名try:response=client.do_action_with_exception(request)response=str(response,encoding='utf-8')response=json.loads(response)url=response["Items"]["Backup"][0]["BackupDownloadURL"]返回urlexceptServerExceptionase:print(e)exceptClientExceptionase:print(e)if__name__=='__main__':print(main())定时任务shell脚本back.shcur_date="`date-d"1天前"+%Y%m%d`"url="`python3mysql_db_back_url.py-kyour_access_key-syour_secret_id-rcn-shanghai-ialiyun_db_id`"wget"$url"-Odata$cur_date.tar.gztar-izxvfdata$cur_date.tar.gz-C~/mysql/datacrontab定时任务,每天凌晨1:00开始拉取镜像1***~/mysql/back.sh>~/mysql/back.log2>&1