我想知道是否有任何方法可以確定,而mysqldump運行時,備份已完成多少或剩餘多少?有沒有辦法讓mysqldump進度條顯示用戶的備份狀態?
我想提供我的用戶有一個控制檯進度條來顯示他們的備份狀態...
由我想寫出標準的C++上面的程序方式和平臺會是Linux操作系統。 謝謝!
我想知道是否有任何方法可以確定,而mysqldump運行時,備份已完成多少或剩餘多少?有沒有辦法讓mysqldump進度條顯示用戶的備份狀態?
我想提供我的用戶有一個控制檯進度條來顯示他們的備份狀態...
由我想寫出標準的C++上面的程序方式和平臺會是Linux操作系統。 謝謝!
是,3月27日一patch was committed,2010:
這個新的補丁有--show正在進行的尺寸,其通過 默認設置爲10,000一個額外的參數。因此,當使用--verbose時,每10,000行將獲得轉儲的特定表的 的行數的常規狀態輸出。
所以檢查你的版本,如果需要更新和享受。
安裝和使用pv
(它可作爲yum包爲CentOS)
http://www.ivarch.com/programs/pv.shtml
PV(「管道查看器」)被用於通過管道監測數據 的進展的工具。它可以插入到兩個過程之間的任何正常管道 中,以便直觀地顯示數據通過的速度有多快,已經用了多長時間,多長時間完成它,以及估計它將持續多長時間完成。
假設所得dumpfile.sql文件的預期大小爲100米(100兆字節),使用pv
將如下:
mysqldump <parameters> | pv --progress --size 100m > dumpfile.sql
控制檯輸出如下:
[===> ] 20%
看看man頁面man pv
了更多的選擇。您可以顯示傳輸速率,或已經過了多長時間,或傳輸了多少字節等等。
如果您不知道轉儲文件的大小,有一種方法可以從table_schema獲取MySQL數據庫的大小 - 它不會是轉儲文件的大小,但它可能足夠接近您的需求:
SELECT table_schema AS "Database", ROUND(SUM(data_length + index_length)/1024/1024, 2) AS "Size (MB)" FROM information_schema.TABLES GROUP BY table_schema;
Russell E Glaue答案的完整版本。 獲取圓角數據庫大小PV只接受整並計算數據長度沒有索引,每個@mtoloo評論:
db_size=$(mysql -h"$DB_HOST" \
-u"$DB_USERNAME" \
-p"$DB_PASSWORD" \
--silent \
--skip-column-names \
-e "SELECT ROUND(SUM(data_length)/1024/1024, 0) \
FROM information_schema.TABLES \
WHERE table_schema='$DB_NAME';")
創建一個備份到時間戳的文件名:
mysqldump -h"$DB_HOST" \
-u"$DB_USERNAME" \
-p"$DB_PASSWORD" \
--single-transaction \
--order-by-primary \
--compress \
$DB_NAME | pv --progress --size "$db_size"m > "$(date +%Y%m%d)"_backup.sql
真棒,還需要一些作弄(得到所有表和他們的行數),但接縫編碼的好起點 – mpapis 2011-02-01 10:46:20
我使用的是mysqldump版本10.13的Distrib 5.5.11,用於Win32(x86),它似乎並沒有用這個補丁構建。我如何確定這個補丁是否已經成爲一個穩定版本? – 2011-05-02 14:31:12