在 MySQL Cluster 中操作資料與單機 MySQL 大同小異,但有兩個強制要求:
ENGINE=NDB 或 ENGINE=NDBCLUSTER。
CREATE TABLE city (
id MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(20) NOT NULL DEFAULT ''
) ENGINE=NDBCLUSTER DEFAULT CHARSET=utf8;
關鍵點:
ENGINE=NDBCLUSTER 宣告此表由 NDB 存儲引擎管理,資料自動分片複寫至資料節點。PRIMARY KEY 避免隱含主鍵開銷。DEFAULT CHARSET=utf8 確保字符集一致性。mysqldump -d 導出純結構 SQL。ENGINE=InnoDB / ENGINE=MyISAM 替換為 ENGINE=NDBCLUSTER。PRIMARY KEY,無則補充 ALTER TABLE ... ADD PRIMARY KEY。Out of memory 錯誤。節點 db2(SQL 節點)寫入:
mysql -uroot test
INSERT INTO city VALUES (1, 'city1'), (2, 'city2');
節點 db3(另一 SQL 節點)讀取:
mysql -uroot test
SELECT * FROM city;
-- 輸出:
-- +----+-------+
-- | id | name |
-- +----+-------+
-- | 1 | city1 |
-- | 2 | city2 |
-- +----+-------+
驗證重點:無需手動同步,NDB 同步複制保證跨 SQL 節點即時一致。
ndb_mgm -e shutdown
此指令協調所有資料節點執行检查點、釋放資源、有序關閉。
mysqladmin -uroot shutdown
嚴禁 直接 kill 進程或關機,會導致資料節點啟動時需漫長恢復過程(重做日誌重放)。
| 指令 | 用途 |
|---|---|
ndb_mgm -e "ALL STATUS" |
查看所有節點狀態(連線、啟動階段、記憶體使用) |
ndb_mgm -e "START BACKUP" |
啟動線上備份(不鎖表、不影響服務) |
ndb_mgm -e "NODE_ID STATUS" |
查看特定節點詳細狀態 |
ndb_restore |
從備份還原資料至叢集 |