因爲愈來愈多的客戶對應數據安全的重視,目前阿里雲RDS提供了備份策略,可是備份策略週期爲天天的某一個時間,在平常雲運維工做中,有客戶提出須要天天在不一樣的時間節點多備份幾回,此時web界面就不能知足此類在一天內屢次備份的需求,可是想到了在阿里雲web控制檯經過手動點擊建立備份,是能夠在點擊後觸發建立備份的任務,想到能夠利用api來實現,同時提交工單諮詢了下,果真此類需求是須要api來作,故寫了個調用python實例配合linux系統的crond服務來完成。 html
github地址python
#!/bin/env python
# -*- coding:utf-8 -*-
# _author:kaliarch
from aliyunsdkcore import client
from aliyunsdkrds.request.v20140815 import CreateBackupRequest
import time
import os
import logging
class rdsOper():
def __init__(self,logger):
self.clentoper = client.AcsClient('LTAIhfXlcjyln****','Gwf****4K2ELmt76184o****gRfAso','cn-shanghai')
self.logger = logger
self.logger.info("------------------------start exec rds backup API log-------------")
def backup_instance(self):
# 設置參數
request = CreateBackupRequest.CreateBackupRequest()
request.set_accept_format('json')
request.add_query_param('DBInstanceId', 'rm-uf6xv3**1x842y61y')
#若是爲單庫備份,能夠添加DBName
# request.add_query_param('DBName', 'mydb')
#BackupMethod爲備份方式:Logical:邏輯備份,Physical:物理備份
request.add_query_param('BackupMethod', 'Physical')
#BackupType爲備份類型: Auto:自動計算是全量備份仍是增量備份;FullBackup:全量備份。默認值爲Auto。
request.add_query_param('BackupType', 'Auto')
response = self.clentoper.do_action_with_exception(request)
self.logger.info("rdsbackup mission submission successful!")
self.logger.info(response)
print(response)
class Rds_Log:
def __init__(self,filename):
self.filename = filename
def createDir(self):
_LOGDIR = os.path.join(os.path.dirname(__file__), 'rdsbackuplog')
print(_LOGDIR)
_TIME = time.strftime('%Y-%m-%d', time.gmtime()) + '-'
_LOGNAME = _TIME + self.filename
print(_LOGNAME)
LOGFILENAME = os.path.join(_LOGDIR, _LOGNAME)
print(LOGFILENAME)
if not os.path.exists(_LOGDIR):
os.mkdir(_LOGDIR)
return LOGFILENAME
def createlogger(self,logfilename):
logger= logging.getLogger()
logger.setLevel(logging.INFO)
handler = logging.FileHandler(logfilename)
handler.setLevel(logging.INFO)
formater = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formater)
logger.addHandler(handler)
return logger
if __name__ == "__main__":
glploger = Rds_Log('rdsbackup.log')
logfilename = glploger.createDir()
logger = glploger.createlogger(logfilename)
app = rdsOper(logger)
app.backup_instance()
複製代碼
在隨便服務器上傳代碼安裝好相關python的sdk後 製做定時任務 linux
此產品不只支持衆多場景的數據庫備份,將其存儲在阿里雲的OSS,而且能夠設置加密存儲,上保障了備份數據的安全和可靠性,同時能夠設置備份對象精細到表級別而且支持增量備份,同時能夠配置備份的生命週期,可隨時利用備份數據簡單幾部就能夠進行數據恢復,測試了下,發現很好用,可是目前查看官網沒有對應API,對於天天須要超過兩次以上的備份發現只能建立多個備份任務。git