Linux · 2012-06-05

mysql cluster 7 动态增加数据节点配置步骤

vi /usr/local/mysql/mysql-cluster/config.ini

[ndbd default]

DataMemory =100M

IndexMemory =100M

NoOfReplicas = 2

DataDir = /usr/local/mysql/var/mysql-cluster

[ndbd]

Id = 1

HostName = 172.20.86.188

 

[ndbd]

Id = 2

HostName = 172.20.86.189

 

[mgm]

HostName = 172.20.86.185

Id = 10

 

[mysqld]

Id=20

HostName = 172.20.86.185

 

2在185上运行ndb_mgm

Ndb_mgm>show

-- NDB Cluster -- Management Client --
ndb_mgm>SHOW
Connected to Management Server at: 172.20.86.185:1186
Cluster Configuration
---------------------
[ndbd(NDB)]    2 node(s)
id=1   @172.20.86.188 (5.1.32-ndb-7.0.5, Nodegroup: 0, Master)
id=2   @172.20.86.189 (5.1.32-ndb-7.0.5, Nodegroup: 0)

[ndb_mgmd(MGM)] 1 node(s)
id=10  @172.20.86.185 (5.1.32-ndb-7.0.5)

[mysqld(API)]  2 node(s)
id=20  @172.20.86.185 (5.1.32-ndb-7.0.5)

 

 

Step 1: Update configuration file

 

[ndbd default]
DataMemory =100M
IndexMemory =100M
NoOfReplicas = 2
DataDir = /usr/local/mysql/var/mysql-cluster

[ndbd]
Id = 1
HostName = 172.20.86.188

[ndbd]
Id = 2
HostName = 172.20.86.189

[ndbd]
Id = 3
HostName=172.20.86.187
 
[ndbd]
Id = 4
HostName=172.20.86.186

[mgm]
HostName = 172.20.86.185
Id = 10

[mysqld]
Id=20
HostName = 172.20.86.185

 

 

Step 2: Restart the management server

Step 2.1停止管理节点

ndb_mgm>10 STOP
Node 10 has shut down.
Disconnecting to allow Management Server to shutdown
shell>

Step 2.2重新加载配置文件

shell>ndb_mgmd -f config.ini --reload
2008-12-08 17:29:23 [MgmSrvr] INFO    -- NDB Cluster Management Server.5.1.34-ndb-7.0.7
2008-12-08 17:29:23 [MgmSrvr] INFO    --Readingcluster configuration from 'config.ini'

Step 2.3查看新集群状态

-- NDB Cluster -- Management Client --
ndb_mgm>SHOW
Connected to Management Server at: 172.20.86.185:1186
Cluster Configuration
---------------------
[ndbd(NDB)]    2 node(s)
id=1   @172.20.86.188 (5.1.32-ndb-7.0.5, Nodegroup: 0, Master)
id=2   @172.20.86.189 (5.1.32-ndb-7.0.5, Nodegroup: 0)
id=3 (not connected, accepting connect from 172.20.86.186)
id=4 (not connected, accepting connect from 172.20.86.187)

[ndb_mgmd(MGM)] 1 node(s)
id=10  @172.20.86.185 (5.1.32-ndb-7.0.5)

[mysqld(API)]  1 node(s)
id=20  @172.20.86.185 (5.1.32-ndb-7.0.5)

 

Step 3: Perform. a rolling restart of the existing data nodes –轮流重新启动连接的数据节点

ndb_mgm>1 RESTART
Node 1: Node shutdown initiated
Node 1: Node shutdown completed, restarting, no start.
Node 1 is being restarted

ndb_mgm> Node 1: Start initiated (version7.0.5)
Node 1: Started (version7.0.5)

ndb_mgm>2 RESTART
Node 2: Node shutdown initiated
Node 2: Node shutdown completed, restarting, no start.
Node 2 is being restarted

 

Step 4: Perform. a rolling restart of all cluster API nodes –轮流重启sql节点

本案仅有一个sql节点

shell>mysqladmin -uroot -ppasswordshutdown
shell>mysqld_safe &

 

Step 5: Perform. an initial start of the new data nodes –初始化新的数据节点

 

在新增的数据节点上186和187上执行

Shell>ndbmtd –initial

或者

Shell>ndbd –initial

登陆管理节点查看集群状态

Connected to Management Server at: 172.20.86.185:1186
Cluster Configuration
---------------------
[ndbd(NDB)]    2 node(s)
id=1   @172.20.86.188 (5.1.32-ndb-7.0.5, Nodegroup: 0, Master)
id=2   @172.20.86.189 (5.1.32-ndb-7.0.5, Nodegroup: 0)
id=3   @172.20.86.186 (5.1.32-ndb-7.0.5,no nodegroup)
id=4   @172.20.86.187 (5.1.32-ndb-7.0.5,no nodegroup)

[ndb_mgmd(MGM)] 1 node(s)
id=10  @172.20.86.185 (5.1.32-ndb-7.0.5)

[mysqld(API)]  2 node(s)
id=20  @172.20.86.185 (5.1.32-ndb-7.0.5)

Step 6: Create a new node group.

ndb_mgm>CREATE NODEGROUP 3,4
Nodegroup 1 created
 
ndb_mgm>SHOW
Connected to Management Server at: 172.20.86.185:1186
Cluster Configuration
---------------------
[ndbd(NDB)]    2 node(s)
id=1   @172.20.86.188 (5.1.32-ndb-7.0.5, Nodegroup: 0, Master)
id=2   @172.20.86.189 (5.1.32-ndb-7.0.5, Nodegroup: 0)
id=3   @172.20.86.186 (5.1.32-ndb-7.0.5,Nodegroup: 1)
id=4   @172.20.86.187 (5.1.32-ndb-7.0.5,Nodegroup: 1)

[ndb_mgmd(MGM)] 1 node(s)
id=10  @172.20.86.185 (5.1.32-ndb-7.0.5)

[mysqld(API)]  1 node(s)
id=20  @172.20.86.185 (5.1.32-ndb-7.0.5)

Step 7: Redistribute cluster data. –数据的重新分配

 

对于新增的数据节点一些访问量较高的数据和比较重要的数据需要从新分配。

 

分发数据命令:

Alter online table ips reorganize partition;

查看数据的分配情况:

ndb_mgm>ALL REPORT MEMORY

Node 1: Data usage is 5%(177 32K pages of total 3200)
Node 1: Index usage is 0%(108 8K pages of total 12832)
Node 2: Data usage is 5%(177 32K pages of total 3200)
Node 2: Index usage is 0%(108 8K pages of total 12832)
Node 3: Data usage is 0%(0 32K pages of total 3200)
Node 3: Index usage is 0%(0 8K pages of total 12832)
Node 4: Data usage is 0%(0 32K pages of total 3200)
Node 4: Index usage is 0%(0 8K pages of total 12832)

或者

shell>ndb_desc -c 192.168.0.10 -d n ips -p
-- ips --
Version: 1
Fragment type: 9
K Value: 6
Min load factor: 78
Max load factor: 80
Temporary table: no
Number of attributes: 6
Number of primary keys: 1
Length of frm data: 340
Row Checksum: 1
Row GCI: 1
SingleUserMode: 0
ForceVarPart: 1
FragmentCount: 2
TableStatus: Retrieved
-- Attributes --
id Bigint PRIMARY KEY DISTRIBUTION KEY AT=FIXED ST=MEMORY AUTO_INCR
country_code Char(2;latin1_swedish_ci) NOT NULL AT=FIXED ST=MEMORY
type Char(4;latin1_swedish_ci) NOT NULL AT=FIXED ST=MEMORY
ip_address Varchar(15;latin1_swedish_ci) NOT NULL AT=SHORT_VAR ST=MEMORY
addresses Bigunsigned NULL AT=FIXED ST=MEMORY
date Bigunsigned NULL AT=FIXED ST=MEMORY

-- Indexes --
PRIMARY KEY(id) - UniqueHashIndex
PRIMARY(id) - OrderedIndex

-- Per partition info --
Partition  Row count  Commit count Frag fixed memory  Frag varsized memory
0          26086      26086        1572864            557056
1          26329      26329        1605632            557056

NDBT_ProgramExit: 0 - OK

You can cause the data to be redistributed among all of the data nodes by performing, for eachNDBCLUSTERtable, anALTER ONLINE TABLE ... REORGANIZE PARTITIONstatement in themysqlclient. After issuing the statementALTER ONLINE TABLE ips REORGANIZE PARTITION, you can see usingndb_descthat the data for this table is now stored using 4 partitions, as shown here (with the relevant portions of the output in bold type):

shell>ndb_desc -c 172.20.86.185 -d n ips -p
-- ips --
Version: 16777217
Fragment type: 9
K Value: 6
Min load factor: 78
Max load factor: 80
Temporary table: no
Number of attributes: 6
Number of primary keys: 1
Length of frm data: 341
Row Checksum: 1
Row GCI: 1
SingleUserMode: 0
ForceVarPart: 1
FragmentCount: 4
TableStatus: Retrieved
-- Attributes --
id Bigint PRIMARY KEY DISTRIBUTION KEY AT=FIXED ST=MEMORY AUTO_INCR
country_code Char(2;latin1_swedish_ci) NOT NULL AT=FIXED ST=MEMORY
type Char(4;latin1_swedish_ci) NOT NULL AT=FIXED ST=MEMORY
ip_address Varchar(15;latin1_swedish_ci) NOT NULL AT=SHORT_VAR ST=MEMORY
addresses Bigunsigned NULL AT=FIXED ST=MEMORY
date Bigunsigned NULL AT=FIXED ST=MEMORY

-- Indexes --
PRIMARY KEY(id) - UniqueHashIndex
PRIMARY(id) - OrderedIndex

-- Per partition info --
Partition  Row count  Commit count Frag fixed memory  Frag varsized memory
0          12981      52296        1572864            557056
1          13236      52515        1605632            557056
2          13105      13105        819200             294912
3          13093      13093        819200             294912