配置高可用性的MySQL服务器负载均衡群集 (2)
时间:2008-05-08 来源:lovegqin
然后我们启动群集管理服务器:
loadb1.test.com:
ndb_mgmd -f /var/lib/mysql-cluster/config.ini
我们应该也需要在服务器启动时能够自动启动管理服务器,所以我们创建了一个非常简单的初始化
脚本和相应的启动连接:
loadb1.test.com:
echo ‘ndb_mgmd -f /var/lib/mysql-cluster/config.ini’ > /etc/init.d/ndb_mgmd
chmod 755 /etc/init.d/ndb_mgmd
update-rc.d ndb_mgmd defaults
三 配置MySQL群集节点(存储节点)
现在我们将分别在sql1.test.com和sql2.test.com上安装mysql-max-5.0.19:
sql1.example.com / sql2.example.com:
groupadd mysql
useradd -g mysql mysql
cd /usr/local/
wget http://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-max-5.0.19-linux-i686-\
glibc23.tar.gz/from/http://www.mirrorservice.org/sites/ftp.mysql.com/
tar xvfz mysql-max-5.0.19-linux-i686-glibc23.tar.gz
ln -s mysql-max-5.0.19-linux-i686-glibc23 mysql
cd mysql
scripts/mysql_install_db –user=mysql
chown -R root:mysql .
chown -R mysql data
cp support-files/mysql.server /etc/init.d/
chmod 755 /etc/init.d/mysql.server
update-rc.d mysql.server defaults
cd /usr/local/mysql/bin
mv * /usr/bin
cd ../
rm -fr /usr/local/mysql/bin
ln -s /usr/bin /usr/local/mysql/bin
然后我们在每个节点上创建MySQL配置文件/etc/my.cnf :
vi /etc/my.cnf
–
[mysqld]
ndbcluster
# IP address of the cluster management node
ndb-connectstring=192.168.0.103
[mysql_cluster]
# IP address of the cluster management node
ndb-connectstring=192.168.0.103
–
确认你在群集管理服务器中输入的是正确的IP地址。
下一步我们分别在每个群集节点上创建数据目录和启动MySQL服务器:
sql1.test.com / sql2.test.com:
mkdir /var/lib/mysql-cluster
cd /var/lib/mysql-cluster
ndbd –initial
/etc/init.d/mysql.server start
(请记住:我们只是在第一次启动MySQL时或loadb1.test.com上面的
/var/lib/mysql-cluster/config.ini发生改变时,才使用ndbd –initial)
现在,是时候给MySQL root帐号设置密码了:
sql1.test.com / sql2.test.com:
mysqladmin -u root password yourrootsqlpassword
我们需要在服务器启动时,启动群集节点,所以我们创建一个ndbd初始化脚本和相应的
系统启动连接:
sql1.test.com / sql2.test.com:
echo ‘ndbd’ > /etc/init.d/ndbd
chmod 755 /etc/init.d/ndbd
update-rc.d ndbd defaults
四 测试MySQL群集
我们的MySQL群集配置工作已经完成,现在是测试它的时间了。在群集管理服务器
(loadb1.test.com)上,运行群集管理客户端ndb_mgm来检查群集节点是否连接:
loadb1.test.com:
ndb_mgm
你将会看到这些:
– NDB Cluster — Management Client –
ndb_mgm>
在命令行输入 show;
show;
输出的信息应该是这样的:
ndb_mgm> show;
Connected to Management Server at: localhost:1186
Cluster Configuration
———————
[ndbd(NDB)] 2 node(s)
id=2 @192.168.0.101 (Version: 5.0.19, Nodegroup: 0, Master)
id=3 @192.168.0.102 (Version: 5.0.19, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.0.103 (Version: 5.0.19)
[mysqld(API)] 2 node(s)
id=4 @192.168.0.101 (Version: 5.0.19)
id=5 @192.168.0.102 (Version: 5.0.19)
ndb_mgm>
如果你看到你的节点都已经连接上了。那么一切都很顺利!
输入
quit;
退出 ndb_mgm 客户端控制台。
现在我们在sql1.test.com节点上创建一个测试数据库,并创建一个测试表,
填入一些测试数据:
mysql -u root -p
CREATE DATABASE mysqlclustertest;
USE mysqlclustertest;
CREATE TABLE testtable (i INT) ENGINE=NDBCLUSTER;
INSERT INTO testtable () VALUES (1);
SELECT * FROM testtable;
quit;
(看看上面这个CREATE语句:我们想群集起来的所有数据库的表,必须使用 ENGINE=NDBCLUSTER!
如果你使用其它的ENGINE,那么群集将不会工作!)
SELECT出的结果应该是:
mysql> SELECT * FROM testtable;
+——+
| i |
+——+
| 1 |
+——+
1 row in set (0.03 sec)
现在我们在sql2.test.com节点上创建相同的数据库(是,我们仍然要创建它,但是在testtable创建之后
数据将会被复制到sql2.test.com,因为testtable是使用ENGINE=NDBCLUSTER):
sql2.test.com:
mysql -u root -p
CREATE DATABASE mysqlclustertest;
USE mysqlclustertest;
SELECT * FROM testtable;
SELECT出的结果应该是和上面的sql1.test.com的结果相同:
mysql> SELECT * FROM testtable;
+——+
| i |
+——+
| 1 |
+——+
1 row in set (0.04 sec)
我们看到数据已经从sql1.test.com节点复制到sql2.example.com节点了。现在我们
向testtable中插入另外一行:
sql2.test.com:
INSERT INTO testtable () VALUES (2);
quit;
现在让我们回到sql1.example.com节点上,检查是否能够看见新插入的那一行:
sql1.example.com:
mysql -u root -p
USE mysqlclustertest;
SELECT * FROM testtable;
quit;
以上文章转载于: http://database.ccidnet.com/