在設定新的 NDB Cluster 執行個體時,通常需要從現有的 NDB Cluster、MySQL 執行個體或其他來源匯入資料。此資料最常以以下一或多種格式提供
由 mysqldump 或其他匯出程式產生的 CSV 檔案。可以使用 mysql 用戶端中的
LOAD DATA INFILE
或使用 NDB Cluster 發行版本提供的 ndb_import 公用程式將此類檔案匯入NDB
。如需關於後者的詳細資訊,請參閱 第 25.5.13 節「ndb_import — 將 CSV 資料匯入 NDB」。使用
NDB
管理用戶端中的START BACKUP
產生的原生NDB
備份。若要匯入原生備份,您必須使用隨 NDB Cluster 提供的 ndb_restore 程式。如需關於使用此程式的詳細資訊,請參閱 第 25.5.23 節「ndb_restore — 還原 NDB Cluster 備份」。
從 SQL 檔案匯入資料時,通常不需要強制執行交易或外來索引鍵,暫時停用這些功能可以大大加快匯入程序。可以使用 mysql 用戶端完成,無論是從用戶端工作階段還是透過在命令列上叫用它。在 mysql 用戶端工作階段中,您可以使用下列 SQL 陳述式執行匯入
SET ndb_use_transactions=0;
SET foreign_key_checks=0;
source path/to/dumpfile;
SET ndb_use_transactions=1;
SET foreign_key_checks=1;
以此方式執行匯入時,在執行 mysql 用戶端的 source
命令之後,必須 再次啟用 ndb_use_transaction
和 foreign_key_checks
。否則,同一工作階段中稍後的陳述式也可能在未強制執行交易或外來索引鍵限制的情況下執行,這可能會導致資料不一致。
從系統 Shell 中,可以使用 mysql 用戶端搭配 --init-command
選項來匯入 SQL 檔案,同時停用交易和外來索引鍵的強制執行,如下所示
$> mysql --init-command='SET ndb_use_transactions=0; SET foreign_key_checks=0' < path/to/dumpfile
也可以將資料載入 InnoDB
表格中,然後使用 ALTER TABLE ... ENGINE NDB 將其轉換為使用 NDB
儲存引擎。您應該考慮到,尤其是對於許多表格而言,這可能需要執行許多此類操作;此外,如果使用了外來索引鍵,則必須仔細留意 ALTER TABLE
陳述式的順序,因為外來索引鍵無法在使用了不同 MySQL 儲存引擎的表格之間運作。
您應該知道,本節先前所述的方法並未針對非常大的資料集或大型交易進行最佳化。如果應用程式確實需要在正常操作過程中處理大型交易或許多並行交易,您可能需要增加 MaxNoOfConcurrentOperations
資料節點設定參數的值,這會保留更多記憶體,以便在交易協調器意外停止時,允許資料節點接管交易。
在 NDB Cluster 表格上執行大量 DELETE
或 UPDATE
操作時,您可能也想要執行此動作。如果可能,請嘗試讓應用程式以區塊方式執行這些操作,例如,透過在這些陳述式中新增 LIMIT
。
如果資料匯入操作因任何原因而未成功完成,您應該準備好執行任何必要的清除,包括可能的一或多個 DROP TABLE
陳述式和/或 DROP DATABASE
陳述式。若未執行此動作,可能會讓資料庫處於不一致的狀態。