自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

使用Docker在Linux上定時備份MySQL數(shù)據(jù)庫

數(shù)據(jù)庫 MySQL Linux
在Linux上運行MySQL容器后,為了保證數(shù)據(jù)的安全性,我們可以設(shè)置自動備份任務(wù),采取每周全量備份、每天增量備份的方式。以下是一篇詳細(xì)的實現(xiàn)指南,涵蓋了備份方式的選擇、腳本編寫及定時任務(wù)配置。

在Linux上運行MySQL容器后,為了保證數(shù)據(jù)的安全性,我們可以設(shè)置自動備份任務(wù),采取每周全量備份、每天增量備份的方式。以下是一篇詳細(xì)的實現(xiàn)指南,涵蓋了備份方式的選擇、腳本編寫及定時任務(wù)配置。

1.備份方式概述

  • 每周全量備份:備份整個數(shù)據(jù)庫內(nèi)容,通常選擇周日。
  • 每天增量備份:僅備份每天新增或修改的數(shù)據(jù),相較全量備份節(jié)省存儲空間和時間。

2.運行環(huán)境要求

確保系統(tǒng)具備以下條件:

  • Docker:已安裝,并確保MySQL在Docker容器中運行。
  • crontab:用于定時任務(wù)調(diào)度。

3.編寫備份腳本

創(chuàng)建一個備份腳本,包含全量和增量備份邏輯。

  • 創(chuàng)建目錄:用于存儲備份文件。建議如下結(jié)構(gòu):

/backup/mysql/
├── full/           # 全量備份文件夾
└── incremental/    # 增量備份文件夾

可以用以下命令創(chuàng)建這些文件夾:

mkdir -p /backup/mysql/full
mkdir -p /backup/mysql/incremental
  • 編寫備份腳本(mysql_backup.sh)

新建文件 /backup/mysql/mysql_backup.sh,內(nèi)容如下:


#!/bin/bash

# 配置部分
CONTAINER_NAME="your_mysql_container"              # MySQL容器名稱
BACKUP_DIR="/backup/mysql"                         # 備份存儲根目錄
FULL_BACKUP_DIR="$BACKUP_DIR/full"                 # 全量備份文件夾
INCREMENTAL_BACKUP_DIR="$BACKUP_DIR/incremental"   # 增量備份文件夾
DATE=$(date +"%Y%m%d")

# 保留的備份數(shù)量
MAX_BACKUPS=10

# 每周日進(jìn)行全量備份
if [[ $(date +%u) -eq 7 ]]; then
    echo "開始全量備份..."
    BACKUP_FILE="$FULL_BACKUP_DIR/mysql_full_$DATE.sql"
    docker exec $CONTAINER_NAME sh -c "mysqldump --all-databases -uroot -pYourPassword" > "$BACKUP_FILE"
    gzip "$BACKUP_FILE"  # 壓縮備份文件
    echo "全量備份完成并壓縮,存儲路徑:$BACKUP_FILE.gz"
else
    # 每天增量備份
    echo "開始增量備份..."
    BACKUP_FILE="$INCREMENTAL_BACKUP_DIR/mysql_inc_$DATE.sql"
    docker exec $CONTAINER_NAME sh -c "mysqlbinlog --read-from-remote-server --host=localhost --user=root --password=YourPassword --raw mysql-bin.*" > "$BACKUP_FILE"
    gzip "$BACKUP_FILE"  # 壓縮備份文件
    echo "增量備份完成并壓縮,存儲路徑:$BACKUP_FILE.gz"
fi

# 清理多余備份,保留最近的10個備份
cleanup_backups() {
    local BACKUP_FOLDER=$1
    local BACKUP_FILES_COUNT=$(ls -1 "$BACKUP_FOLDER" | wc -l)

    if (( BACKUP_FILES_COUNT > MAX_BACKUPS )); then
        local FILES_TO_DELETE=$((BACKUP_FILES_COUNT - MAX_BACKUPS))
        echo "超過 $MAX_BACKUPS 份備份,開始刪除舊備份..."
        ls -1tr "$BACKUP_FOLDER" | head -n $FILES_TO_DELETE | while read -r FILE; do
            rm -f "$BACKUP_FOLDER/$FILE"
            echo "已刪除過期備份:$BACKUP_FOLDER/$FILE"
        done
    fi
}

# 執(zhí)行清理操作
cleanup_backups "$FULL_BACKUP_DIR"
cleanup_backups "$INCREMENTAL_BACKUP_DIR"

注意將 your_mysql_container 替換為實際MySQL容器名稱,YourPassword 替換為實際的MySQL root用戶密碼。

  • 賦予腳本執(zhí)行權(quán)限

chmod +x /backup/mysql/mysql_backup.sh

4. 設(shè)置定時任務(wù)

使用 crontab 來實現(xiàn)自動定時備份。通過 crontab 設(shè)置如下計劃:

? 每天的凌晨2點執(zhí)行備份腳本。

編輯 crontab

打開 crontab 編輯器:

crontab -e

添加以下行配置定時任務(wù):

0 2 * * * /backup/mysql/mysql_backup.sh >> /backup/mysql/backup.log 2>&1

5. 驗證備份是否成功

可以手動執(zhí)行腳本:

/backup/mysql/mysql_backup.sh

在 /backup/mysql/full 和 /backup/mysql/incremental 中檢查是否生成了對應(yīng)的 .sql 文件。每日備份日志存儲在 /backup/mysql/backup.log,可以通過 tail -f /backup/mysql/backup.log查看任務(wù)執(zhí)行情況。

6.恢復(fù)數(shù)據(jù)

  • 恢復(fù)全量備份:直接將最新的全量備份文件導(dǎo)入MySQL。
  • 應(yīng)用增量備份:先導(dǎo)入全量備份,然后逐個執(zhí)行增量備份文件。

通過以上步驟,我們便可以在Docker上實現(xiàn)MySQL的每日增量備份和每周全量備份,確保數(shù)據(jù)的持續(xù)性和安全性。

責(zé)任編輯:華軒 來源: 微技術(shù)之家
相關(guān)推薦

2021-09-22 09:55:20

LinuxMySQL數(shù)據(jù)庫

2018-06-07 09:22:16

LinuxMysql備份

2019-07-25 18:57:36

Linux數(shù)據(jù)庫自動備份

2020-10-23 18:45:31

NavicatMySQL數(shù)據(jù)庫

2010-05-20 16:57:10

MySQL數(shù)據(jù)庫

2011-08-22 16:03:30

linuxVPS備份數(shù)據(jù)庫

2010-06-04 17:49:46

連接MySQL數(shù)據(jù)庫

2023-09-21 09:31:24

MySQL數(shù)據(jù)庫

2011-09-01 15:26:51

QtMysql數(shù)據(jù)庫

2013-05-24 13:24:46

Mysql數(shù)據(jù)庫自動備份

2024-11-18 15:05:34

MySQL數(shù)據(jù)庫

2018-11-02 08:10:58

Linuxsystemd定時器

2018-02-26 08:14:20

LinuxDocker容器

2017-06-19 08:13:00

Sequel ProMySQL數(shù)據(jù)庫

2019-03-01 13:40:01

MySQL數(shù)據(jù)庫備份案例

2010-08-17 14:38:46

備份DB2數(shù)據(jù)庫

2011-03-30 13:57:41

MySQL數(shù)據(jù)庫自動備份

2011-03-31 14:34:46

cactimysql備份

2010-05-20 16:13:55

2010-06-04 18:12:17

MySQL 數(shù)據(jù)庫啟動
點贊
收藏

51CTO技術(shù)棧公眾號