最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL自動(dòng)備份與覆蓋恢復(fù)實(shí)戰(zhàn)指南

 更新時(shí)間:2026年03月11日 09:12:32   作者:波哦波  
本文詳細(xì)描述了如何使用SQL備份文件恢復(fù)MySQL數(shù)據(jù)庫(kù)的過(guò)程,包括查詢當(dāng)前數(shù)據(jù)庫(kù)的字符集和排序規(guī)則、創(chuàng)建恢復(fù)前備份目錄、備份現(xiàn)有數(shù)據(jù)庫(kù)、刪除舊庫(kù)、重建新庫(kù)、使用備份文件覆蓋恢復(fù)、以及恢復(fù)后的檢查和測(cè)試,需要的朋友可以參考下

一、此前每日備份的腳本

#!/bin/bash

# === 配置部分 ===
BACKUP_BASE_DIR="/data/backup_mysql"
DATE=$(date +%F)
LOG_FILE="${BACKUP_BASE_DIR}/logs/backup-${DATE}.log"
LOCK_FILE="/tmp/mysql_backup.lock"

# 備份選項(xiàng)(1=啟用,0=禁用)
ENABLE_FULL_BACKUP=1
ENABLE_PER_DB_BACKUP=1

# === 日志重定向 ===
mkdir -p "${BACKUP_BASE_DIR}/logs"
exec >> "$LOG_FILE" 2>&1

echo "===== MySQL Backup Started: $(date) ====="

# === 加鎖,避免重復(fù)執(zhí)行 ===
exec 9>"$LOCK_FILE"
if ! flock -n 9; then
  echo "?? 另一個(gè)備份任務(wù)正在運(yùn)行,退出..."
  exit 1
fi

# === 全量備份 ===
if [ "$ENABLE_FULL_BACKUP" -eq 1 ]; then
  echo "?? 開始全庫(kù)備份..."
  FULL_BACKUP_FILE="${BACKUP_BASE_DIR}/all/all-databases-${DATE}.sql"
  FULL_GZ_FILE="${FULL_BACKUP_FILE}.gz"
  mkdir -p "${BACKUP_BASE_DIR}/all"

  mysqldump --all-databases --single-transaction --quick --lock-tables=false > "$FULL_BACKUP_FILE"

  if [ $? -eq 0 ]; then
    echo "? 全庫(kù)備份成功: $FULL_BACKUP_FILE"
    gzip "$FULL_BACKUP_FILE"
    if [ $? -eq 0 ]; then
      echo "? 全庫(kù)壓縮成功: $FULL_GZ_FILE"
    else
      echo "? 全庫(kù)壓縮失敗: $FULL_BACKUP_FILE" >&2
    fi
  else
    echo "? 全庫(kù)備份失敗" >&2
    rm -f "$FULL_BACKUP_FILE"
  fi
fi

# === 每庫(kù)備份 ===
if [ "$ENABLE_PER_DB_BACKUP" -eq 1 ]; then
  echo "?? 開始庫(kù)級(jí)別備份..."
  databases=$(mysql -e "SHOW DATABASES;" | grep -Ev "^(Database|information_schema|performance_schema|mysql|sys)$")

  for db in $databases; do
    echo "?? 正在備份: $db"
    DB_BACKUP_DIR="${BACKUP_BASE_DIR}/${db}"
    mkdir -p "$DB_BACKUP_DIR"
    DB_BACKUP_FILE="${DB_BACKUP_DIR}/${db}-${DATE}.sql"
    DB_GZ_FILE="${DB_BACKUP_FILE}.gz"

    mysqldump --single-transaction --quick --lock-tables=false "$db" > "$DB_BACKUP_FILE"

    if [ $? -eq 0 ]; then
      echo "? 備份成功: $DB_BACKUP_FILE"
      gzip "$DB_BACKUP_FILE"
      if [ $? -eq 0 ]; then
        echo "? 壓縮成功: $DB_GZ_FILE"
      else
        echo "? 壓縮失敗: $DB_BACKUP_FILE" >&2
      fi
    else
      echo "? 備份失敗: $db" >&2
      rm -f "$DB_BACKUP_FILE"
    fi
  done
fi

# === 清理過(guò)期文件(.sql / .sql.gz) ===
echo "?? 清理 7 天前的備份文件..."
find "$BACKUP_BASE_DIR" -type f \( -name "*.sql" -o -name "*.sql.gz" \) -mtime +7 -exec rm -f {} \;

echo "===== MySQL Backup Completed: $(date) ====="

二、環(huán)境信息

  • 服務(wù)器主機(jī)名:
  • 服務(wù)器 IP:
  • 數(shù)據(jù)庫(kù)類型:MySQL
  • MySQL 版本:8.0.42 Community Server
  • 目標(biāo)數(shù)據(jù)庫(kù):imip_ecb
  • 數(shù)據(jù)庫(kù)字符集:utf8mb4
  • 排序規(guī)則:utf8mb4_general_ci
  • 備份文件路徑(恢復(fù)來(lái)源):
  • /data/backup_mysql/imip_ecb/imip_ecb-2025-12-11.sql.gz
  • 恢復(fù)前保護(hù)性備份路徑:
    /data/backup_mysql/manual_before_restore/imip_ecb-before-restore-2025-12-11.sql
  • 恢復(fù)類型:覆蓋源庫(kù)恢復(fù)(在同一實(shí)例上,用備份覆蓋原有 imip_ecb 庫(kù))

三、實(shí)際恢復(fù)操作步驟

1. 查詢imip_ecb數(shù)據(jù)庫(kù)字符集與排序規(guī)則

mysql -u root -p -e "
SELECT SCHEMA_NAME, DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME
FROM information_schema.SCHEMATA
WHERE SCHEMA_NAME='imip_ecb';
"

查詢結(jié)果:

SCHEMA_NAME | DEFAULT_CHARACTER_SET_NAME | DEFAULT_COLLATION_NAME
----------- | -------------------------- | ------------------------
imip_ecb    | utf8mb4                    | utf8mb4_general_ci

目的:記錄當(dāng)前庫(kù)的字符集/排序規(guī)則,確保重建數(shù)據(jù)庫(kù)時(shí)保持一致。

2. 創(chuàng)建“恢復(fù)前快照”備份目錄

mkdir -p /data/backup_mysql/manual_before_restore

目的:?jiǎn)为?dú)存放本次覆蓋前的手工備份,便于必要時(shí)回滾。

3. 對(duì)覆蓋前的imip_ecb做一次完整邏輯備份

mysqldump --single-transaction --quick --lock-tables=false \
  imip_ecb > /data/backup_mysql/manual_before_restore/imip_ecb-before-restore-`date +%F`.sql

確認(rèn)備份文件存在:

cd /data/backup_mysql/manual_before_restore
ll
# imip_ecb-before-restore-2025-12-11.sql

目的:為本次覆蓋恢復(fù)保留一份“恢復(fù)前狀態(tài)”的 SQL 備份。

4. 刪除原有imip_ecb數(shù)據(jù)庫(kù)(為覆蓋恢復(fù)做準(zhǔn)備)

mysql -u root -p -e "DROP DATABASE IF EXISTS imip_ecb;"

目的:清理舊庫(kù),避免恢復(fù)過(guò)程中與原有對(duì)象沖突,確保是“重建 + 導(dǎo)入”的干凈覆蓋。

5. 按原字符集/排序規(guī)則重建imip_ecb數(shù)據(jù)庫(kù)

mysql -u root -p -e "
CREATE DATABASE imip_ecb
  DEFAULT CHARACTER SET utf8mb4
  COLLATE utf8mb4_general_ci;
"

目的:與恢復(fù)前字符集/排序規(guī)則保持一致,避免編碼相關(guān)問(wèn)題。

6. 使用 2025-12-11 備份文件對(duì)imip_ecb進(jìn)行覆蓋恢復(fù)

zcat /data/backup_mysql/imip_ecb/imip_ecb-2025-12-11.sql.gz \
  | mysql -u root -p imip_ecb

目的:通過(guò) zcat 解壓 .sql.gz,并通過(guò)管道將邏輯備份數(shù)據(jù)導(dǎo)入到新建的 imip_ecb 庫(kù),實(shí)現(xiàn)在源實(shí)例上的覆蓋恢復(fù)。

7. 恢復(fù)后檢查:確認(rèn)數(shù)據(jù)庫(kù)存在

mysql -u root -p -e "SHOW DATABASES LIKE 'imip_ecb';"

8. 恢復(fù)后檢查:確認(rèn)業(yè)務(wù)表已成功恢復(fù)

mysql -u root -p -D imip_ecb -e "SHOW TABLES;"

輸出包含業(yè)務(wù)表,例如:

EMS_EQUIPMENT_INFO
EMS_INSPECT_TASK
EMS_MAINTENANCE_WORK_ORDER
ERP_STOCK
ERP_STOCK_IN
ERP_STOCK_OUT
ERP_SUPPLIER
ERP_WAREHOUSE
infra_task_attachment
...

目的:確認(rèn) EMS/ERP 相關(guān)業(yè)務(wù)表均已從備份中成功恢復(fù),庫(kù)結(jié)構(gòu)完整。

以上就是MySQL自動(dòng)備份與覆蓋恢復(fù)實(shí)戰(zhàn)指南的詳細(xì)內(nèi)容,更多關(guān)于MySQL自動(dòng)備份與覆蓋恢復(fù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Mysql優(yōu)化調(diào)優(yōu)中兩個(gè)重要參數(shù)table_cache和key_buffer

    Mysql優(yōu)化調(diào)優(yōu)中兩個(gè)重要參數(shù)table_cache和key_buffer

    這篇文章主要介紹了Mysql優(yōu)化調(diào)優(yōu)中兩個(gè)重要參數(shù)table_cache和key_buffer,需要的朋友可以參考下
    2014-12-12
  • MySQL自動(dòng)填充create_time和update_time的兩種方式

    MySQL自動(dòng)填充create_time和update_time的兩種方式

    當(dāng)我們創(chuàng)建業(yè)務(wù)表的時(shí)候 通常都需要設(shè)置create_time 和 update_time,下面這篇文章主要給大家介紹了關(guān)于MySQL自動(dòng)填充createTime和updateTime的兩種方式,需要的朋友可以參考下
    2022-05-05
  • MySQL8新特性:自增主鍵的持久化詳解

    MySQL8新特性:自增主鍵的持久化詳解

    MySQL8.0 GA版本發(fā)布了,展現(xiàn)了眾多新特性,下面這篇文章主要給大家介紹了關(guān)于MySQL8新特性:自增主鍵的持久化的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-07-07
  • MySQL max_allowed_packet的坑

    MySQL max_allowed_packet的坑

    max_allowed_packet是 MySQL 中的一個(gè)設(shè)定參數(shù),用于設(shè)定所接受的包的大小,根據(jù)情形不同,其缺省值可能是 1M 或者 4M,本文主要介紹了MySQL max_allowed_packet的坑,感興趣的可以了解一下
    2024-01-01
  • MySQL 導(dǎo)出一條數(shù)據(jù)的插入語(yǔ)句(示例詳解)

    MySQL 導(dǎo)出一條數(shù)據(jù)的插入語(yǔ)句(示例詳解)

    在MySQL中,如果我們想要導(dǎo)出一條數(shù)據(jù)的插入語(yǔ)句,我們可以使用SELECT ... INTO OUTFILE語(yǔ)句,這篇文章主要介紹了MySQL 導(dǎo)出一條數(shù)據(jù)的插入語(yǔ)句,需要的朋友可以參考下
    2024-06-06
  • Mysql存儲(chǔ)json格式的實(shí)現(xiàn)

    Mysql存儲(chǔ)json格式的實(shí)現(xiàn)

    本文主要介紹了Mysql存儲(chǔ)json格式的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • MySQL自動(dòng)停機(jī)的問(wèn)題處理實(shí)戰(zhàn)記錄

    MySQL自動(dòng)停機(jī)的問(wèn)題處理實(shí)戰(zhàn)記錄

    這篇文章主要給大家介紹了關(guān)于MySQL自動(dòng)停機(jī)的問(wèn)題處理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用MySQL具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • GROUP_CONCAT的用法

    GROUP_CONCAT的用法

    GROUP_CONCAT的用法...
    2006-12-12
  • MySQL 服務(wù)和數(shù)據(jù)庫(kù)管理

    MySQL 服務(wù)和數(shù)據(jù)庫(kù)管理

    今天MySQL總結(jié)一些方法和一些基礎(chǔ)的內(nèi)容,下面文章將圍繞MySQL 服務(wù)與數(shù)據(jù)庫(kù)管理得相關(guān)資料展開內(nèi)容,需要的朋友可以參考一下,希望對(duì)你有所幫助
    2021-11-11
  • Win10系統(tǒng)下MySQL8.0.16 壓縮版下載與安裝教程圖解

    Win10系統(tǒng)下MySQL8.0.16 壓縮版下載與安裝教程圖解

    這篇文章主要介紹了Win10系統(tǒng)下MySQL8.0.16 壓縮版下載與安裝教程圖解,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考解決價(jià)值,需要的朋友可以參考下
    2019-06-06

最新評(píng)論

广西| 闽清县| 都兰县| 呼伦贝尔市| 南江县| 临澧县| 邯郸县| 正镶白旗| 云安县| 白水县| 高邑县| 抚远县| 漯河市| 沙洋县| 佛山市| 遂溪县| 铁岭县| 敦化市| 花垣县| 思南县| 邻水| 疏勒县| 吉木萨尔县| 水富县| 边坝县| 洱源县| 叙永县| 当雄县| 调兵山市| 阿鲁科尔沁旗| 水富县| 绥棱县| 连州市| 巍山| 安塞县| 通河县| 通道| 珲春市| 云浮市| 卓尼县| 泌阳县|