我自己動手寫了一個MySQL自動化備份腳本,基于docker

MySQL自動化備份Docker方案

該方案僅需通過 Docker Compose 就能輕松完成部署。你可以自由配置數據庫連接信息,無論是遠程數據庫,還是本地數據庫,都能實現無縫對接。在備份頻率設置上,支持按固定秒數間隔執行備份任務,比如設置 INTERVAL_SECONDS=3600,即可實現每小時自動備份;若設為 INTERVAL_SECONDS=86400,則能達成每日備份。

備份文件管理方面,它同樣表現出色。你可以將備份文件存儲在宿主機指定目錄,像 /vol2/1000/mysqlbackup,保障數據持久化存儲。同時,提供按天數或文件數量兩種保留策略,選擇按天數保留,設置 RETENTION_DAYS=7,就能自動清理 7 天前的舊備份;若選擇按文件數保留,配置 RETENTION_COUNT=10,則只留存最新的 10 個備份文件,有效節省存儲空間。

此方案不僅適合個人開發者保障數據安全,對于企業級數據庫備份場景也同樣適用。它操作便捷、配置靈活,能為你的數據安全保駕護航。 快來試試這個 MySQL 自動化備份 Docker 方案,開啟輕松備份新體驗!

方案特點

  • 間隔時間備份:按固定秒數間隔執行備份任務
  • 靈活保留策略:可按天數或文件數量自動清理舊備份
  • 遠程數據庫支持:直接連接遠程MySQL數據庫進行備份
  • 持久化存儲:備份文件存儲在宿主機指定目錄,確保數據安全

Docker Compose 配置

以下是簡化后的Docker Compose配置:

version: '3'
services:mysql-backup:image: fjsay/mysql-backup:latestcontainer_name: mysql-backupenvironment:- DB_HOST=xxxxx                          # 數據庫主機地址- DB_PORT=3306                            # 數據庫端口(默認3306)- DB_USER=xxxxx                          # 數據庫用戶名- DB_PASSWORD=xxxxx                      # 數據庫密碼- DB_NAME=xxxxxx                         # 要備份的數據庫名稱(留空備份所有庫)- BACKUP_MODE=interval                   # 固定為間隔模式- INTERVAL_SECONDS=43200                 # 備份間隔時間(秒)- BACKUP_DIR=/backups                    # 容器內備份目錄(保持默認)- RETENTION_POLICY=days                  # 保留策略:days(按天)或 count(按文件數)- RETENTION_DAYS=365                     # 按天保留時的天數(默認7天)- RETENTION_COUNT=10                     # 按文件數保留時的數量(默認10個)volumes:- /vol2/1000/mysqlbackup:/backups       # 宿主機備份目錄掛載restart: always                           # 容器異常退出時自動重啟

配置參數說明

數據庫連接參數

參數名說明示例值
DB_HOST數據庫主機地址(支持域名或 IP)mysql.example.com
DB_PORT數據庫端口3306
DB_USER數據庫用戶名backup_user
DB_PASSWORD數據庫密碼strong_password
DB_NAME要備份的數據庫名稱(留空則備份所有數據庫)my_database

備份間隔參數

通過INTERVAL_SECONDS參數設置備份執行間隔(秒):

  • INTERVAL_SECONDS=3600:每小時執行一次
  • INTERVAL_SECONDS=900:每15分鐘執行一次
  • INTERVAL_SECONDS=86400:每天執行一次(24小時)

備份保留策略

1. 按天數保留(RETENTION_POLICY=days

自動刪除超過指定天數的舊備份:

  • RETENTION_DAYS=7:保留最近7天的備份
  • RETENTION_DAYS=30:保留最近30天的備份
  • RETENTION_DAYS=365:保留最近1年的備份
2. 按文件數保留(RETENTION_POLICY=count

只保留指定數量的最新備份文件:

  • RETENTION_COUNT=10:保留最近10個備份
  • RETENTION_COUNT=50:保留最近50個備份
  • RETENTION_COUNT=100:保留最近100個備份

使用步驟

  1. 創建配置文件:將上述Docker Compose配置保存為docker-compose.yml

  2. 修改參數:根據實際需求修改數據庫連接信息和備份策略

  3. 啟動服務

    docker-compose up -d
    
  4. 驗證備份

    # 查看容器日志
    docker logs -f mysql-backup# 檢查備份文件
    ls -la /vol2/1000/mysqlbackup
    

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/85030.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/85030.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/85030.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

leetcode23-合并K個升序鏈表

leetcode 23 思路 遍歷所有鏈表收集節點:將每個鏈表的節點斷開其 next 指針后存入數組對數組進行排序:使用 JavaScript 的內置 sort 方法對節點數組按值排序重新連接排序后的節點:遍歷排序后的數組,依次連接每個節點形成新鏈表…

(十六)GRU 與 LSTM 的門控奧秘:長期依賴捕捉中的遺忘 - 更新機制對比

1 長期依賴捕捉能力的核心差異 1.1 信息傳遞路徑:細胞狀態 vs 單一隱藏狀態 LSTM的“信息高速公路”機制 LSTM通過獨立的細胞狀態(Cell State) 傳遞長期信息,該狀態可視為“直接通路”,允許信息跨越多個時間步而不被中…

HTTP 請求報文 方法

在 HTTP 請求報文 中,方法(Method) 是用來說明客戶端希望對服務器資源執行的操作。它出現在 HTTP 報文的第一行,稱為 請求行,格式如下: METHOD Request-URI HTTP-Version例如: GET /index.h…

【深度解析】Java高級并發模式與實踐:從ThreadLocal到無鎖編程,全面避坑指南!

🔍 一、ThreadLocal:線程隔離的利器與內存泄露陷阱 底層原理揭秘: 每個線程內部維護ThreadLocalMap,Key為弱引用的ThreadLocal對象,Value為存儲的值。這種設計導致了經典內存泄露場景: // 典型應用&#…

使用存儲型 XSS 竊取 cookie 并發送到你控制的服務器

🧪 第一步:準備監聽服務接收 cookie 在你的本機(非容器)或 DVWA 所在主機運行以下 Python 監聽代碼,用于接收竊取的 cookie: 啟動 HTTP 接收服務 # 在本機終端運行,監聽 8081 端口&#xff0…

WebDebugX和多工具組合的移動端調試流程構建:一個混合App項目的實踐案例

前段時間參與了一個跨平臺的醫療服務 App 項目,整體架構采用 Flutter 封裝原生模塊,部分功能模塊嵌套 WebView 加載 H5 頁面。開發過程中我們頻繁遇到 Web 頁面在移動端表現異常的問題,比如樣式錯亂、請求失敗、性能延遲等,而這些…

圖形編輯器基于Paper.js教程29:基于圖層的所有矢量圖元的填充規則實現

背景 在lightburn中,對于填充圖層,有這樣一個隱藏的邏輯,那就是,在加工時,填充規則是以填充圖層的所有元素進行計算的,什么意思那? 如果你在填充圖層中畫了兩個圖形,一個圓&#xf…

Python 函數實戰指南:提升編程效率的實用技巧

在 Python 編程的世界里,函數是構建高效代碼的基石。掌握實用的函數技巧不僅能讓代碼更加簡潔優雅,還能顯著提升開發效率。我們一起將結合實際案例,深入剖析 Python 函數的使用技巧,幫助開發者在日常開發中事半功倍。 一、基礎函數…

OPenCV CUDA模塊圖形變換----構建透視變換映射表函數buildWarpPerspectiveMaps()

操作系統:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 編程語言:C11 算法描述 該函數用于構建一個透視變換(Perspective Transform)的映射表(xmap / ymap),可用于后…

tcping工具使用指南

tcping是一個用于測試TCP端口連通性的工具,它類似于傳統的ping命令,但工作在傳輸層(TCP)而不是網絡層(ICMP)。 基本功能 tcping的主要功能包括: 測試目標主機特定TCP端口是否開放 測量TCP連接建立時間 統計丟包率和響應時間 安裝方法 …

CSP 2024 入門級第一輪(88.5)

4. 以下哪個序列對應數字 00 至 88 的 44 位二進制格雷碼(Gray code)?( ) A. 0000, 0001, 0011, 0010, 0110, 0111, 0101, 1000 B. 0000, 0001, 0011, 0010, 0110, 0111, 0100, 0101 C. 0000, 0001, 0011, 0010, …

三菱FX-5U系列入門到精通

第2章 中間繼電器 繼電器工作模式:線圈得電,常開觸點閉合,常閉觸點斷開。總結:中間繼電器線圈電壓分為:24VDC 110VAC 220VAC 380VAC PLC控制柜中常用的是24VDC比較多,而動力電柜中或者控制風機水泵的電柜中220VAC比較多。大部分選擇24VDC,然后用觸點控制220或者380,說白…

簡歷模板1——王明 | 高級數據挖掘工程師 | 5年經驗

王明 | 高級數據挖掘工程師 | 5年經驗 📱 (86) 189-xxxx-xxxx | 📧 wangmingemail.com | 📍 深圳市 💻 GitHub | 👔 LinkedIn 💼 工作經歷 ?科技前沿集團 | 高級數據挖掘工程師 📅 2021.06 …

【JVM】- 內存模式

Java內存模型:JMM(Java Memory Model),定義了一套在多線程環境下,讀寫共享數據(成員變量、數組)時,對數據的可見性,有序性和原子性的規則和保障。 原子性 問題分析 【問…

AQS獨占模式——資源獲取和釋放源碼分析

AQS資源獲取(獨占模式) Node節點類 static final class Node {//標記當前節點的線程在共享模式下等待。static final Node SHARED new Node();//標記當前節點的線程在獨占模式下等待。static final Node EXCLUSIVE null;//waitStatus的值&#xff0c…

壓測過程中TPS上不去可能是什么原因

進行性能分析 接口沒有報錯或者錯誤率低于1%,繼續增加并發還是一樣,這個時候需要考慮幾點 1.是否觸發限流,比如waf、Nginx等情況,有沒有一些限流的情況,如果觸發了限流,請求是沒有達到后端的,所…

Golang 解大整數乘法

文章目錄 Golang 解大整數乘法問題描述:LeetCode 43. 字符串相乘思路Golang 代碼 Golang 解大整數乘法 在初學 C 語言的時候,我們一定接觸過“字符串相加”或“字符串相乘”之類的問題,對于初學者而言,這類問題的難度一般來說是比…

web3-區塊鏈的技術安全/經濟安全以及去杠桿螺旋(經濟穩定)

web3-區塊鏈的技術安全/經濟安全以及去杠桿螺旋(經濟穩定) 三個基本設計問題 技術安全 在技術結構中對其進行原子級的、瞬時利用(無風險) 無風險,因為攻擊者的結果還是二進制的: 只會是攻擊成功 獲利或…

Java多線程通信:wait/notify與sleep的深度剖析(時序圖詳解)

在Java多線程編程中,線程間的通信與協作是實現復雜并發邏輯的關鍵。wait()、notify()以及sleep()方法作為線程控制的重要工具,有著各自獨特的使用場景與規則。本文將深入探討wait()和notify()的協作機制,以及sleep()的阻塞特性,同…

關于使用EasyExcel、 Vue3實現導入導出功能

后端部分: 其中查詢數據的服務省略 1、引用 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.3.3</version></dependency> 2、controller package com.rs.cphs.sys.controller;i…