執行 mysqlhotcopy 時出現 Can't locate DBI.pm in @INC ...,原因是系統缺少 Perl **DBI (Database Interface)** 核心模組與 **DBD::mysql** 驅動模組。mysqlhotcopy 是 Perl 腳本,依賴 DBI/DBD 連線 MySQL 執行熱備份。本文提供 Debian/Ubuntu、CentOS/RHEL、手動 CPAN 三種安裝路徑,並附驗證與使用範例。
Can't locate DBI.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.10.1 ...)
BEGIN failed--compilation aborted at /usr/local/mysql/bin/mysqlhotcopy line 8.
apt-get update
apt-get install libdbi-perl libdbd-mysql-perl
# 或舊版套件名
apt-get install libclass-dbi-mysql-perl
yum install perl-DBI perl-DBD-MySQL -y
# 或 dnf
dnf install perl-DBI perl-DBD-MySQL -y
cpan DBI
cpan DBD::mysql
# 或一次安裝
cpan DBI DBD::mysql
若無 cpan 指令:yum install perl-CPAN / apt-get install cpanminus 後用 cpanm DBI DBD::mysql。
# 查詢已安裝
rpm -qa | grep -E 'perl-DBI|perl-DBD-MySQL'
# 下載對應版本 RPM (從官方鏡像/光盤)
# 安裝
rpm -ivh perl-DBI-*.rpm
rpm -ivh perl-DBD-MySQL-*.rpm
perl -MDBI -e 'print "DBI $DBI::VERSION\n"'
perl -MDBD::mysql -e 'print "DBD::mysql $DBD::mysql::VERSION\n"'
# 輸出版本號即成功
# 語法
mysqlhotcopy -u root -p'password' db_name /backup/path/
# 範例:備份 tongchao 資料庫到 /data1/backup/tongchao
/usr/local/webserver/mysql5.1.57/bin/mysqlhotcopy -u root -p'pass' tongchao /data1/backup/tongchao
mysqldump --single-transaction 或 XtraBackup)。LOCK TABLES + FLUSH TABLES + 複製 .frm/.MYD/.MYI 檔案實現。LOCK TABLES、SELECT、FILE 權限,且對備份目錄有寫入權限。mysqldump、mysqlpump、XtraBackup。| 工具 | 支援引擎 | 熱備份 | 並行/壓縮 | 適用版本 |
|---|---|---|---|---|
mysqldump --single-transaction | InnoDB/All | ✅ (邏輯) | 單執行緒/可管線 gzip | 所有版本 |
mysqlpump | All | ✅ (邏輯) | 並行、壓縮、排除表 | 5.7+ |
Percona XtraBackup | InnoDB/MyISAM | ✅ (物理) | 並行、壓縮、增量、流式 | 5.5+ |
MySQL Enterprise Backup | All | ✅ (物理) | 企業級功能 | 商業版 |
安裝 perl-DBI / perl-DBD-MySQL 即可解決 mysqlhotcopy 缺模組錯誤;但考慮其僅支援 MyISAM 且已棄用,**強烈建議遷移至 XtraBackup 或 mysqldump/mysqlpump 組合** 作為長期備份策略。