首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL mysqlhotcopy 熱備份工具安裝與使用指南(僅適用 MyISAM) MySQL mysqlhotcopy 熱備份工具安裝與使用指南(僅適用 MyISAM)

     編輯:MySQL 綜合教學

mysqlhotcopy 是 Perl 腳本工具,利用 FLUSH TABLES WITH READ LOCK + 拷貝文件實現 **MyISAM 表** 的熱備份。**不支持 InnoDB**(無法保證事務一致性)。MySQL 5.7+ 已移除,僅適用 5.6 及以下 MyISAM 存量系統。本文記錄安裝依賴、使用參數、遷移實戰、替代方案。

前置依賴安裝

# CentOS/RHEL
yum -y install perl-DBI perl-DBD-MySQL

# 或源碼安裝 DBD::mysql
wget https://search.cpan.org/CPAN/authors/id/C/CA/CAPTTOFU/DBD-mysql-4.050.tar.gz
tar zxvf DBD-mysql-4.050.tar.gz
cd DBD-mysql-4.050
perl Makefile.PL --mysql_config=/usr/local/mysql/bin/mysql_config
make && make install

基本語法

mysqlhotcopy [options] db_name [/path/to/backup_dir]

# 常用選項
--user=root --password=xxx --host=localhost --port=3306
--regexp='^tbl_'          # 正則匹配表名
--suffix=_backup          # 備份目錄後綴
--method=cp               # 拷貝方式:cp/scp/rsync
--keep-old                # 保留舊備份
--flushlog                # 備份前 FLUSH LOGS
--noindices               # 不備份索引文件(僅 .MYD/.frm)
--quiet                   # 靜默模式

實戰示例

# 1. 備份整個庫
/usr/bin/mysqlhotcopy --user=root -p'xxx' -h 127.0.0.1 db_name /backup/mysqlhotcopy/

# 2. 備份特定表(正則)
/usr/bin/mysqlhotcopy --user=root -p'xxx' db_name /backup/ --regexp='^order_'

# 3. 異機備份
/usr/bin/mysqlhotcopy --user=root -p'xxx' db_name /backup/ --method=scp --host=backup_server

# 4. 只備份數據文件(不含索引,恢復後需 REPAIR TABLE)
/usr/bin/mysqlhotcopy --user=root -p'xxx' db_name /backup/ --noindices

核心限制(必讀)

限制影響
僅支持 MyISAM / ARCHIVEInnoDB 表會被跳過或報錯,無法熱備份
需 FLUSH TABLES WITH READ LOCK全局讀鎖,備份期間**所有寫入阻塞**
本地文件系統拷貝跨機需 scp/rsync,網絡慢影響鎖持有時間
不支持壓縮/加密備份文件體積大、明文
MySQL 5.7+ 已移除不可用於新版本
無增量備份每次全量

遷移/恢復流程

# 1. 目標機器創建同名庫
mysql -u root -p -e "CREATE DATABASE db_name CHARACTER SET utf8mb4;"

# 2. 停止目標 MySQL(或確保無寫入)
systemctl stop mysqld

# 3. 拷貝備份文件到 datadir
cp -r /backup/mysqlhotcopy/db_name/* /var/lib/mysql/db_name/
chown -R mysql:mysql /var/lib/mysql/db_name/

# 4. 啟動 MySQL
systemctl start mysqld

# 5. 檢查表(MyISAM 可能需修復)
mysql -u root -p -e "CHECK TABLE db_name.tbl_name;"
mysql -u root -p -e "REPAIR TABLE db_name.tbl_name;"  # 若損壞

現代替代方案(強烈推薦)

工具引擎支持熱備份增量壓縮並行適用版本
Percona XtraBackupInnoDB/MyISAM✅✅✅✅5.5+
MySQL Enterprise BackupInnoDB/MyISAM✅✅✅✅商業版
mysqldump --single-transactionInnoDB✅ (邏輯)❌✅❌5.0+
mydumper/myloaderInnoDB/MyISAM✅ (邏輯)❌✅✅5.5+

總結

mysqlhotcopy 是 MyISAM 時代的產物,**已棄用**。存量 MyISAM 系統請儘快遷移至 InnoDB + XtraBackup/meb/mydumper 現代備份體系。若必須維護舊系統,嚴格限制備份窗口、監控鎖持有時間、異地存儲備份文件。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved