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

MySQL數(shù)據(jù)庫(kù)備份與還原的方案及具體命令行操作

 更新時(shí)間:2026年07月02日 09:20:05   作者:?jiǎn)柕里w魚(yú)  
眾所周知備份與還原是數(shù)據(jù)庫(kù)管理中不可或缺的部分,這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)備份與還原的方案及具體命令行操作的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下

MySQL 數(shù)據(jù)庫(kù)備份與還原詳細(xì)解讀

MySQL 數(shù)據(jù)庫(kù)備份與還原是保障數(shù)據(jù)安全的核心操作,需根據(jù)數(shù)據(jù)庫(kù)規(guī)模、性能要求、恢復(fù)時(shí)效選擇合適方案。本文從備份類(lèi)型、推薦方案、具體命令行、備份策略注意事項(xiàng)全面解析,覆蓋邏輯備份、物理備份及點(diǎn)-in-time恢復(fù)(PITR)。

一、備份類(lèi)型與核心工具

MySQL 備份分為 邏輯備份物理備份,核心區(qū)別如下:

類(lèi)型原理優(yōu)點(diǎn)缺點(diǎn)適用場(chǎng)景
邏輯備份將數(shù)據(jù)導(dǎo)出為 SQL 語(yǔ)句或文本格式跨版本兼容、可讀性強(qiáng)、支持部分備份備份/恢復(fù)速度慢(尤其大數(shù)據(jù)量)、鎖表風(fēng)險(xiǎn)小型數(shù)據(jù)庫(kù)(<100GB)、跨環(huán)境遷移
物理備份直接復(fù)制數(shù)據(jù)文件(如 InnoDB 表空間)備份/恢復(fù)速度快、支持增量備份、低鎖表依賴(lài)存儲(chǔ)引擎、跨版本兼容性差、不可讀大型數(shù)據(jù)庫(kù)(>100GB)、高性能恢復(fù)需求

核心備份工具

  • 邏輯備份mysqldump(官方)、mysqlpump(官方多線程)、mydumper(第三方多線程)。
  • 物理備份Percona XtraBackup(開(kāi)源,支持熱備)、MySQL Enterprise Backup(官方收費(fèi))。
  • 二進(jìn)制日志(Binlog):記錄所有數(shù)據(jù)變更,用于點(diǎn)-in-time恢復(fù)(PITR)。

二、推薦備份方案

根據(jù)數(shù)據(jù)庫(kù)規(guī)模和需求選擇方案:

方案 1:小型數(shù)據(jù)庫(kù)(<100GB)—— 邏輯備份(mysqldump)

優(yōu)勢(shì):簡(jiǎn)單易用、跨版本兼容、支持單庫(kù)/單表備份,適合開(kāi)發(fā)環(huán)境或小型生產(chǎn)庫(kù)。

工具mysqldump(MySQL 自帶,無(wú)需額外安裝)。

方案 2:中型數(shù)據(jù)庫(kù)(100GB~1TB)—— 多線程邏輯備份(mydumper)

優(yōu)勢(shì):多線程并行備份,速度遠(yuǎn)超 mysqldump,支持分塊導(dǎo)出、壓縮,適合中等規(guī)模數(shù)據(jù)庫(kù)。

工具mydumper(需手動(dòng)安裝,基于 glib 開(kāi)發(fā))。

方案 3:大型數(shù)據(jù)庫(kù)(>1TB)—— 物理熱備(Percona XtraBackup)

優(yōu)勢(shì):支持 InnoDB 熱備(不鎖表)、增量備份、壓縮,恢復(fù)速度快,適合生產(chǎn)環(huán)境核心庫(kù)。

工具Percona XtraBackup(開(kāi)源,Percona 公司開(kāi)發(fā))。

方案 4:關(guān)鍵業(yè)務(wù)(高可用需求)—— 全量+增量+Binlog 組合

優(yōu)勢(shì):通過(guò)“全量備份+增量備份+Binlog”實(shí)現(xiàn)任意時(shí)間點(diǎn)恢復(fù)(PITR),滿(mǎn)足 RTO(恢復(fù)時(shí)間目標(biāo))和 RPO(恢復(fù)點(diǎn)目標(biāo))要求。

三、具體命令行操作

場(chǎng)景 1:邏輯備份(mysqldump)

mysqldump 是 MySQL 官方邏輯備份工具,語(yǔ)法:

mysqldump [選項(xiàng)] 數(shù)據(jù)庫(kù)名 [表名...] > 備份文件.sql

1. 備份單個(gè)數(shù)據(jù)庫(kù)(含結(jié)構(gòu)和數(shù)據(jù))

# 備份 db_name 數(shù)據(jù)庫(kù)到 backup_db.sql
mysqldump -u 用戶(hù)名 -p 密碼 db_name > backup_db.sql

# 示例(輸入密碼時(shí)隱藏明文)
mysqldump -u root -p db_test > /backup/db_test_$(date +%Y%m%d).sql
# 執(zhí)行后輸入密碼:Enter password: ******

2. 備份多個(gè)數(shù)據(jù)庫(kù)

# 備份 db1、db2 到 multi_db.sql
mysqldump -u root -p --databases db1 db2 > multi_db.sql

3. 備份所有數(shù)據(jù)庫(kù)(含系統(tǒng)庫(kù))

# 備份所有庫(kù)(包括 mysql、information_schema 等)
mysqldump -u root -p --all-databases > all_databases.sql

4. 備份單表

# 備份 db_name 庫(kù)的 table_name 表
mysqldump -u root -p db_name table_name > table_name.sql

5. 帶條件的備份(如按時(shí)間過(guò)濾數(shù)據(jù))

# 備份 orders 表中 2023 年的數(shù)據(jù)(需表有 create_time 字段)
mysqldump -u root -p db_name orders --where="create_time >= '2023-01-01'" > orders_2023.sql

6. 壓縮備份(節(jié)省空間)

結(jié)合 gzip 壓縮備份文件(推薦):

mysqldump -u root -p db_name | gzip > db_name.sql.gz

7. 關(guān)鍵選項(xiàng)說(shuō)明

選項(xiàng)作用
--single-transaction對(duì) InnoDB 表使用事務(wù)快照備份(不鎖表,適合生產(chǎn)環(huán)境)
--routines備份存儲(chǔ)過(guò)程和函數(shù)
--triggers備份觸發(fā)器
--events備份事件調(diào)度器
--hex-blob二進(jìn)制數(shù)據(jù)(如 BLOB)以十六進(jìn)制格式導(dǎo)出(避免亂碼)
--skip-lock-tables不鎖表(MyISAM 表可能不一致,慎用)

場(chǎng)景 2:邏輯備份(mydumper,多線程)

mydumper 是第三方多線程邏輯備份工具,速度比 mysqldump 快 5~10 倍,支持分塊導(dǎo)出和壓縮。

1. 安裝 mydumper

  • Ubuntu/Debian
    sudo apt install mydumper
    
  • CentOS/RHEL
    sudo yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
    sudo percona-release enable-only tools release
    sudo yum install mydumper
    

2. 備份單個(gè)數(shù)據(jù)庫(kù)

# 多線程備份 db_name(-t 線程數(shù),-c 壓縮,-o 輸出目錄)
mydumper -u root -p 密碼 -h localhost -P 3306 \
  -t 4 -c -o /backup/mydumper/db_name \
  -B db_name  # -B 指定數(shù)據(jù)庫(kù)名

3. 備份所有數(shù)據(jù)庫(kù)

mydumper -u root -p 密碼 -t 4 -c -o /backup/mydumper/all_databases -a  # -a 備份所有庫(kù)

場(chǎng)景 3:物理備份(Percona XtraBackup)

Percona XtraBackup 支持 InnoDB 熱備(不鎖表)、增量備份,適合大型數(shù)據(jù)庫(kù)。

1. 安裝 Percona XtraBackup

  • Ubuntu/Debian
    wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb
    sudo dpkg -i percona-release_latest.*.deb
    sudo apt update
    sudo apt install percona-xtrabackup-24  # MySQL 5.7/8.0 對(duì)應(yīng)版本
    

2. 全量備份

# 備份所有 InnoDB 表到 /backup/xtrabackup/full
xtrabackup --backup \
  --user=root --password=密碼 \
  --target-dir=/backup/xtrabackup/full/$(date +%Y%m%d)

3. 增量備份(基于全量備份)

# 基于全量備份做增量備份(需指定上次備份目錄)
xtrabackup --backup \
  --user=root --password=密碼 \
  --target-dir=/backup/xtrabackup/incr/$(date +%Y%m%d) \
  --incremental-basedir=/backup/xtrabackup/full/20231001

4. 準(zhǔn)備備份(恢復(fù)前必須步驟)

備份文件需通過(guò) --prepare 命令整理后才能恢復(fù):

# 全量備份準(zhǔn)備(--apply-log)
xtrabackup --prepare --target-dir=/backup/xtrabackup/full/20231001

# 增量備份準(zhǔn)備(合并到全量備份)
xtrabackup --prepare \
  --target-dir=/backup/xtrabackup/full/20231001 \
  --incremental-dir=/backup/xtrabackup/incr/20231002

場(chǎng)景 4:還原數(shù)據(jù)庫(kù)

1. 邏輯備份還原(mysqldump 生成的 SQL 文件)

使用 mysql 命令導(dǎo)入 SQL 文件:

# 還原單個(gè)數(shù)據(jù)庫(kù)(需先創(chuàng)建空庫(kù))
mysql -u root -p -e "CREATE DATABASE IF NOT EXISTS db_name;"
mysql -u root -p db_name < backup_db.sql

# 還原所有數(shù)據(jù)庫(kù)(直接導(dǎo)入 all_databases.sql)
mysql -u root -p < all_databases.sql

2. mydumper 備份還原

使用 myloadermydumper 配套工具)還原:

myloader -u root -p 密碼 -h localhost -P 3306 \
  -t 4 -d /backup/mydumper/db_name  # -d 指定備份目錄

3. Percona XtraBackup 物理還原

  1. 停止 MySQL 服務(wù):
    sudo systemctl stop mysql
    
  2. 清空數(shù)據(jù)目錄(默認(rèn) /var/lib/mysql):
    sudo rm -rf /var/lib/mysql/*
    
  3. 復(fù)制備份文件到數(shù)據(jù)目錄:
    sudo cp -r /backup/xtrabackup/full/20231001/* /var/lib/mysql/
    
  4. 修改權(quán)限(MySQL 運(yùn)行用戶(hù),如 mysql:mysql):
    sudo chown -R mysql:mysql /var/lib/mysql
    
  5. 啟動(dòng) MySQL:
    sudo systemctl start mysql
    

四、備份策略與最佳實(shí)踐

1. 備份頻率

  • 全量備份:每日/每周(根據(jù)數(shù)據(jù)變更頻率,核心庫(kù)每日)。
  • 增量備份:每小時(shí)(基于全量備份,減少備份窗口)。
  • Binlog 備份:實(shí)時(shí)同步 Binlog 文件到遠(yuǎn)程存儲(chǔ)(如 S3、NAS)。

2. 備份文件管理

  • 命名規(guī)范:包含日期和類(lèi)型(如 db_test_20231001_full.sql.gz)。
  • 存儲(chǔ)位置:本地+異地(如本地 SSD + 遠(yuǎn)程對(duì)象存儲(chǔ)),避免單點(diǎn)故障。
  • 保留周期:全量備份保留 7~30 天,增量備份保留 3~7 天,Binlog 保留 7 天。

3. 驗(yàn)證備份有效性

  • 定期恢復(fù)測(cè)試:每月隨機(jī)抽取備份文件恢復(fù)到測(cè)試環(huán)境,驗(yàn)證數(shù)據(jù)完整性。
  • 檢查備份文件大小:異常小的文件可能備份失敗(如權(quán)限問(wèn)題)。

4. 加密與壓縮

  • 壓縮:用 gzipmydumper 內(nèi)置壓縮(節(jié)省存儲(chǔ)空間)。
  • 加密:用 openssl 加密備份文件(如 mysqldump ... | openssl enc -aes-256-cbc -salt -pass pass:密鑰 > backup.sql.enc)。

五、注意事項(xiàng)

  1. 鎖表風(fēng)險(xiǎn)

    • mysqldump 默認(rèn)對(duì) MyISAM 表鎖表,InnoDB 表建議加 --single-transaction 選項(xiàng)(事務(wù)快照備份,不鎖表)。
    • 大表備份時(shí),避免在業(yè)務(wù)高峰期執(zhí)行。
  2. 字符集問(wèn)題
    備份/還原時(shí)指定字符集(如 --default-character-set=utf8mb4),避免亂碼:

    mysqldump -u root -p --default-character-set=utf8mb4 db_name > backup.sql
    mysql -u root -p --default-character-set=utf8mb4 db_name < backup.sql
    
  3. 權(quán)限問(wèn)題
    備份用戶(hù)需有 SELECTSHOW VIEW、TRIGGER、LOCK TABLES(非事務(wù)表)權(quán)限。

  4. Binlog 開(kāi)啟
    點(diǎn)-in-time恢復(fù)需開(kāi)啟 Binlog,在 my.cnf 中配置:

    [mysqld]
    log_bin = /var/log/mysql/mysql-bin.log
    binlog_format = ROW  # 推薦 ROW 格式(記錄行變更)
    expire_logs_days = 7  # Binlog 保留 7 天
    

六、總結(jié)

  • 小型庫(kù):用 mysqldump 邏輯備份(簡(jiǎn)單、兼容),命令示例:
    mysqldump -u root -p --single-transaction --routines --triggers db_name | gzip > db_name_$(date +%Y%m%d).sql.gz
    
  • 大型庫(kù):用 Percona XtraBackup 物理熱備(高速、低影響),結(jié)合 Binlog 實(shí)現(xiàn) PITR。
  • 關(guān)鍵業(yè)務(wù):全量備份(每日)+ 增量備份(每小時(shí))+ Binlog(實(shí)時(shí)),確保任意時(shí)間點(diǎn)可恢復(fù)。

通過(guò)合理選擇工具和策略,可最大化保障 MySQL 數(shù)據(jù)安全與業(yè)務(wù)連續(xù)性。

到此這篇關(guān)于MySQL數(shù)據(jù)庫(kù)備份與還原的方案及具體命令行操作的文章就介紹到這了,更多相關(guān)MySQL備份與還原內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SQL多個(gè)字段拼接組合成新字段的常用方法

    SQL多個(gè)字段拼接組合成新字段的常用方法

    在sql語(yǔ)句中,有時(shí)候我們可能需要將兩個(gè)字段的值放在一起顯示,因?yàn)樗麄兺ǔJ且黄鸪霈F(xiàn)的,比如客戶(hù)名稱(chēng)和客戶(hù)編號(hào),那我們就要將這兩個(gè)字段拼接成一個(gè)字段,本文給大家介紹了幾種常見(jiàn)的方法,需要的朋友可以參考下
    2024-02-02
  • MySQL中join語(yǔ)句怎么優(yōu)化

    MySQL中join語(yǔ)句怎么優(yōu)化

    本文主要介紹了MySQL中join語(yǔ)句怎么優(yōu)化,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • MySQL多表查詢(xún)的實(shí)現(xiàn)過(guò)程

    MySQL多表查詢(xún)的實(shí)現(xiàn)過(guò)程

    文章講解了SQL多表查詢(xún)的核心概念,包括笛卡爾積(交叉連接)、等值/非等值連接、自連接、內(nèi)/外連接分類(lèi),強(qiáng)調(diào)避免笛卡爾積需添加連接條件,區(qū)分列名并使用JOIN/ON語(yǔ)法,同時(shí)對(duì)比了UNION與UNION?ALL的區(qū)別,并提及MySQL中滿(mǎn)外連接的替代方法
    2025-10-10
  • 比較詳細(xì)的MySQL字段類(lèi)型說(shuō)明

    比較詳細(xì)的MySQL字段類(lèi)型說(shuō)明

    MySQL支持大量的列類(lèi)型,它可以被分為3類(lèi):數(shù)字類(lèi)型、日期和時(shí)間類(lèi)型以及字符串(字符)類(lèi)型。本節(jié)首先給出可用類(lèi)型的一個(gè)概述,并且總結(jié)每個(gè)列類(lèi)型的存儲(chǔ)需求,然后提供每個(gè)類(lèi)中的類(lèi)型性質(zhì)的更詳細(xì)的描述。概述有意簡(jiǎn)化,更詳細(xì)的說(shuō)明應(yīng)該考慮到有關(guān)特定列類(lèi)型的附加信息,例如你能為其指定值的允許格式。
    2008-08-08
  • MySQL?視圖、函數(shù)和存儲(chǔ)過(guò)程詳解

    MySQL?視圖、函數(shù)和存儲(chǔ)過(guò)程詳解

    視圖、函數(shù)和存儲(chǔ)過(guò)程都是 MySQL 中非常重要的數(shù)據(jù)庫(kù)對(duì)象,它們可以提高數(shù)據(jù)庫(kù)的效率和可重用性,使開(kāi)發(fā)人員更加高效地處理數(shù)據(jù),這篇文章主要介紹了MySQL?視圖、函數(shù)和存儲(chǔ)過(guò)程,需要的朋友可以參考下
    2023-04-04
  • MySQL觸發(fā)器的使用和優(yōu)缺點(diǎn)介紹

    MySQL觸發(fā)器的使用和優(yōu)缺點(diǎn)介紹

    大家好,本篇文章主要講的是MySQL觸發(fā)器的使用和優(yōu)缺點(diǎn)介紹,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下哦,方便下次瀏覽
    2021-12-12
  • Navicat連接mysql報(bào)錯(cuò)問(wèn)題

    Navicat連接mysql報(bào)錯(cuò)問(wèn)題

    這篇文章主要介紹了Navicat連接mysql報(bào)錯(cuò)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-09-09
  • 一文帶你學(xué)會(huì)MySQL的select語(yǔ)句

    一文帶你學(xué)會(huì)MySQL的select語(yǔ)句

    在MySQL中可以使用SELECT語(yǔ)句來(lái)查詢(xún)數(shù)據(jù),查詢(xún)數(shù)據(jù)是指從數(shù)據(jù)庫(kù)中根據(jù)需求,使用不同的查詢(xún)方式來(lái)獲取不同的數(shù)據(jù),是使用頻率最高、最重要的操作,下面這篇文章主要給大家介紹了關(guān)于MySQL中select語(yǔ)句的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • mysql日志文件之undo?log和redo?log

    mysql日志文件之undo?log和redo?log

    MySQL日志記錄了MySQL數(shù)據(jù)庫(kù)日常操作和錯(cuò)誤信息,MySQL有不同類(lèi)型的日志文件,下面這篇文章主要給大家介紹了關(guān)于mysql日志文件之undo?log和redo?log的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • MySQL全文檢索的實(shí)現(xiàn)示例

    MySQL全文檢索的實(shí)現(xiàn)示例

    全文搜索是一種在文本字段中查找關(guān)鍵詞的功能。在MySQL中,我們可以使用全文搜索來(lái)提高查詢(xún)的效率,本文主要介紹了MySQL全文檢索的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-04-04

最新評(píng)論

友谊县| 闸北区| 镇原县| 沿河| 大城县| 桑植县| 泗阳县| 德化县| 西吉县| 特克斯县| 渭源县| 顺平县| 涟源市| 定日县| 三穗县| 长兴县| 绵竹市| 山丹县| 德格县| 延长县| 漯河市| 正镶白旗| 从江县| 建德市| 杂多县| 久治县| 当阳市| 陆良县| 武义县| 雅安市| 梅州市| 招远市| 平罗县| 临湘市| 泗阳县| 平湖市| 佛冈县| 铅山县| 克什克腾旗| 广宁县| 安图县|