Mysql
我們如何使用批量記錄選項進行轉儲?
我們有 30 GB 的數據庫。我們要備份這個數據庫。
這裡的問題是我們要備份每 10k 條記錄的批次。
我們如何使用 mysqldump 進行批量記錄備份
這裡有一些你可能會覺得有趣的東西
建議 #1:讓 mysqldump 創建批次
mysqldump已經使用了一個名為–extended-insert的選項。這將對可以在單個 INSERT 命令中載入的一系列記錄進行分組。雖然您不能使用 mysqldump 來控制要一起批處理的行數,但您可以解析 mysqldump。當然,這意味著您必須使用您選擇的語言(Python、Perl、C++ 等)編寫腳本。
對於單個數據庫的 mysqldump 中的任何給定表,您將看到以下範例:
CREATE TABLE LOCK TABLE INSERT INTO ... INSERT INTO ... INSERT INTO ... ... ... INSERT INTO ... INSERT INTO ... UNLOCK TABLES;
您可以按如下方式解析 mysqldump:
- Step01 : 獲取mysqldump中的下一個表名
- Step02 : 定位下一個
INSERT INTO
或UNLOCK TABLES;
- Step03 : 如果遇到
UNLOCK TABLES;
, 轉到 Step01- Step04 : 如果你沒有更多的桌子,你就完成了
- Step05 : 轉到 Step02
您讀取的每個 INSERT 命令都有一定數量的行。除非您編寫腳本將它們放在您選擇的行數中,否則您無法控制這個數字。我建議不要讓 mysqld 在給定目前配置設置的情況下決定該特定批次的最佳行數(可能是max_allowed_packet)
建議#2:
--skip-extended-insert
按照自己的方式使用和批處理它們當您停用–extended-insert時,每個 INSERT 命令將只有一行。您可以使用腳本收集行並收集任意數量的行。
注意事項
- 請對您選擇一起批處理的行數有點保守。
- 解析 mysqldump 需要更長的時間,因為 mysqldump 會更長。