MYSQL 集群安装配置
撰写人:hx10
日期:2010/7/1  hangzhou
Blog:http://hi.baidu.com/hx10
 
系统:Linux5.5
mysql软件:mysql-cluster-gpl-7.1.4b-linux-i686-glibc23.tar.gz
http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.1/mysql-cluster-gpl-7.1.4b-linux-i686-glibc23.tar.gz/from/http://gd.tuwien.ac.at/db/mysql/
 
数据节点110.80.11.203
数据节点210.80.11.204
管理节点:10.80.11.205
sql节点:10.80.11.20310.80.11.204
 
1.       管理节点的安装
#groupadd mysql
#useradd mysql -g mysql
#mv mysql-cluster-gpl-7.1.4b-linux-i686-glibc23.tar.gz /usr/local/
#cd /usr/local/
#tar zxvf mysql-cluster-gpl-7.1.4b-linux-i686-glibc23.tar.gz
#mv mysql-cluster-gpl-7.1.4b-linux-i686-glibc23 mysql
#chown -R mysql:mysql mysql
#cd mysql
#scripts/mysql_install_db --user=mysql
 
2.       配置管理节点
#mkdir /var/lib/mysql-cluster
#cd /var/lib/mysql-cluster
#vim config.ini
[ndbd default]
NoOfReplicas=2
DataMemory=80M
IndexMemory=18M
[ndb_mgmd]
Id=1
Hostname=10.80.11.205  //管理IP
datadir=/usr/local/mysql/logs
[ndbd]
Id=2
Hostname=10.80.11.203           //数据节点1
datadir=/usr/local/mysql/data/      //数据文件位置
[ndbd]
Id=3
Hostname=10.80.11.204              //数据节点2
datadir=/usr/local/mysql/data/        //数据文件位置
[MYSQLD]
[MYSQLD]
 
3.       安装配置数据节点
这里 2 台机器数据节点安装是相同的 .
#groupadd mysql
#useradd mysql -g mysql
#mv mysql-cluster-gpl-7.1.4b-linux-i686-glibc23.tar.gz /usr/local/
#cd /usr/local/
#tar zxvf mysql-cluster-gpl-7.1.4b-linux-i686-glibc23.tar.gz
#mv mysql-cluster-gpl-7.1.4b-linux-i686-glibc23 mysql
#chown -R mysql:mysql mysql
#cd mysql
#scripts/mysql_install_db --user=mysql
#cp support-files/my-medium.cnf /etc/my.cnf
 #cp support-files/mysql.server /etc/init.d/mysqld
 #vi /etc/my.cnf         
[client]
port           = 3306
socket                = /tmp/mysql.sock
[mysqld]
port           = 3306
socket                = /tmp/mysql.sock
skip-locking
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
log-bin=mysql-bin
binlog_format=mixed
server-id  = 1
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
[myisamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout
[mysqld]
datadir=/usr/local/mysql/data/
ndbcluster
ndb-connectstring=10.80.11.205
[mysql_cluster]
ndb-connectstring=10.80.11.205
[ndb_mgm]
connect-string=10.80.11.205
[ndb_mgmd]
config-file=/var/lib/mysql-cluster/config.ini
 
4.       启动服务
在管理节点启动相关服务
#/usr/local/mysql/bin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini
#netstat –lntpu
看到 1186 开放说明启动正常
 
 
2 个数据节点启动相关服务
#/usr/local/mysql/bin/ndbd --initial
#service mysqld start
 
看到 nbdb 服务和 3306 端口说明启动 OK
 
5 .功能测试
在管理节点上查看服务状态
#/usr/local/mysql/bin/ndb_mgm
ndb_mgm> show
MYSQL集群安装配置_第1张图片
可以看到这里的数据节点、管理节点、 sql 节点都是正常的
测试一:
现在我们在其中一个数据节点上进行相关数据库的创建 , 然后到另外一个数据节点上看看数据是否同步
在数据节点 1 上执行:
# /usr/local/mysql/bin/mysql -u root –p
mysql>show databases;
mysql>create database aa;
mysql>use aa
mysql>CREATE TABLE ctest2 (i INT) ENGINE=NDB;  // 这里必须指定数据库表的引擎为 NDB, 否则同步失败
mysql> INSERT INTO ctest2 () VALUES (1);
mysql> SELECT * FROM ctest2;
然后在数据节点 2 上看数据是否同步过来了
 
经过测试,在非 master 上创建数据,可以同步到 master
查看表的引擎是不是 NDB >show create table 表名;
 
测试二、 关闭一个数据节点 ,在另外一个节点写输入,开启关闭的节点,看数据是否同步过来
首先把数据节点 1 重启,然后在节点 2 上添加数据
在节点 2 上操作如下:
mysql>create database bb;
mysql>use bb
mysql>CREATE TABLE ctest3 (i INT) ENGINE=NDB;
mysql> INSERT INTO ctest2 () VALUES (3333);
mysql> SELECT * FROM ctest2;
此时在管理节点上看到信息如下:
MYSQL集群安装配置_第2张图片
等节点 1 启动完毕,启动节点 1 的服务
#/usr/local/mysql/bin/ndbd --initial
#service mysqld start
然后登录进去查看数据
# /usr/local/mysql/bin/mysql -u root –p
可以看到数据已经同步过来了,说明数据可以双向同步了。
发现一个问题,让 master 重启后,备节点就变成 master 了,当以前的 master 启动后,不会主动切换回 master 的角色。