一、实验环境
管理节点:192.168.50.219
数据节点:192.168.50.217,192.168.50.218
sql节点:192.168.50.216
装ndb前,先删除原先系统自带mysql;
各个节点的安装顺序“管理节点—数据节点—SQL节点”;
 
1、安装管理节点
       [root@server1 tarbag]# groupadd mysql
      [root@server1 tarbag]# useradd -g mysql mysql
      
[root@server1 tarbag]# tar -zxvf mysql-cluster-gpl-7.0.9-linux-i686-glibc23.tar.gz -C ../software/
      [root@server1 tarbag]# cd ../software/mysql-cluster-gpl-7.0.9-linux-i686-glibc23/bin/
      [root@server1 bin]# cp -rp ndb* /usr/local/bin/
      [root@server1 bin]# mkdir -p /usr/local/mysql-cluster
      [root@server1 bin]# cd /usr/local/mysql-cluster/
      [root@server1 mysql-cluster]# cp /usr/local/src/software/mysql-cluster-gpl-7.0.9-linux-i686-glibc23/support-files/config.medium.ini ./config.ini
      [root@server1 mysql-cluster]# vim config.ini
        [NDBD DEFAULT]
       NoOfReplicas=2
       DataDir=/mydata
       DataMemory=200M
       IndexMemory=50M
      MaxNoOfConcurrentTransactions=500
      MaxNoOfConcurrentOperations=1000
      MaxNoOfOrderedIndexes=256
      MaxNoOfUniqueHashIndexes=128
      MaxNoOfAttributes=1000
      MaxNoOfTables=100
      TimeBetweenWatchDogCheck=15000
      NoOfFragmentLogFiles=200
      [NDB_MGMD DEFAULT]
      PortNumber=1186
      DataDir=/mydata
     ArbitrationRank=1
     [ndb_mgmd]
     id=1
     HostName=192.168.50.219
     [ndbd]
     Id=2
     HostName=192.168.50.217
     [ndbd]
     Id=3
     HostName=192.168.50.218
     [mysqld]
     Id=4 
     HostName=192.168.50.216
    [mysqld]    //预留1个空的mysqld,数量与sql节点数量一致,数据库恢复时使用
     [tcp default]
     PortNumber=63132
   [root@server1 mysql-cluster]# cp /usr/local/src/software/mysql-cluster-gpl-7.0.9-linux-i686-glibc23/support-files/my-huge.cnf  /etc/my.cnf
   [root@server1 ~]# vim /etc/my.cnf 
     [mysqld]
     ndbcluster
     ndb-connectstring = 192.168.50.219
     [mysql_cluster]
     ndb-connectstring = nodeid=1,192.168.50.219
   [root@server1 ~]# /usr/local/bin/ndb_mgmd -f /usr/local/mysql-cluster/config.ini  --configdir=/usr/local/mysql-cluster
  [root@server1 /]# netstat -ntpl |grep ndb
tcp        0      0 0.0.0.0:1186                0.0.0.0:*                   LISTEN   2561/ndb_mgmd 
  [root@server1 mysql-cluster]# vim /mydata/ndb_1_cluster.log
2010-04-30 13:39:58 [MgmtSrvr] INFO     -- Got initial configuration from '/usr/local/mysql-cluster/config.ini', will try to set it when all ndb_mgmd(s)
 started
2010-04-30 13:39:58 [MgmtSrvr] INFO     -- Mgmt server state: nodeid 1 reserved for ip 192.168.50.219, m_reserved_nodes 00000000000000000000000000000000
00000000000000000000000000000002.
2010-04-30 13:39:58 [MgmtSrvr] INFO     -- Node 1: Node 1 Connected
2010-04-30 13:39:58 [MgmtSrvr] INFO     -- Id: 1, Command port: *:1186
2010-04-30 13:39:58 [MgmtSrvr] INFO     -- Starting initial configuration change
2010-04-30 13:39:58 [MgmtSrvr] INFO     -- Configuration 1 commited
2010-04-30 13:39:58 [MgmtSrvr] INFO     -- Config change completed! New generation: 1
管理节点安装完毕
 
2、数据节点安装
  [root@server2 ~]# groupadd mysql
  [root@server2 ~]# useradd -g mysql mysql
  wget http://download.softagency.net/MySQL/Downloads/MySQL-Cluster-7.0/mysql-cluster-gpl-7.0.9-linux-i686-glibc23.tar.gz
  [root@server2 tarbag]# tar -zxvf mysql-cluster-gpl-7.0.9-linux-i686-glibc23.tar.gz -C ../software
  [root@server2 tarbag]# mv ../software/mysql-cluster-gpl-7.0.9-linux-i686-glibc23/  /usr/local/mysql
  [root@server2 tarbag]# cp /usr/local/mysql/support-files/my-huge.cnf /etc/my.cnf
  [root@server2 ~]# vim /etc/my.cnf
    [mysqld]
   datadir=/mydata
   ndbcluster
   ndb-connectstring = 192.168.50.219
   [mysqlhotcopy]
   interactive-timeout
   [mysql_cluster]
   ndb-connectstring= nodeid=2,192.168.50.219
  [root@server2 ~]# mkdir /mydata
  [root@server2 ~]# chown -R mysql.mysql /mydata/
  [root@server2 ~]# vim  .bash_profile
PATH=$PATH:$HOME/bin:/usr/local/mysql/bin
export PATH
  [root@server2 ~]# source .bash_profile
  [root@server2 ~]# /usr/local/mysql/bin/ndbd --initial
2010-05-01 13:36:37 [ndbd] INFO     -- Configuration fetched from '192.168.50.219:1186', generation: 1
  [root@server2 ~]# netstat -ntpl |grep ndb
tcp        0      0 192.168.50.215:63132        0.0.0.0:*                   LISTEN      12177/ndbd
  设置开机启动
[root@server2 ~]# vi /etc/rc.local
/usr/local/mysql/bin/ndbd

数据结点安装完毕
 
3、sql节点安装
  [root@server4 ~]# groupadd mysql
  [root@server4 ~]# useradd -g mysql mysql
  [root@server4 ~]# cd /usr/local/src/tarbag/
  wget  
http://download.softagency.net/MySQL/Downloads/MySQL-Cluster-7.0/mysql-cluster-gpl-7.0.9-linux-i686-glibc23.tar.gz
  [root@server4 tarbag]# tar -zxvf mysql-cluster-gpl-7.0.9-linux-i686-glibc23.tar.gz -C /usr/local/
  [root@server4 tarbag]# cd /usr/local/
  [root@server4 local]# mv mysql-cluster-gpl-7.0.9-linux-i686-glibc23/ mysql
  [root@server4 local]# cp mysql/support-files/my-huge.cnf /etc/my.cnf
  [root@server4 local]# vim  /etc/my.cnf |uniq
    datadir = /mydata
    ndbcluster
    ndb-connectstring = 192.168.50.219
  [mysql_cluster]
    ndb-connectstring= nodeid=4,192.168.50.219
  [root@server4 ~]# cd /usr/local/mysql/
  [root@server4 mysql]# ./scripts/mysql_install_db --user=mysql
  [root@server4 mysql]# cp support-files/mysql.server /etc/init.d/mysqld
  [root@server4 mysql]# chmod +x /etc/init.d/mysqld
  [root@server4 mysql]# chkconfig mysqld on
  [root@server4 mysql]# service mysqld start
   Starting MySQL.. SUCCESS! 
  [root@server4 mydata]# mysql
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 3
    Server version: 5.1.39-ndb-7.0.9-cluster-gpl-log MySQL Cluster Server (GPL)

    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

    mysql>
sql节点安装完毕

 二、 MySQL cluster备份恢复
 
1、打开管理节点的ndb_mgm控制台,输入start backup backupID(backupid用任意数字,比如日期20100106,注意,不能和以前的备份ID相同)。在所有存储节点的$datadir/BACKUP下会生成相应备份目录BACKUP-backupid
 
2、在ndb_mgm中输入shutdown来关闭所有的存储节点和所有的管理节点
 
3、在所有的sql节点中删除数据库,留下系统自带的
 
4、按顺序启动mysql集群
     4.1启动管理节点
     /usr/local/bin/ndb_mgmd -f /usr/local/mysql-cluster/config.ini --configdir=/usr/local/mysql-cluster --initial  //必须加上initial参数,否则在存储节点恢复是时出现以下错误
   Nodeid = 3
Backup Id = 20100510
backup path = /mydata/BACKUP/BACKUP-20100510/
Opening file '/mydata/BACKUP/BACKUP-20100510/BACKUP-20100510.3.ctl'
Backup version in files: ndb-6.3.11 ndb version: mysql-5.1.39 ndb-7.0.9
Stop GCP of Backup: 136000128
Configuration error: Error : Could not alloc node id at 192.168.50.219 port 1186: Id 3 configured as ndbd(NDB), connect attempted as mysqld(API).
Failed to initialize consumers
NDBT_ProgramExit: 1 - Failed
  4.2启动存储节点
   /usr/local/mysql/bin/ndbd --initial //必须加上initial参数
 4.3 启动sql节点
   /usr/local/mysql/support-files/mysql.server  restart
 
5、在存储节点Master(192.168.50.217)上执行ndb_restore还原命令
  /usr/local/mysql/bin/ndb_restore -n2 -b20100510 -r -m --backup_path=/mydata/BACKUP/BACKUP-20100510/ --ndb-connectstring=nodeid=5,192.168.50.219
命令解释:
              -n 当前存储节点的nodeid
              -b 要还原的backupid
              -r 数据开关,也就是还原数据了
              -m 还原表结构
              --ndb-connectstring=nodeid=5,192.168.50.219  //5为config.ini预留的mysql节点
 
6、在第二个节点(192.168.50.218)上执行还原命令
   /usr/local/mysql/bin/ndb_restore -n3 -b20100510 -r -d --backup_path=/mydata/BACKUP/BACKUP-20100510/ --ndb-connectstring=nodeid=5,192.168.50.219
              在Master备份的时候要加 -m 开关。
             在Slave上要加-d 而且不要-m开关。
 
7、在sql节点上创建需要还原的数据库,mysql必须重新建立SCHEMA
      create database 库名;