使用 mysqlhotcopy 備份和恢復 MySQL 數據庫
MysqlhotCopy 是 Mysql 安裝附帶的 perl 腳本。這會鎖定表,刷新表,然后執行數據庫的副本。您也可以使用 mysqlhotCopy 使用 scp 自動將備份直接復制到另一臺服務器

1. mysqlhotcopy 命令:
[local-host]# /usr/bin/mysqlhotcopy -u root -p My2Secure$Password sugarcrm /home/backup/database --allowold --keepold
上面的例子,將一個 MySQL 數據庫 Sugarcrm 備份到 /home/backup/database 目錄。
–allowold:此選項在進行新備份之前將舊備份重命名為 {datbase-name}_old。在這個例子中,如果/home/backup/database 下已經存在sugarcrm 備份,它會在創建/home/backup/database/sugarcrm 之前將舊備份移動到/home/backup/database/sugarcrm_old。
--keepold:該選項指示mysqlhotcopy在備份完成后保留舊的備份(即重命名的_old)。
使用 perldoc 查看 mysqlhotcopy 文檔,如下所示。
[local-host]# perldoc mysqlhotcopy
以下是可以傳遞給 mysqlhotcopy 命令的可用選項。
選項
描述
2. mysqlhotcopy 命令輸出:
上面的 mysqlhotcopy 命令將顯示類似于以下內容的輸出。
[local-host]# /usr/bin/mysqlhotcopy -u root -p My2Secure$Password sugarcrm /home/backup/database --allowold --keepold Locked 98 tables in 0 seconds. Flushed tables (`sugarcrm`.`accounts`, `sugarcrm`.`accounts_audit`, `sugarcrm`.`accounts_bugs`) in 0 seconds. Copying 295 files... Copying indices for 0 files... Unlocked tables. mysqlhotcopy copied 98 tables (295 files) in 0 seconds (0 seconds overall).
默認情況下,MySQL 數據庫位于 /var/lib/mysql/{db-name} 下。mysqlhotcopy 將表文件從此默認數據庫位置備份到備份目錄。備份目錄 /home/backup/database/sugarcrm 將包含真實 MySQL 數據庫 /var/lib/mysql/sugarcrm 目錄中所有文件的精確副本。
[local-host]# ls -1 /var/lib/mysql/sugarcrm | wc -l 295 [local-host]# ls -1 /home/backup/database/sugarcrm | wc -l 295
請注意,每個表都有三個對應的文件,擴展名為 *.frm、*.MYD 和 *.MYI。數據庫目錄還包含一個 db.opt 文件,該文件包含與數據庫相關的參數。
在上面的示例中,您可以看到 mysqlhotcopy 備份了 98 個 Sugarcrm 數據庫表。因此,備份目錄中的文件總數 = 98 個表 * 3 + 1 db 配置文件 = 296 個文件。
3.從mysqlhotcopy恢復
要從 mysqlhotcopy 備份恢復備份,只需將文件從備份目錄復制到 /var/lib/mysql/{db-name} 目錄。為了安全起見,請確保在恢復(復制)文件之前停止 mysql。將文件復制到 /var/lib/mysql/{db-name} 后,再次啟動 mysql。
4. mysqlhotcopy 故障排除
如何解決Can't locate DBD/mysql.pm 問題?mysqlhotcopy 是一個 perl 腳本,它需要 perl-DBD 模塊。如果未安裝 perl-DBD 模塊,您在執行 mysqlhotcopy 時可能會收到以下錯誤。
[local-host]# /usr/bin/mysqlhotcopy -u root -p My2Secure$Password sugarcrm /home/backup/database --allowold --keepold install_driver(mysql) failed: Can't locate DBD/mysql.pm in @INC (@INC contains: /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/5.8.8 .) at (eval 7) line 3. Perhaps the DBD::mysql perl module hasn't been fully installed, or perhaps the capitalisation of 'mysql' isn't right. Available drivers: DBM, ExampleP, File, Proxy, Sponge. at /usr/bin/mysqlhotcopy line 177
確保安裝 perl-DBD 包,如下所示。
[local-host]# rpm -ivh perl-DBD-MySQL-3.0007-1.fc6.i386.rpm Preparing... ########################################### [100%] 1:perl-DBD-MySQL ########################################### [100%]
如何解決 perl-DBD 安裝的問題?安裝 perl-DBD 時,您可能會收到以下錯誤消息。
[local-host]# rpm -ivh perl-DBD-MySQL-3.0007-1.fc6.i386.rpm rpmdb: Program version 4.3 doesn't match environment version error: db4 error(-30974) from dbenv->open: DB_VERSION_MISMATCH: Database environment version mismatch error: cannot open Packages index using db3 - (-30974) warning: cannot open Solve database in /usr/lib/rpmdb/i386-redhat-linux/redhat rpmdb: Program version 4.3 doesn't match environment version error: db4 error(-30974) from dbenv->open: DB_VERSION_MISMATCH: Database environment version mismatch warning: cannot open Solve database in /usr/lib/rpmdb/i386-redhat-linux/redhat error: Failed dependencies: libmysqlclient.so.15 is needed by perl-DBD-MySQL-3.0007-1.fc6.i386 libmysqlclient.so.15(libmysqlclient_15) is needed by perl-DBD-MySQL-3.0007-1.fc6.i386
從 mysql.com 下載并安裝 MySQL-shared-compat,這應該可以解決安裝 perl-DBD 包時出現的上述錯誤。
[local-host]# rpm -ivh MySQL-shared-compat-5.1.25-0.rhel5.i386.rpm Preparing... ########################################### [100%] 1:MySQL-shared-compat ########################################### [100%]
MySQL 數據庫
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。