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

MySQL備份指定表的常見方法總結(jié)

 更新時間:2026年06月03日 09:01:52   作者:Oneslide  
MySQL備份是數(shù)據(jù)庫管理的核心環(huán)節(jié)之一,通過備份能夠有效地防止數(shù)據(jù)丟失,確保數(shù)據(jù)的安全和恢復(fù)能力,下面我們就來看看如何使用MySQL備份指定表吧

MySQL備份是數(shù)據(jù)庫管理的核心環(huán)節(jié)之一,通過備份能夠有效地防止數(shù)據(jù)丟失,確保數(shù)據(jù)的安全和恢復(fù)能力。備份的方式多種多樣,可以根據(jù)業(yè)務(wù)規(guī)模、數(shù)據(jù)的重要性和恢復(fù)時間要求來選擇合適的備份方案

mysql備份指定表

#!/bin/bash
# ====================== 配置項(只改這里)======================
MYSQL_HOST="127.0.0.1"
MYSQL_PORT="3306"
MYSQL_USER="root"
MYSQL_PASS="your_pass_password"
# Socket 連接配置(可選)
CONN_SOCKET_ENABLED=true  # 開啟則為 true,關(guān)閉則為 false
MYSQL_SOCKET="/usr/local/mysql/temp/mysql.sock"
# 備份根目錄
BACKUP_ROOT="mysql-backup"
# ===============================================================
# 檢查參數(shù)
if [ $# -ne 2 ]; then
    echo "用法: $0 <數(shù)據(jù)庫名> <表名>"
    echo "示例: $0 test_db user_table"
    exit 1
fi
# 接收參數(shù)
DB_NAME="$1"
TABLE_NAME="$2"
# 備份目錄 & 日志
BACKUP_DIR="${BACKUP_ROOT}/$(date +%Y%m%d_%H%M%S)_${DB_NAME}_${TABLE_NAME}"
LOG_FILE="${BACKUP_DIR}/backup.log"
mkdir -p "${BACKUP_DIR}"
# 日志函數(shù)
log() {
    echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" | tee -a "${LOG_FILE}"
}
log "===== 開始【無鎖】單表備份 ====="
log "數(shù)據(jù)庫:${DB_NAME}"
log "表名:${TABLE_NAME}"
log "備份目錄:${BACKUP_DIR}"
# 構(gòu)建 socket 參數(shù)(可選)
SOCKET_PARAM=""
if [ "${CONN_SOCKET_ENABLED}" = "true" ]; then
    SOCKET_PARAM="--socket=${MYSQL_SOCKET}"
    log "[INFO] 已啟用 socket 連接:${MYSQL_SOCKET}"
fi
# 1. 檢查數(shù)據(jù)庫是否存在
DB_EXISTS=$(mysql -h"${MYSQL_HOST}" -P"${MYSQL_PORT}" -u"${MYSQL_USER}" -p"${MYSQL_PASS}" ${SOCKET_PARAM} \
-e "SHOW DATABASES LIKE '${DB_NAME}';" -sN 2>/dev/null)
if [ -z "${DB_EXISTS}" ]; then
    log "[ERROR] 數(shù)據(jù)庫 ${DB_NAME} 不存在!"
    exit 1
fi
# 2. 檢查表是否存在
TABLE_EXISTS=$(mysql -h"${MYSQL_HOST}" -P"${MYSQL_PORT}" -u"${MYSQL_USER}" -p"${MYSQL_PASS}" ${SOCKET_PARAM} \
-e "SHOW TABLES FROM \`${DB_NAME}\` LIKE '${TABLE_NAME}';" -sN 2>/dev/null)
if [ -z "${TABLE_EXISTS}" ]; then
    log "[ERROR] 表 ${DB_NAME}.${TABLE_NAME} 不存在!"
    exit 1
fi
log "[INFO] 庫表驗證通過,開始備份..."
# 3. 備份文件路徑
BACKUP_FILE="${BACKUP_DIR}/${TABLE_NAME}.sql"
# 4. 執(zhí)行【無鎖】單表備份(已加入你要求的3個參數(shù))
mysqldump \
    -h"${MYSQL_HOST}" \
    -P"${MYSQL_PORT}" \
    -u"${MYSQL_USER}" \
    -p"${MYSQL_PASS}" \
    ${SOCKET_PARAM} \
    --single-transaction \
    --lock-tables=FALSE \
    --add-locks=FALSE \
    --hex-blob \
    --opt \
    --set-gtid-purged=OFF \
    --default-character-set=utf8mb4 \
    "${DB_NAME}" "${TABLE_NAME}" > "${BACKUP_FILE}" 2>> "${LOG_FILE}"
# 5. 檢查備份結(jié)果
if [ $? -eq 0 ]; then
    FILE_SIZE=$(stat -c%s "${BACKUP_FILE}" 2>/dev/null || stat -f%z "${BACKUP_FILE}")
    if [ "${FILE_SIZE}" -lt 100 ]; then
        log "[WARN] 備份完成,但文件過?。赡苁强毡恚?{FILE_SIZE} 字節(jié)"
    else
        log "[SUCCESS] 無鎖備份成功!文件大?。?{FILE_SIZE} 字節(jié)"
        log "[SUCCESS] 備份文件:${BACKUP_FILE}"
    fi
else
    log "[ERROR] 備份失?。〔榭慈罩荆?{LOG_FILE}"
    exit 1
fi
log "===== 單表備份全部完成 ====="

MySQL備份表的四種方式

MySQL備份是數(shù)據(jù)庫管理的核心環(huán)節(jié)之一,通過備份能夠有效地防止數(shù)據(jù)丟失,確保數(shù)據(jù)的安全和恢復(fù)能力。備份的方式多種多樣,可以根據(jù)業(yè)務(wù)規(guī)模、數(shù)據(jù)的重要性和恢復(fù)時間要求來選擇合適的備份方案。以下是四種常見的MySQL備份表的方式,涵蓋從簡單的命令行工具到復(fù)雜的二進制日志備份,供不同場景下使用。

1. 使用mysqldump工具進行備份

mysqldump是MySQL自帶的命令行工具,允許用戶將數(shù)據(jù)庫中的表結(jié)構(gòu)和數(shù)據(jù)導(dǎo)出為SQL文件。mysqldump的備份方式簡單直接,無需停止數(shù)據(jù)庫服務(wù),能夠在數(shù)據(jù)庫正常運行時備份數(shù)據(jù),因而廣泛應(yīng)用于小型和中型數(shù)據(jù)庫的備份。

命令格式:

mysqldump -u用戶名 -p密碼 數(shù)據(jù)庫名 表名> 導(dǎo)出的文件名.sql

命令解釋:

  • -u用戶名:指定用于連接MySQL的用戶名。
  • -p密碼:指定用戶密碼。如果密碼較長或包含特殊字符,也可以不直接輸入密碼,運行命令后手動輸入。
  • 數(shù)據(jù)庫名:需要備份的數(shù)據(jù)庫名稱。
  • 表名:要備份的表名。
  • > 導(dǎo)出的文件名.sql:將備份結(jié)果導(dǎo)出為一個SQL文件。

優(yōu)點:

  • 無需停止數(shù)據(jù)庫服務(wù),可以在線備份。
  • 操作簡單、易于集成到定時任務(wù)或自動化腳本中。
  • 能夠?qū)⒈斫Y(jié)構(gòu)和數(shù)據(jù)一起備份,便于遷移和恢復(fù)。

缺點:

  • 對于大型數(shù)據(jù)庫,備份和恢復(fù)速度較慢。
  • 備份時會消耗較多的CPU和I/O資源,可能會影響數(shù)據(jù)庫性能。

適用場景:

  • 適合小型或中型數(shù)據(jù)庫的定期備份。
  • 適用于不需要實時備份、對資源消耗不敏感的場景。

2. 使用MySQL Workbench工具備份

MySQL Workbench是一款官方提供的圖形化管理工具,提供了友好的用戶界面,使得數(shù)據(jù)庫管理更加直觀,尤其適合不熟悉命令行操作的用戶。通過MySQL Workbench,用戶可以選擇具體的數(shù)據(jù)庫或表進行備份。

備份步驟:

  1. 打開MySQL Workbench,連接到數(shù)據(jù)庫服務(wù)器。
  2. 在菜單中選擇“Server” -> “Data Export”。
  3. 選擇要備份的數(shù)據(jù)庫或表,并選擇備份位置。
  4. 點擊“Start Export”開始備份。

優(yōu)點:

  • 界面友好,操作簡便。
  • 可以直觀地選擇需要備份的數(shù)據(jù)庫或表。
  • 適合初學(xué)者使用,無需復(fù)雜的命令。

缺點:

  • 需要安裝額外的軟件。
  • 備份和恢復(fù)效率不如命令行工具。
  • 依賴圖形界面,無法完全自動化。

適用場景:

  • 適合初學(xué)者或不熟悉命令行工具的用戶。
  • 中小型數(shù)據(jù)庫的日常維護和管理。

3. 使用SELECT INTO OUTFILE語句進行備份

SELECT INTO OUTFILE是通過SQL語句直接將表中的數(shù)據(jù)導(dǎo)出到文件中。這種備份方式相對靈活,用戶可以控制導(dǎo)出數(shù)據(jù)的格式、路徑等,但只能備份數(shù)據(jù)部分,無法導(dǎo)出表結(jié)構(gòu)信息。

語法格式:

SELECT * INTO OUTFILE '/path/to/file.csv'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' 
LINES TERMINATED BY '
'
FROM 表名;

命令解釋:

  • OUTFILE '/path/to/file.csv':指定導(dǎo)出的文件路徑和名稱。
  • FIELDS TERMINATED BY ',':定義字段之間的分隔符,這里使用逗號分隔。
  • OPTIONALLY ENCLOSED BY '"':可選字段用引號包圍。
  • LINES TERMINATED BY ' ':定義記錄之間的分隔符,這里為換行符。
  • FROM 表名:指定要備份的表。

優(yōu)點:

  • 備份速度快,適合數(shù)據(jù)導(dǎo)出需求較高的場景。
  • 可以導(dǎo)出為多種格式,如CSV文件,便于數(shù)據(jù)交換和處理。
  • 靈活性高,能夠選擇性導(dǎo)出部分?jǐn)?shù)據(jù)。

缺點:

  • 無法備份表結(jié)構(gòu),只能備份表中的數(shù)據(jù)。
  • 需要手動恢復(fù)表結(jié)構(gòu)后再導(dǎo)入數(shù)據(jù)。

適用場景:

  • 適合需要導(dǎo)出數(shù)據(jù)進行分析或數(shù)據(jù)遷移的場景。
  • 數(shù)據(jù)導(dǎo)出量大,對表結(jié)構(gòu)備份要求不高的場景。

4. 使用Binary Log備份

二進制日志(Binary Log)是MySQL記錄所有對數(shù)據(jù)庫進行修改的SQL語句的日志文件,通過回放這些日志可以實現(xiàn)數(shù)據(jù)恢復(fù)。使用二進制日志進行備份是一種增量備份方式,特別適合大型數(shù)據(jù)庫和需要高頻率備份的場景。

啟用二進制日志:

在MySQL配置文件my.cnf中,添加以下行以啟用二進制日志:

log-bin=/var/log/mysql/mysql-bin.log

保存后,重啟MySQL服務(wù)使配置生效。

備份步驟:

  • 定期備份二進制日志文件:cp /var/log/mysql/mysql-bin.* /path/to/backup/
  • 在發(fā)生故障時,通過回放二進制日志恢復(fù)數(shù)據(jù):mysqlbinlog /path/to/mysql-bin.000001| mysql -u用戶名 -p密碼

優(yōu)點:

  • 實現(xiàn)增量備份和實時備份,節(jié)省存儲空間。
  • 可以快速恢復(fù)最近的數(shù)據(jù)變更,適合需要實時性強的業(yè)務(wù)場景。
  • 備份文件較小,適合大規(guī)模數(shù)據(jù)庫環(huán)境。

缺點:

  • 恢復(fù)操作較為復(fù)雜,需要回放大量SQL語句。
  • 二進制日志文件會不斷增長,需定期清理以節(jié)省磁盤空間。

適用場景:

  • 適合需要增量備份的中大型數(shù)據(jù)庫。
  • 適合數(shù)據(jù)實時性要求較高的生產(chǎn)環(huán)境。

知識擴展

在實際運維或開發(fā)中,有時只需備份數(shù)據(jù)庫中的某幾張表(而非整個庫),以節(jié)省空間或提高效率。以下是幾種主流的備份方式:

1. 使用 mysqldump 工具(最常用)

mysqldump 是 MySQL 官方自帶的邏輯備份工具,可以靈活指定庫和表。

備份單張表(結(jié)構(gòu)+數(shù)據(jù))

mysqldump -u 用戶名 -p 數(shù)據(jù)庫名 表名 > 表名.sql

示例:備份 mydb 庫中的 users 表

mysqldump -u root -p mydb users > users_backup.sql

備份多張指定表

mysqldump -u root -p mydb users orders products > multi_tables.sql

只備份表結(jié)構(gòu)(不含數(shù)據(jù))

mysqldump -u root -p --no-data mydb users > users_structure.sql

只備份數(shù)據(jù)(不含結(jié)構(gòu))

mysqldump -u root -p --no-create-info mydb users > users_data.sql

恢復(fù)備份(直接導(dǎo)入)

mysql -u root -p mydb < users_backup.sql

2. 使用 SELECT INTO OUTFILE 導(dǎo)出為文本文件

適合將表數(shù)據(jù)導(dǎo)出為 CSV 或 TSV 格式,僅數(shù)據(jù),不含結(jié)構(gòu)。

-- 導(dǎo)出為 CSV(逗號分隔,字段可選引號)
SELECT * FROM users
INTO OUTFILE '/tmp/users.csv'
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"'
LINES TERMINATED BY '\n';

注意

  • 需要 FILE 權(quán)限。
  • 輸出路徑必須在 MySQL 服務(wù)器上,且對 mysql 用戶可寫。
  • 恢復(fù)時使用 LOAD DATA INFILE

3. 使用 MySQL Workbench(圖形化)

適合少量操作或開發(fā)環(huán)境。

  • 連接到數(shù)據(jù)庫。
  • 在左側(cè) Navigator 中找到目標(biāo)數(shù)據(jù)庫。
  • 右鍵點擊需要備份的表 → 選擇 Table Data Export Wizard(或 Export Table Data)。
  • 選擇導(dǎo)出格式(.sql.csv 等)和導(dǎo)出路徑。
  • 按照向?qū)瓿伞?/li>

4. 使用 mysqlpump(MySQL 5.7+ 引入)

mysqlpump 支持并行導(dǎo)出,語法與 mysqldump 類似,也可指定表。

mysqlpump -u root -p mydb users > users.sql

5. 使用 pt-dump(Percona Toolkit)

Percona Toolkit 中的 pt-dump 功能更強,支持過濾表、正則匹配等。

pt-dump --user=root --password=xxx --database=mydb --tables='users,orders' > backup.sql

6. 使用存儲過程或腳本循環(huán)備份

如果需要批量備份多張表(例如按表名前綴),可寫一個腳本循環(huán)執(zhí)行 mysqldump。

Bash 示例

#!/bin/bash
DB="mydb"
TABLES="users orders products"
for t in $TABLES; do
    mysqldump -u root -p$PASS $DB $t > ${t}.sql
done

總結(jié)

MySQL的備份方式多種多樣,不同的備份方式各有優(yōu)缺點。對于中小型數(shù)據(jù)庫,mysqldump和MySQL Workbench工具較為合適,操作簡便,且支持表結(jié)構(gòu)和數(shù)據(jù)的備份。對于只需要數(shù)據(jù)導(dǎo)出分析的情況,可以使用SELECT INTO OUTFILE語句。而對于大型數(shù)據(jù)庫和實時備份的需求,Binary Log增量備份是一種高效的解決方案。

在實際應(yīng)用中,應(yīng)根據(jù)業(yè)務(wù)的規(guī)模、數(shù)據(jù)的重要性和恢復(fù)時間的需求選擇合適的備份方式。同時,定期測試備份的有效性是確保數(shù)據(jù)安全的關(guān)鍵環(huán)節(jié)。

到此這篇關(guān)于MySQL備份指定表的常見方法總結(jié)的文章就介紹到這了,更多相關(guān)MySQL備份指定表內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用MySQL Workbench構(gòu)建ER圖的詳細(xì)教程

    使用MySQL Workbench構(gòu)建ER圖的詳細(xì)教程

    ER圖又稱實體-聯(lián)系圖(Entity Relationship Diagram),提供了表示實體類型、屬性和聯(lián)系的方法,用來描述現(xiàn)實世界的概念模型,MySQL?Workbench是一個強大的數(shù)據(jù)庫設(shè)計工具,提供了便捷的數(shù)據(jù)導(dǎo)入導(dǎo)出功能,本文介紹了使用MySQL Workbench構(gòu)建ER圖的詳細(xì)教程
    2024-06-06
  • MySQL入門(四) 數(shù)據(jù)表的數(shù)據(jù)插入、更新、刪除

    MySQL入門(四) 數(shù)據(jù)表的數(shù)據(jù)插入、更新、刪除

    這篇文章主要介紹了mysql數(shù)據(jù)庫中表的插入、更新、刪除非常簡單,但是簡單的也要學(xué)習(xí),細(xì)節(jié)決定成敗,需要的朋友可以參考下
    2018-07-07
  • mysql性能優(yōu)化之索引優(yōu)化

    mysql性能優(yōu)化之索引優(yōu)化

    我們首先討論索引,因為它是加快查詢的最重要的工具。當(dāng)然還有其他加快查詢的技術(shù),但是最有效的莫過于恰當(dāng)?shù)厥褂盟饕恕O旅嫖覀兙蛠斫榻B索引是什么、它怎樣改善查詢性能、索引在什么情況下可能會降低性能,以及怎樣為表選擇索引。
    2015-12-12
  • 在Linux環(huán)境下mysql的root密碼忘記解決方法(三種)

    在Linux環(huán)境下mysql的root密碼忘記解決方法(三種)

    這篇文章主要介紹了在Linux環(huán)境下mysql的root密碼忘記解決方法,詳細(xì)的介紹了3種解決辦法,具有一定的參考價值,有興趣的可以了解一下。
    2016-12-12
  • Windows10下MySQL5.7.31解壓版安裝與卸載方法

    Windows10下MySQL5.7.31解壓版安裝與卸載方法

    這篇文章主要介紹了Windows10下MySQL5.7.31解壓版安裝與卸載,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-12-12
  • RHEL6.2編譯安裝MySQL 5.6.16過程分享

    RHEL6.2編譯安裝MySQL 5.6.16過程分享

    這篇文章主要介紹了RHEL6.2編譯安裝MySQL 5.6.16過程分享,還包括了mysql_secure_installation腳本運行指導(dǎo),需要的朋友可以參考下
    2014-07-07
  • MySQL的安全問題從安裝開始說起

    MySQL的安全問題從安裝開始說起

    本篇文章小編為大家介紹,關(guān)于MySQL的安全問題從安裝開始說起,有需要的朋友可以參考一下
    2013-04-04
  • 深入理解MySQL5.7數(shù)據(jù)目錄結(jié)構(gòu)

    深入理解MySQL5.7數(shù)據(jù)目錄結(jié)構(gòu)

    本文主要簡單介紹一下MySQL數(shù)據(jù)文件目錄的物理結(jié)構(gòu)和作用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-08-08
  • Mysql 主從集群同步延遲的問題解決

    Mysql 主從集群同步延遲的問題解決

    本文主要介紹了Mysql 主從集群同步延遲的問題解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-04-04
  • mysql如何定時自動新增分區(qū)

    mysql如何定時自動新增分區(qū)

    這篇文章主要介紹了mysql如何定時自動新增分區(qū)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09

最新評論

本溪市| 宾阳县| 阿拉善盟| 彰化县| 南阳市| 利川市| 社会| 三亚市| 本溪| 余干县| 紫金县| 花垣县| 胶州市| 武强县| 民勤县| 贞丰县| 军事| 武陟县| 将乐县| 满城县| 札达县| 开鲁县| 陇川县| 荆州市| 淮北市| 金溪县| 朔州市| 胶州市| 怀集县| 临夏市| 含山县| 古蔺县| 甘孜县| 永善县| 马关县| 兴海县| 伊金霍洛旗| 易门县| 定安县| 德保县| 广灵县|