首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Ubuntu 9.04 上部署 MySQL Cluster 完整教學:管理節點、資料節點、SQL 節點三層架構

     編輯:MySQL 資料庫相關知識

架構規劃

角色主機名IP進程
管理節點Server3192.168.245.13ndb_mgmd
資料節點Server1192.168.245.11ndbd
資料節點Server2192.168.245.12ndbd
SQL 節點Server1/2/3同上mysqld --ndb-cluster

複製因子 NoOfReplicas=2,兩資料節點互為備份,單點故障不丟資料。

三節點共同 my.cnf 設定

[mysqld]
ndbcluster
ndb-connectstring=192.168.245.13

[mysql_cluster]
ndb-connectstring=192.168.245.13

管理節點專屬 ndb_mgmd.cnf

[NDBD DEFAULT]
NoOfReplicas=2
DataMemory=10M
IndexMemory=25M
MaxNoOfTables=256
MaxNoOfOrderedIndexes=256
MaxNoOfUniqueHashIndexes=128

[NDB_MGMD]
Id=1
HostName=192.168.245.13
DataDir=/var/lib/mysql-cluster

[NDBD]
Id=2
HostName=192.168.245.11
DataDir=/var/lib/mysql-cluster

[NDBD]
Id=3
HostName=192.168.245.12
DataDir=/var/lib/mysql-cluster

[MYSQLD]
Id=4
HostName=192.168.245.13

[MYSQLD]
Id=5
HostName=192.168.245.11

[MYSQLD]
Id=6
HostName=192.168.245.12

啟動順序(關鍵)

  1. 管理節點:sudo /etc/init.d/mysql-ndb-mgm start
  2. 資料節點:sudo /etc/init.d/mysql-ndb start(兩台同步啟動)
  3. SQL 節點:sudo /etc/init.d/mysql start(三台)

驗證叢集狀態

ndb_mgm -e show
# 輸出應顯示:
# [ndbd(NDB)] 2 node(s) - 皆為 STARTED
# [ndb_mgmd(MGM)] 1 node(s)
# [mysqld(API)] 3 node(s)

功能測試

-- 任一 SQL 節點建表(必須指定 ENGINE=NDBCLUSTER)
CREATE DATABASE cluster;
USE cluster;
CREATE TABLE city (
    id MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(20) NOT NULL DEFAULT ''
) ENGINE=NDBCLUSTER DEFAULT CHARSET=utf8;

INSERT INTO city VALUES (1, 'Shenzhen'), (2, 'Guangdong');

-- 另一 SQL 節點查詢
SHOW DATABASES;  -- 看見 cluster
USE cluster;
SELECT * FROM city;  -- 看見同步資料

三大必知限制

  1. 表必須用 ENGINE=NDB/NDBCLUSTER,匯入腳本需批次替換 ENGINE 子句。
  2. 每個 NDB 表必須有主鍵,否則引擎自動產生隱藏主鍵(佔記憶體),易導致 OOM。
  3. CREATE DATABASE 不會自動同步到其他 SQL 節點,需在各節點手動 CREATE DATABASE 再 USE 才能看見同步表。

常見錯誤與解決

Server ID 衝突:The slave I/O thread stops because master and slave have equal MySQL Server ids
→ 修改各節點 my.cnf server-id 為唯一值,重啟。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved