分类: Mysql/postgreSQL
2013-12-22 07:42:48
分类: LINUX
来源: ChinaUnix博客 日期: 2008.08.06 23:38 (共有条评论) |
一.下面假设这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 从 上下载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 详细参照 |