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

未開啟binlog時mysql全量備份的實現(xiàn)

 更新時間:2026年02月19日 09:38:01   作者:SenCube  
本文針對未開啟binlog的MySQL環(huán)境提供了多種備份方案,實現(xiàn)日/周/月備份分級管理,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

未開啟binlog的情況下,MySQL無法進行增量備份和時間點恢復(fù),只能進行全量備份。以下是針對無binlog環(huán)境的備份方案:

一、mysqldump全量備份(推薦)

1. 基礎(chǔ)全量備份命令

# 備份整個數(shù)據(jù)庫實例
mysqldump -u root -p \
  --all-databases \
  --single-transaction \
  --routines \
  --triggers \
  --events \
  --flush-logs \
  --master-data=2 \
  > full_backup_$(date +%Y%m%d).sql

參數(shù)說明:

  • --single-transaction: InnoDB一致性讀,不鎖表
  • --flush-logs: 刷新日志,雖然無binlog但不影響
  • --master-data=2: 記錄備份位置信息,雖然無binlog但保留格式

2. 按數(shù)據(jù)庫粒度備份腳本

#!/bin/bash
# backup_no_binlog.sh

BACKUP_DIR="/data/backup/mysql"
DATE=$(date +%Y%m%d_%H%M%S)
MYSQL_USER="root"
MYSQL_PASSWORD="yourpassword"
MYSQL_HOST="localhost"

# 創(chuàng)建備份目錄
mkdir -p ${BACKUP_DIR}/${DATE}

# 獲取所有數(shù)據(jù)庫列表(排除系統(tǒng)庫)
databases=$(mysql -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASSWORD} \
  -e "SHOW DATABASES;" | grep -Ev "Database|information_schema|performance_schema|sys")

# 逐個備份數(shù)據(jù)庫
for db in $databases; do
  echo "正在備份數(shù)據(jù)庫: $db"
  
  mysqldump -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASSWORD} \
    --single-transaction \
    --routines \
    --triggers \
    --events \
    --skip-lock-tables \
    ${db} | gzip > ${BACKUP_DIR}/${DATE}/${db}.sql.gz
  
  # 記錄備份大小
  size=$(du -h ${BACKUP_DIR}/${DATE}/${db}.sql.gz | cut -f1)
  echo "${db}: ${size}" >> ${BACKUP_DIR}/${DATE}/backup_info.txt
done

# 刪除30天前的備份
find ${BACKUP_DIR} -type d -mtime +30 -exec rm -rf {} \;

echo "備份完成: ${BACKUP_DIR}/${DATE}"

二、文件系統(tǒng)物理備份

1. 冷備方案(需要停機)

#!/bin/bash
# cold_backup.sh

# 1. 停止MySQL服務(wù)
sudo systemctl stop mysql

# 2. 復(fù)制數(shù)據(jù)文件
BACKUP_DIR="/backup/mysql/cold_backup_$(date +%Y%m%d)"
mkdir -p ${BACKUP_DIR}

# 復(fù)制整個數(shù)據(jù)目錄
sudo cp -rp /var/lib/mysql ${BACKUP_DIR}/

# 復(fù)制配置文件
sudo cp -rp /etc/mysql ${BACKUP_DIR}/

# 3. 啟動MySQL服務(wù)
sudo systemctl start mysql

# 4. 打包壓縮
tar -czf ${BACKUP_DIR}.tar.gz ${BACKUP_DIR}
sudo rm -rf ${BACKUP_DIR}

echo "冷備完成: ${BACKUP_DIR}.tar.gz"

2. 使用MySQL Enterprise Backup(商業(yè)版)

# 熱備,無需binlog
mysqlbackup --user=root --password=yourpassword \
  --backup-dir=/backup/full_backup \
  backup-and-apply-log

三、針對無binlog的備份策略

1. 多周期備份方案

#!/bin/bash
# multi_cycle_backup.sh

BACKUP_ROOT="/backup/mysql"
DATE=$(date +%Y%m%d)
WEEKDAY=$(date +%u)  # 1-7 周一到周日
DAY_OF_MONTH=$(date +%d)

# 日備份目錄
DAILY_DIR="${BACKUP_ROOT}/daily/${DATE}"
# 周備份目錄
WEEKLY_DIR="${BACKUP_ROOT}/weekly/week${WEEKDAY}"
# 月備份目錄
MONTHLY_DIR="${BACKUP_ROOT}/monthly/$(date +%Y%m)"

mkdir -p ${DAILY_DIR} ${WEEKLY_DIR} ${MONTHLY_DIR}

# 執(zhí)行備份函數(shù)
do_backup() {
  local target_dir=$1
  mysqldump -uroot -pyourpassword \
    --all-databases \
    --single-transaction \
    --routines \
    --triggers \
    --events | gzip > ${target_dir}/full_backup.sql.gz
  
  # 記錄備份元數(shù)據(jù)
  echo "backup_time: $(date '+%Y-%m-%d %H:%M:%S')" > ${target_dir}/metadata.txt
  echo "backup_type: ${2}" >> ${target_dir}/metadata.txt
  echo "binlog_status: disabled" >> ${target_dir}/metadata.txt
}

# 每天執(zhí)行日備份
do_backup ${DAILY_DIR} "daily"

# 每周日執(zhí)行周備份(周日的weekday=7)
if [ ${WEEKDAY} -eq 7 ]; then
  cp ${DAILY_DIR}/full_backup.sql.gz ${WEEKLY_DIR}/
  cp ${DAILY_DIR}/metadata.txt ${WEEKLY_DIR}/
fi

# 每月1號執(zhí)行月備份
if [ ${DAY_OF_MONTH} -eq 1 ]; then
  cp ${DAILY_DIR}/full_backup.sql.gz ${MONTHLY_DIR}/
  cp ${DAILY_DIR}/metadata.txt ${MONTHLY_DIR}/
fi

# 清理策略
# 保留7天日備份
find ${BACKUP_ROOT}/daily -type d -mtime +7 -exec rm -rf {} \;
# 保留4周周備份
find ${BACKUP_ROOT}/weekly -type d -mtime +28 -exec rm -rf {} \;
# 保留3個月備份
find ${BACKUP_ROOT}/monthly -type d -mtime +90 -exec rm -rf {} \;

四、避免數(shù)據(jù)丟失的預(yù)防措施

1. 備份前校驗表

# 備份前檢查表狀態(tài)
mysqlcheck -u root -p --all-databases --check-only

# 修復(fù)表(如果需要)
mysqlcheck -u root -p --all-databases --repair

2. 備份后完整性驗證

#!/bin/bash
# verify_backup.sh

BACKUP_FILE=$1

# 檢查文件完整性
gzip -t ${BACKUP_FILE}
if [ $? -eq 0 ]; then
    echo "備份文件完整性檢查: 通過"
else
    echo "備份文件完整性檢查: 失敗"
    exit 1
fi

# 測試性恢復(fù)(可選)
gunzip -c ${BACKUP_FILE} | head -n 50 | grep -i "CREATE DATABASE"
if [ $? -eq 0 ]; then
    echo "備份內(nèi)容有效性檢查: 通過"
else
    echo "備份內(nèi)容有效性檢查: 失敗"
    exit 1
fi

五、無binlog環(huán)境的最佳實踐

1. 備份頻率建議

  • 核心業(yè)務(wù):每天1-3次全備
  • 普通業(yè)務(wù):每天1次全備
  • 測試環(huán)境:每周1-2次全備

2. 數(shù)據(jù)安全建議

# 1. 開啟定時全備(crontab)
0 1,13 * * * /backup/scripts/daily_backup.sh     # 每天1點和13點各備份一次
0 3 * * 0 /backup/scripts/weekly_archive.sh      # 每周日3點歸檔

# 2. 異地備份
rsync -avz /backup/mysql/ user@remote-server:/backup/mysql/

# 3. 備份加密
mysqldump ... | openssl enc -aes-256-cbc -salt -pass pass:yourpassword > backup.sql.enc

# 4. 備份監(jiān)控
# 如果連續(xù)2天沒有新備份文件,發(fā)送告警
find /backup/mysql -name "*.sql.gz" -mtime -2 | grep . || echo "備份異常" | mail -s "備份告警" admin@example.com

3. 恢復(fù)演練

# 定期(每月)在測試環(huán)境執(zhí)行恢復(fù)測試
gunzip -c latest_backup.sql.gz | mysql -utest -ptest test_database

六、重要提醒

  1. 立即建議開啟binlog

    -- 修改my.cnf配置
    [mysqld]
    server-id = 1
    log_bin = /var/log/mysql/mysql-bin.log
    expire_logs_days = 7
    
    -- 重啟生效
    sudo systemctl restart mysql
    
  2. 無binlog環(huán)境的風(fēng)險

    • 無法時間點恢復(fù)(Point-in-Time Recovery)
    • 無法增量備份
    • 誤刪數(shù)據(jù)只能恢復(fù)到最近一次全備
  3. 必須的補償措施

    • 增加備份頻率(核心表每小時全備)
    • 保留多版本備份(7天日備 + 4周周備 + 12個月備)
    • 備份自動驗證機制

無binlog環(huán)境下,全量備份就是唯一的保命手段,建議在業(yè)務(wù)低峰期增加備份頻率,并確保備份文件的完整性和可用性。

到此這篇關(guān)于未開啟binlog時mysql全量備份的實現(xiàn)的文章就介紹到這了,更多相關(guān)mysql未開啟binlog全量備份內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mysql mycat 中間件安裝與使用

    mysql mycat 中間件安裝與使用

    MyCAT是MySQL中間件,前身是阿里大名鼎鼎的Cobar,Cobar在開源了一段時間后,不了了之。于是MyCAT扛起了這面大旗,在大數(shù)據(jù)時代,其重要性愈發(fā)彰顯。這篇文章主要是MyCAT的入門部署。
    2017-05-05
  • Docker Dockerfile構(gòu)建MySQL并初始化數(shù)據(jù)方式

    Docker Dockerfile構(gòu)建MySQL并初始化數(shù)據(jù)方式

    這篇文章主要介紹了Docker Dockerfile構(gòu)建MySQL并初始化數(shù)據(jù)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • Mysql怎么存儲json格式數(shù)據(jù)詳解

    Mysql怎么存儲json格式數(shù)據(jù)詳解

    在開發(fā)中遇到存取html值的情況,并且要根據(jù)id進行實時返回,在做的時候想到了mysql的json類型存儲,下面這篇文章主要給大家介紹了關(guān)于Mysql怎么存儲json格式數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • MYSQL比對版本號字符串的方法實例

    MYSQL比對版本號字符串的方法實例

    因為mysql的版本較多,所以最近也踩了一個因為版本號字符串的坑,下面這篇文章主要給大家介紹了關(guān)于MYSQL比對版本號字符串的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-05-05
  • 最新評論

    淮滨县| 玛纳斯县| 天镇县| 永吉县| 鄢陵县| 通江县| 隆尧县| 韶关市| 镇原县| 昭通市| 常德市| 邹平县| 疏附县| 武城县| 津南区| 乐亭县| 奎屯市| 仙游县| 河津市| 韶山市| 会泽县| 娄烦县| 武强县| 宁明县| 营山县| 武威市| 清河县| 敦煌市| 潮州市| 延津县| 江西省| 东明县| 乡宁县| 镇康县| 北安市| 松原市| 西宁市| 泽库县| 定陶县| 铜川市| 清流县|