python调用阿里api定时备份阿里云RDS数据库

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/m0_37886429/article/details/102646433

需求: 全量备份数据库,但是数据库比较大,如果采用mysqldump在其他机器备份会大量占用mysql,所以研究了阿里api文档写了python脚本放在linux下用定时任务自动备份。

一、安装阿里云rds的SDK模块

pip install  aliyun-python-sdk-rds

参考地址:https://help.aliyun.com/document_detail/100865.html

本地用的python环境是最新的python3.8.0
服务器上用的python环境是python3.7.4

二、使用阿里云Python SDK调用RDS的CreateDBInstance接口创建一个RDS实例

#!/usr/bin/env python
#-*- coding:utf-8 -*-
#安装:pip install  aliyun-python-sdk-rds

from aliyunsdkcore.client import AcsClient
from aliyunsdkrds.request.v20140815.CreateBackupRequest import CreateBackupRequest
from aliyunsdkcore.profile import region_provider
region_provider.modify_point('Rds', 'cn-shanghai', 'rds.aliyuncs.com')

client = AcsClient(
"<your-access-key-id>",
"<your-access-key-secret>",
"<your-region-id>"
);
 
#创建备份的RDS实例
request = CreateBackupRequest()
print(request)

参考地址:https://helpcdn.aliyun.com/document_detail/67121.html

三、调用CreateBackup接口为实例创建一个备份集

#系统规定参数,取值:CreateBackup
request.set_action_name("CreateBackup")

#实例ID
request.set_DBInstanceId("**************")

#备份类型, Logical:逻辑备份;Physical:物理备份;Snapshot:快照备份。默认值:Physical
request.set_BackupMethod("Logical")

#备份策略,db:单库备份;instance:实例备份
request.set_BackupStrategy('db')

#数据库列表,多个数据库之间用英文逗号(,)隔开
request.set_DBName('ds_sys')

#备份方式,Auto:自动选择全量备份或增量备份;FullBackup:全量备份。默认值:Auto。
#request.set_BackupType("Auto")

response = client.do_action_with_exception(request)

参考地址:https://help.aliyun.com/document_detail/26272.html

四、完整备份代码

#!/usr/bin/env python
#-*- coding:utf-8 -*-

from aliyunsdkcore.client import AcsClient
from aliyunsdkrds.request.v20140815.CreateBackupRequest import CreateBackupRequest
from aliyunsdkcore.profile import region_provider
region_provider.modify_point('Rds', 'cn-shanghai', 'rds.aliyuncs.com')

client = AcsClient(
        "**************",
        "**************",
        "cn-shanghai"
        )

#备份RDS
request = CreateBackupRequest()
#系统规定参数,取值:CreateBackup
request.set_action_name("CreateBackup")

#实例ID
request.set_DBInstanceId("**************")

#备份类型, Logical:逻辑备份;Physical:物理备份;Snapshot:快照备份。默认值:Physical
request.set_BackupMethod("Logical")

#备份策略,db:单库备份;instance:实例备份
request.set_BackupStrategy('db')

#数据库列表,多个数据库之间用英文逗号(,)隔开
request.set_DBName('ds_sys')

#备份方式,Auto:自动选择全量备份或增量备份;FullBackup:全量备份。默认值:Auto。
#request.set_BackupType("Auto")

try:
    response = client.do_action_with_exception(request)
    print(response)
except Exception as e:
    print(e)

##运行后返回结果:
b'{"RequestId":"ADC8B9B4-7CBD-484B-A646-A412825BF967","BackupJobId":"7349181"}'

在控制台上查看备份的任务
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_37886429/article/details/102646433