python調用阿里api定時備份阿里雲RDS數據庫

需求: 全量備份數據庫,但是數據庫比較大,如果採用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"}'

在控制檯上查看備份的任務
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章