MySQL集群配

一.下面假设这3台服务的情况: 
Server1: 172.18.3.205 
Server2: 172.18.3.207 
Server3: 172.18.3.208 
Servers1和Server2作为实际配置MySQL集群的服务器。对于作为管理节点的Server3则要求较低,只需对Server3的系统进行很小的调整并且无需安装MySQL,Server3可以使用一台配置较低的计算机并且可以在Server3同时运行其他服务。
====================================



二、在Server1和Server2上安装MySQL 

http://www.mysql.com
上下载mysql-max-4.1.22-pc-linux-gnu-i686.tar.gz
注意:必须是max版本的MySQL,Standard版本不支持集群部署! 

以下步骤需要在Server1和Server2上各做一次 
# cd /usr/local/ 
# groupadd mysql 
# useradd -g mysql mysql 
# tar -zxvf mysql-max-4.1.22-pc-linux-gnu-i686.tar.gz 
# mv mysql-max-4.1.22-pc-linux-gnu-i686
# cd mysql 
# scripts/mysql_install_db --user=mysql 
# chown -R root . 
# chown -R mysql data 
# chgrp -R mysql . 

此时不要启动MySQL!
========================================================


三、安装并配置管理节点服务器(Server3) 
# tar -zxvf mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz 
# rm mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz 
# cd mysql-max-4.1.9-pc-linux-gnu-i686 
# mv bin/ndb_mgm /usr/bin/  
# mv bin/ndb_mgmd /usr/bin/ 
#cd /usr/bin
# chmod +x ndb_mg* 


现在开始为这台管理节点服务器建立配置文件: 
# mkdir /var/lib/mysql-cluster 
# cd /var/lib/mysql-cluster 
# vi config.ini 
[NDBD DEFAULT]
NoOfReplicas=2
[MYSQLD DEFAULT]
[NDB_MGMD DEFAULT]
[TCP DEFAULT]
# Managment Server
[NDB_MGMD]
HostName=172.18.3.208
# Storage Engines 
[NDBD]
HostName=172.18.3.205
DataDir=/var/lib/mysql-cluster
[NDBD]
HostName=172.18.3.207
DataDir=/var/lib/mysql-cluster
[MYSQLD] 
[MYSQLD]
保存退出后,启动管理节点服务器Server3: 
/usr/bin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini

注释: Cluster管理节点的默认端口是1186,数据节点的默认端口2202。从MySQL 5.0.3开始,该限制已被放宽, Cluster能够根据空闲的端口自动地为数据节点分配端口。如果你的版本低于5.0.22,请注意这个细节。

启动管理节点后应该注意,这只是管理节点服务,并不是管理终端。因而你看不到任何关于启动后的输出信息。 
=============================================================

四、配置集群服务器并启动MySQL 
在Server1和Server2中都需要进行如下改动:

[root@localhost local]# cat /etc/my.cnf 
[mysqld] 
ndbcluster 
ndb-connectstring=172.18.3.208  
[mysql_cluster] 
ndb-connectstring=172.18.3.208 

保存退出后,建立数据目录并启动MySQL
# mkdir /var/lib/mysql-cluster 
# cd /var/lib/mysql-cluster 
# /usr/local/mysql/bin/ndbd --initial 


注意,仅应在首次启动ndbd时,或在备份/恢复数据或配置文件发生变化后重启ndbd时使用“--initial”参数。因为该参数会使节点删除由早期ndbd实例创建的、用于恢复的任何文件,包括用于恢复的日志文件。
如果不是第一次启动,直接运行如下命令即可


=============================================

在 server1 server2 启动mysql
/usr/local/mysql/bin/mysqld_safe --skip-grant-tables &



==================================
注: /usr/local/mysql/bin/mysqld_safe &  这样起有问题
[root@localhost ~]# tail -f /usr/local/mysql/data/localhost.localdomain.err
070723 21:49:58  mysqld started
070723 21:50:00  InnoDB: Started; log sequence number 0 43634
070723 21:50:00 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist
070723 21:50:00  mysqld ended
============================================

测试:在server1上执行
# /usr/local/mysql/bin/mysql -u root -p 
> use test; 
> CREATE TABLE ctest (i INT) ENGINE=NDBCLUSTER; 
> INSERT INTO ctest () VALUES (1); 
> SELECT * FROM ctest; 
在server2查询有该记录.证明配置成功




在管理节点上查看
[root@localhost bin]# /usr/bin/ndb_mgm
-- NDB Cluster -- Management Client --
ndb_mgm> show
Connected to Management Server at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)]     2 node(s)
id=2    @172.18.3.205  (Version: 4.1.22, Nodegroup: 0, Master)
id=3    @172.18.3.207  (Version: 4.1.22, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1    @172.18.3.208  (Version: 4.1.22)
[mysqld(API)]   2 node(s)
id=4    @172.18.3.207  (Version: 4.1.22)
id=5    @172.18.3.205  (Version: 4.1.22)
====================================================
五、启动MySQL Cluster
较为合理的启动顺序是,首先启动管理节点服务器,然后启动存储节点服务器,最后才启动SQL节点服务器:
上述配置把存储节点和sql节点放到同台服务器上了。
==================================================

六.

以下配置把存储节点和sql节点分开来配置
172.18.3.208 ----->管理节点
172.18.3.205 ----->存储节点
172.18.3.207 ----->存储节点
172.18.3.209 ----->sql节点
172.18.3.210 ----->sql节点




管理节点 172.18.3.208 
[root@localhost mysql-cluster]# cat /var/lib/mysql-cluster/config.ini 
[NDBD DEFAULT]
NoOfReplicas=2
[MYSQLD DEFAULT]
[NDB_MGMD DEFAULT]
[TCP DEFAULT]
# Managment Server
[NDB_MGMD]
HostName=172.18.3.208
# Storage Engines 
[NDBD]
HostName=172.18.3.205
DataDir=/var/lib/mysql-cluster
[NDBD]
HostName=172.18.3.207
DataDir=/var/lib/mysql-cluster
[MYSQLD] 
hostname=172.18.3.209
[MYSQLD] 
hostname=172.18.3.210

启动管理节点 /usr/bin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini

数据节点 172.18.3.205
[root@localhost ~]# cat /etc/my.cnf
[mysqld] 
ndbcluster 
ndb-connectstring=172.18.3.208  
[mysql_cluster] 
ndb-connectstring=172.18.3.208


数据节点 172.18.3.208
[root@localhost test]# cat /etc/my.cnf
[mysqld]
ndbcluster
ndb-connectstring=172.18.3.208
[mysql_cluster]
ndb-connectstring=172.18.3.208
启动数据节点 /usr/local/mysql/bin/ndbd --initial

sql节点 172.18.3.209
[root@localhost data]# cat /etc/my.cnf
[mysqld]
basedir         = /usr/local/mysql/
datadir         = /usr/local/mysql/data
user            = root
port            = 3306
socket          = /tmp/mysql.sock
ndbcluster
ndb-connectstring=172.18.3.208
[MYSQL_CLUSTER]
ndb-connectstring=172.18.3.208

sql节点 172.18.3.210
[root@localhost data]# cat /etc/my.cnf
[mysqld]
basedir         = /usr/local/mysql/
datadir         = /usr/local/mysql/data
user            = root
port            = 3306
socket          = /tmp/mysql.sock
ndbcluster
ndb-connectstring=172.18.3.208
[MYSQL_CLUSTER]
ndb-connectstring=172.18.3.208


启动sql节点  /usr/local/mysql/bin/mysqld_safe --skip-grant-tables &




在管理节点 172.18.3.208  查看信息
[root@localhost mysql-cluster]# /usr/bin/ndb_mgm
-- NDB Cluster -- Management Client --
ndb_mgm> show
Connected to Management Server at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)]     2 node(s)
id=2    @172.18.3.205  (Version: 4.1.22, Nodegroup: 0, Master)
id=3    @172.18.3.207  (Version: 4.1.22, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1    @172.18.3.208  (Version: 4.1.22)
[mysqld(API)]   2 node(s)
id=4    @172.18.3.209  (Version: 4.1.22)
id=5    @172.18.3.210  (Version: 4.1.22)


启动先后顺序:管理节点 数据节点 sql节点


在sql节点172.18.3.209插入如下的数据

[root# mysql -uroot test
mysql> create table city(
mysql> id mediumint unsigned not null auto_increment primary key,
mysql> name varchar(20) not null default ''
mysql> ) engine = ndbcluster default charset utf8;
mysql> insert into city values(1, 'city1');
mysql> insert into city values(2, 'city2');
在172.18.3.210上查询
root# mysql -uroot test
mysql> select * from city;
+-----------+
|id | name  |
+-----------+
|1  | city1 |
+-----------+
|2  | city2 |
+-----------+
七、安全关闭
要想关闭 Cluster,可在MGM节点所在的机器上,在Shell中简单地输入下述命令:root# /usr/local/mysql/ndb_mgm -e shutdown
运行以下命令关闭SQL节点的mysqld服务:
root# /usr/local/mysql/bin/mysqladmin -uroot shutdown

详细参照
http://imysql.cn/?q=node/96
http://www.yuanma.org/data/2006/0911/article_1501.htm




原文地址:https://www.cnblogs.com/firmy/p/2304264.html