因爲愈來愈多的客戶對應數據安全的重視,目前阿里雲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後
製做定時任務
查看日誌
查看後天有備份任務已經提交完成
觸類旁通,相似的能夠參考阿里雲rds的API完成其餘需求,如何客戶對應rds的備份頻率很高的話,能夠開通災備實例,來完成異地的實時備份,若是橫向擴展讀寫操做,能夠開通多個只讀實例來分攤數據庫壓力。
https://help.aliyun.com/docum...linux
此產品不只支持衆多場景的數據庫備份,將其存儲在阿里雲的OSS,而且能夠設置加密存儲,上保障了備份數據的安全和可靠性,同時能夠設置備份對象精細到表級別而且支持增量備份,同時能夠配置備份的生命週期,可隨時利用備份數據簡單幾部就能夠進行數據恢復,測試了下,發現很好用,可是目前查看官網沒有對應API,對於天天須要超過兩次以上的備份發現只能建立多個備份任務。git