import datetime
import os
import subprocess
# 資料庫備份目錄
BACKUP_DIR = '/path/to/backup'
# 備份檔案保留週期(天)
RETENTION_PERIOD = 7
# 備份資料庫
def backup_database():
current_time = datetime.datetime.now()
backup_file = f"backup_{current_time.strftime('%Y%m%d%H%M%S')}.sql"
backup_path = os.path.join(BACKUP_DIR, backup_file)
# 使用 subprocess 模組執行資料庫備份命令
backup_command = [
'mysqldump',
'-u',
'username',
'-p',
'password',
'--all-databases'
]
with open(backup_path, 'w') as backup_file:
subprocess.run(backup_command, stdout=backup_file)
print(f"資料庫備份已完成,備份檔案儲存為: {backup_path}")
# 清理過期備份檔案
def cleanup_backup():
current_time = datetime.datetime.now()
cutoff_time = current_time - datetime.timedelta(days=RETENTION_PERIOD)
for file in os.listdir(BACKUP_DIR):
file_path = os.path.join(BACKUP_DIR, file)
if os.path.isfile(file_path):
file_time = datetime.datetime.fromtimestamp(os.path.getmtime(file_path))
if file_time < cutoff_time:
os.remove(file_path)
print(f"過期備份檔案已刪除: {file_path}")
# 恢復資料庫
def restore_database(backup_file, restore_time):
backup_path = os.path.join(BACKUP_DIR, backup_file)
# 使用 subprocess 模組執行資料庫恢復命令
restore_command = [
'mysql',
'-u',
'username',
'-p',
'password'
]
with open(backup_path, 'r') as backup_file:
subprocess.run(restore_command, stdin=backup_file)
print(f"資料庫已成功恢復到時間點: {restore_time}")
# 主函式
def main():
# 執行資料庫備份
backup_database()
# 清理過期備份檔案
cleanup_backup()
# 恢復資料庫到指定時間點
restore_database('backup_20220101120000.sql', '2022-01-01 12:00:00')
if __name__ == '__main__': main()
資料庫備份恢復
相關文章
- 備份與恢復:polardb資料庫備份與恢復資料庫
- Mysql資料庫備份及恢復MySql資料庫
- 達夢資料庫備份恢復資料庫
- postgresql備份與恢復資料庫SQL資料庫
- 資料庫備份與恢復技術資料庫
- Mongo 資料庫備份和恢復命令Go資料庫
- pg_dump 備份,恢復資料庫資料庫
- PostgreSql資料庫的備份和恢復SQL資料庫
- SqlServer資料庫恢復備份資料的方法SQLServer資料庫
- mongodb資料庫備份與恢復(資料庫資料遷移)MongoDB資料庫
- vivo 資料庫備份恢復系統演化資料庫
- 使用Mysqldump備份和恢復MySQL資料庫MySql資料庫
- MySQL-19.資料庫備份與恢復MySql資料庫
- PG-pg_dump備份/恢復資料庫資料庫
- 備份與恢復:Polardb資料庫資料基於時間點恢復資料庫
- 資料庫資料恢復—無備份,binlog未開啟的Mysql資料庫資料恢復案例資料庫資料恢復MySql
- NoSQL 資料庫案例實戰 -- MongoDB資料備份、恢復SQL資料庫MongoDB
- RMAN備份恢復典型案例——資料庫卡頓資料庫
- Linux下MySQL資料庫的備份與恢復LinuxMySql資料庫
- Mysql資料備份與恢復MySql
- 時序資料庫InfluxDB之備份和恢復策略資料庫UX
- 時序資料庫 InfluxDB 之備份和恢復策略資料庫UX
- Dedecms資料庫恢復與備份的兩種方法資料庫
- ClickHouse資料庫單機安裝及備份恢復資料庫
- 淺談達夢資料庫的備份與恢復資料庫
- RabbitMQ如何備份與恢復資料MQ
- gitlab的資料備份和恢復Gitlab
- 磁碟資料恢復及備份工具資料恢復
- 將RAC備份集恢復為單例項資料庫單例資料庫
- mysqldump使用方法(MySQL資料庫的備份與恢復)MySql資料庫
- RAC備份恢復之Voting備份與恢復
- 如何恢復Hyper Backup備份的資料
- 帝國cms備份和恢復 帝國cms恢復資料
- Oracle資料庫冷備和恢復Oracle資料庫
- 如何在HarmonyOS對資料庫進行備份,恢復與加密資料庫加密
- 分散式文件儲存資料庫之MongoDB備份與恢復分散式資料庫MongoDB
- 利用innobackupex備份集恢復指定庫
- ORACLE DG從庫 Rman備份恢復Oracle