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

MySQL數(shù)據(jù)庫(kù)實(shí)現(xiàn)本地和異地備份的全面指南

 更新時(shí)間:2025年09月02日 10:06:16   作者:XMYX-0  
本文將分享一份改進(jìn)版的數(shù)據(jù)庫(kù)備份腳本,并結(jié)合實(shí)際案例,闡述如何定期備份MySQL數(shù)據(jù)庫(kù),并實(shí)現(xiàn)本地和異地備份,有需要的小伙伴可以參考一下

在Linux環(huán)境下,mysqldump工具是進(jìn)行MySQL數(shù)據(jù)庫(kù)備份的常見(jiàn)方式。本文將分享一份改進(jìn)版的數(shù)據(jù)庫(kù)備份腳本,并結(jié)合實(shí)際案例,闡述如何定期備份MySQL數(shù)據(jù)庫(kù),并實(shí)現(xiàn)本地和異地備份。通過(guò)本文,您將掌握一個(gè)高效、安全的備份方案,確保數(shù)據(jù)的安全性和可恢復(fù)性。

一定要全部看完,再操作,因?yàn)閿?shù)據(jù)庫(kù)密碼我沒(méi)有再腳本中體現(xiàn),當(dāng)然也可以體現(xiàn),看具體需求

備份腳本概述

我們創(chuàng)建一個(gè)改進(jìn)版的備份腳本,命名為mysql_backup.sh。該腳本的目標(biāo)是:

  • 自動(dòng)備份MySQL數(shù)據(jù)庫(kù),并排除系統(tǒng)數(shù)據(jù)庫(kù)(如mysql、information_schema等)。
  • 將備份數(shù)據(jù)打包并進(jìn)行本地壓縮。
  • 同步備份到異地備份服務(wù)器(通過(guò)rsync)。
  • 自動(dòng)清理30天前的備份文件,節(jié)省存儲(chǔ)空間。
  • 記錄詳細(xì)的備份日志,便于排查問(wèn)題。

編寫備份腳本

腳本內(nèi)容

#!/bin/bash
set -eo pipefail
trap 'echo "錯(cuò)誤發(fā)生在行 $LINENO"; exit 1' ERR

# 配置區(qū)
USER="root"                           # MySQL用戶名
BACKUP_DIR="/data/backup"             # 備份存儲(chǔ)目錄
EXCLUDE_DBS="mysql|information_schema|performance_schema|sys"  # 排除的系統(tǒng)數(shù)據(jù)庫(kù)
RSYNC_TARGET="rsync_backup@192.168.1.2::mysqlbackup/192.168.1.3/"     # 異地備份目標(biāo)
LOGFILE="$BACKUP_DIR/data_backup.log" # 日志文件路徑
DATE=$(date +%Y%m%d_%H%M)             # 當(dāng)前日期時(shí)間

# 創(chuàng)建備份目錄
mkdir -p "$BACKUP_DIR" || exit 1
cd "$BACKUP_DIR" || exit 1

# 記錄開(kāi)始時(shí)間
echo "==== 備份開(kāi)始 $(date +"%Y-%m-%d %H:%M:%S") ====" >> "$LOGFILE"

# 獲取數(shù)據(jù)庫(kù)列表并備份
DATABASES=$(mysql -e "SHOW DATABASES;" | grep -Ev "$EXCLUDE_DBS" | tr '\n' ' ')
echo "備份數(shù)據(jù)庫(kù): $DATABASES" >> "$LOGFILE"
mysqldump --routines --single-transaction --master-data=2 --databases $DATABASES > "wzqmysql_bak${DATE}.sql"

# 壓縮備份
if [ -s "wzqmysql_bak${DATE}.sql" ]; then
  tar -czf "wzqmysql_bak${DATE}.tar.gz" "wzqmysql_bak${DATE}.sql"
  rm -f "wzqmysql_bak${DATE}.sql"
  echo "壓縮完成,文件大小: $(du -sh wzqmysql_bak${DATE}.tar.gz)" >> "$LOGFILE"
else
  echo "備份文件為空,終止流程!" >> "$LOGFILE"
  exit 1
fi

# 同步到異地
rsync -avz --password-file=/etc/rsync.password "wzqmysql_bak${DATE}.tar.gz" "$RSYNC_TARGET"

# 清理30天前備份
find "$BACKUP_DIR" -type f -mtime +30 -name "*.gz" -delete

echo "==== 備份完成 $(date +"%Y-%m-%d %H:%M:%S") ====" >> "$LOGFILE"

主要參數(shù)解釋

  • --single-transaction:對(duì)于InnoDB表,確保備份的一致性。
  • --master-data=2:將主服務(wù)器的二進(jìn)制日志位置寫入備份文件,適用于主從復(fù)制環(huán)境。
  • --routines:備份存儲(chǔ)過(guò)程和函數(shù)。
  • rsync:用于將備份文件同步到異地服務(wù)器。
  • find -mtime +30:清理30天前的備份文件。

設(shè)置腳本權(quán)限

在Linux系統(tǒng)中,為腳本添加執(zhí)行權(quán)限:

chmod +x /data/mysql_backup.sh

定期執(zhí)行備份

為了實(shí)現(xiàn)自動(dòng)備份,可以將該腳本添加到定時(shí)任務(wù)中(例如每天凌晨1點(diǎn)執(zhí)行)。

設(shè)置crontab任務(wù)

編輯crontab配置文件:

crontab -e

添加如下行,設(shè)定每天凌晨1點(diǎn)執(zhí)行備份腳本:

0 1 * * * /data/mysql_backup.sh

保存退出后,crontab會(huì)自動(dòng)更新。

安全性建議

避免明文密碼

將MySQL密碼存儲(chǔ)在~/.my.cnf配置文件中,并設(shè)置嚴(yán)格權(quán)限:

[client]
user = root
password = 123456

設(shè)置配置文件權(quán)限:

chmod 600 ~/.my.cnf

rsync密碼文件安全

確保/etc/rsync.password權(quán)限為600:

chmod 600 /etc/rsync.password

進(jìn)階功能和優(yōu)化

增量備份

mysqldump不支持增量備份,建議使用二進(jìn)制日志或Percona XtraBackup。以下是簡(jiǎn)要步驟:

查看二進(jìn)制日志位置:

head -n 30 wzqmysql_bak${DATE}.sql | grep "CHANGE MASTER TO"

使用mysqlbinlog導(dǎo)出增量日志:

mysqlbinlog --start-datetime="2025-02-21 00:00:00" /var/lib/mysql/binlog.000001 > incremental.sql

備份驗(yàn)證

定期驗(yàn)證備份文件是否可以成功恢復(fù):

# 解壓備份
tar -wzqf wzqmysql_bak20250221_0100.tar.gz
# 恢復(fù)數(shù)據(jù)庫(kù)
mysql -e "CREATE DATABASE test_restore;"
mysql test_restore < wzqmysql_bak20250221_0100.sql

日志輪轉(zhuǎn)

使用logrotate管理日志文件:

/data/backup/data_backup.log {
  daily
  rotate 30
  compress
  missingok
}

詳細(xì)解釋

  • daily: 這表示日志文件將每天進(jìn)行輪換。如果日志文件每天更新或者你希望每次備份后都生成一個(gè)新的日志文件,可以使用這個(gè)選項(xiàng)。
  • rotate 30: 這表示系統(tǒng)將保留最近30個(gè)輪換過(guò)的日志文件,其余的將被刪除。比如,你的日志文件每天生成一個(gè)新備份,當(dāng)系統(tǒng)積累到30個(gè)日志文件時(shí),最舊的日志文件將會(huì)被刪除,確保只保留最新的30個(gè)日志備份。
  • compress: 這個(gè)選項(xiàng)告訴logrotate在輪換日志時(shí),對(duì)舊的日志文件進(jìn)行壓縮(通常是.gz格式),從而節(jié)省磁盤空間。壓縮文件的名字一般會(huì)附加.gz擴(kuò)展名,例如data_backup.log.1.gz、data_backup.log.2.gz等。
  • missingok: 如果指定的日志文件不存在,不會(huì)拋出錯(cuò)誤,而是跳過(guò)處理。例如,如果/data/backup/data_backup.log文件在某一天沒(méi)有生成,logrotate會(huì)忽略這個(gè)情況,不會(huì)報(bào)錯(cuò)或中止執(zhí)行。

總結(jié)

通過(guò)本文的改進(jìn)版腳本,您可以實(shí)現(xiàn)MySQL數(shù)據(jù)庫(kù)的定期備份、本地壓縮、異地同步以及舊備份文件的自動(dòng)清理。結(jié)合安全性建議和進(jìn)階功能,您可以構(gòu)建一個(gè)高效、可靠的數(shù)據(jù)庫(kù)備份方案,確保數(shù)據(jù)的安全性和可恢復(fù)性。

附錄:腳本依賴

  • MySQL客戶端和mysqldump工具。
  • rsync用于異地備份。
  • cron用于定時(shí)任務(wù)調(diào)度。
  • mailutils(可選)用于郵件通知。

到此這篇關(guān)于MySQL數(shù)據(jù)庫(kù)實(shí)現(xiàn)本地和異地備份的全面指南的文章就介紹到這了,更多相關(guān)MySQL數(shù)據(jù)庫(kù)備份內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mysql 5.7 docker 主從復(fù)制架構(gòu)搭建教程

    mysql 5.7 docker 主從復(fù)制架構(gòu)搭建教程

    這篇文章主要為大家詳細(xì)介紹了mysql 5.7 docker 主從復(fù)制架構(gòu)搭建教程,感興趣的小伙伴們可以參考一下
    2016-07-07
  • mysql 5.7.13 winx64安裝配置教程

    mysql 5.7.13 winx64安裝配置教程

    這篇文章主要為大家分享了windows下mysql 5.7.13winx64安裝配置教程,總結(jié)在安裝mysql5.7時(shí)遇到的坑,感興趣的朋友可以參考一下
    2016-12-12
  • Linux系統(tǒng)下Mysql使用簡(jiǎn)單教程(一)

    Linux系統(tǒng)下Mysql使用簡(jiǎn)單教程(一)

    這篇文章主要介紹了Linux系統(tǒng)下Mysql使用簡(jiǎn)單教程(一)的相關(guān)資料,需要的朋友可以參考下
    2016-05-05
  • MySQL處理重復(fù)數(shù)據(jù)的各種技術(shù)和方法(預(yù)防、檢測(cè)與刪除)

    MySQL處理重復(fù)數(shù)據(jù)的各種技術(shù)和方法(預(yù)防、檢測(cè)與刪除)

    這篇文章主要介紹了MySQL中處理重復(fù)數(shù)據(jù)的技術(shù)和方法,包括重復(fù)數(shù)據(jù)的產(chǎn)生原因、影響、預(yù)防方案、刪除方案(臨時(shí)表法、直接刪除法、窗口函數(shù))以及高級(jí)應(yīng)用場(chǎng)景和性能優(yōu)化建議,需要的朋友可以參考下
    2025-11-11
  • MySQL窗口函數(shù) over(partition by)的用法

    MySQL窗口函數(shù) over(partition by)的用法

    本文主要介紹了MySQL窗口函數(shù) over(partition by)的用法, partition by相比較于group by,能夠在保留全部數(shù)據(jù)的基礎(chǔ)上,只對(duì)其中某些字段做分組排序,下面就來(lái)介紹一下具體用法,感興趣的可以了解一下
    2024-02-02
  • MySQL游標(biāo)和觸發(fā)器的操作流程

    MySQL游標(biāo)和觸發(fā)器的操作流程

    本文介紹了MySQL中的游標(biāo)和觸發(fā)器的使用方法,游標(biāo)可以對(duì)查詢結(jié)果集進(jìn)行逐行處理,而觸發(fā)器則可以在數(shù)據(jù)表發(fā)生更改時(shí)自動(dòng)執(zhí)行預(yù)定義的操作,感興趣的朋友跟隨小編一起看看吧
    2025-12-12
  • MySQL添加索引的5種方式

    MySQL添加索引的5種方式

    在MySQL中索引(Index)是數(shù)據(jù)庫(kù)優(yōu)化的核心機(jī)制,它像書(shū)的目錄,幫助快速定位數(shù)據(jù),而非全表掃描,本詳解聚焦5種常見(jiàn)添加索引方式,基于官方手冊(cè)與Percona基準(zhǔn),這些方式覆蓋80%場(chǎng)景,需要的朋友可以參考下
    2026-03-03
  • mysql中數(shù)據(jù)庫(kù)與數(shù)據(jù)表編碼格式的查看、創(chuàng)建及修改

    mysql中數(shù)據(jù)庫(kù)與數(shù)據(jù)表編碼格式的查看、創(chuàng)建及修改

    這篇文章給大家介紹了如何查看、創(chuàng)建以及修改數(shù)據(jù)庫(kù)與數(shù)據(jù)表的編碼格式,另外還給大家分享了添加和刪除外鍵的示例代碼,文中介紹的很詳細(xì),對(duì)大家的理解和學(xué)習(xí)具有一定的參考借鑒價(jià)值,有需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2016-11-11
  • MySql數(shù)據(jù)庫(kù)觸發(fā)器使用教程

    MySql數(shù)據(jù)庫(kù)觸發(fā)器使用教程

    MySQL從5.0.2版本開(kāi)始支持觸發(fā)器,MySQL的觸發(fā)器和存儲(chǔ)過(guò)程一樣,都是嵌入到MySQL服務(wù)器的一段程序,這篇文章主要給大家介紹了關(guān)于MySql數(shù)據(jù)庫(kù)觸發(fā)器使用的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • Mysql索引合并的實(shí)現(xiàn)示例

    Mysql索引合并的實(shí)現(xiàn)示例

    MySQL索引合并通過(guò)多索引掃描與結(jié)果集合并優(yōu)化查詢,本文主要介紹了Mysql索引合并的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-07-07

最新評(píng)論

通海县| 张北县| 太原市| 临朐县| 鹤岗市| 绥棱县| 聊城市| 连云港市| 通州市| 陆良县| 右玉县| 凯里市| 南雄市| 皮山县| 鄂托克旗| 澜沧| 铜山县| 台北县| 曲沃县| 乳山市| 泾源县| 伊吾县| 南投市| 志丹县| 麟游县| 静海县| 城固县| 苍梧县| 河源市| 福州市| 颍上县| 浠水县| 化州市| 巢湖市| 个旧市| 梧州市| 高邑县| 永春县| 什邡市| 陵川县| 北安市|