mysql 双机负载架设方法
server1:192.168.0.201
server2:192.168.0.202
server3:192.168.0.206
Server1和Server2作为实际配置Mysql负载的服务器。对于作为管理节点的Server3则要求较低,只需要对Server3的系统进行很小的调整,并且
无需安装Mysql,Server3可以使用一台配置较低的计算机并且可以在Server3同时运行其它服务。
在Server1和Server2上安装Mysql
注意:需要mysql的max版本!
以下步骤需要在Server1和Server2上各做一次
首先下载mysql-max-5.0.27-linux-i686-glibc23.tar.gz(这个大家可以百度一下不需要我提供下载地址了吧?)
将mysql-max-5.0.27-linux-i686-glibc23.tar.gz下载到Server1和Server2
这里我放置在/usr/local/目录下了。
进行安装:
-----------SSH连接到server1和server2-------------
[root@server1 /]# cd /usr/local //进入local目录
[root@local /]# groupadd mysql //建立mysql用户组
[root@local /]# useradd -g mysql mysql //创建mysql帐号
[root@local /]# tar -zxvf mysql-max-5.0.27-linux-i686-glibc23.tar.gz //解压缩mysql
[root@local /]# rm -f mysql-max-5.0.27-linux-i686-glibc23.tar.gz //删除压缩包
[root@local /]# mv mysql-max-5.0.27-linux-i686-glibc23 mysql //将文件夹重新命名为mysql
[root@local /]# cd mysql //进入解压好的mysql目录
[root@mysql /]# scripts/mysql_install_db --user=mysql 安装mysql
[root@mysql /]# chown -R root . //将文件属性归属给root用户
[root@mysql /]# chown -R mysql data //这个不用说了
[root@mysql /]# chgrp -R mysql . //变更目录的所属群组为mysql
[root@mysql /]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld //将mysql.server拷贝mysqld
[root@mysql /]# chmod +x /etc/rc.d/init.d/mysqld //给予文件或目录执行权限
[root@mysql /]# cp support-files/my-large.cnf /etc/my.cnf //也是拷贝
[root@mysql /]# chkconfig --add mysqld //将mysqld添加为系统服务
----------------此时不要启动mysql-----------------
----------------安装配置管理节点服务器(Server3)
[root@server3 /]# mkdir /usr/src/mysql-mgm //创建目录mysql-mgm
将mysql-max-5.0.27-linux-i686-glibc23.tar.gz上传到mysql-mgm目录下
[root@server3 /]# cd /usr/src/mysql-mgm //进入mysql-mgm目录
[root@mysql-mgm /]# tar -zxvf mysql-max-5.0.27-linux-i686-glibc23.tar.gz //解压
[root@mysql-mgm /]# rm mysql-max-5.0.27-linux-i686-glibc23.tar.gz //删除
[root@mysql-mgm /]# cd mysql-max-5.0.27-linux-i686-glibc23 //....
[root@mysql-max-5.0.27-linux-i686-glibc23 /]# mv bin/ndb_mgm .
[root@mysql-max-5.0.27-linux-i686-glibc23 /]# mv bin/ndb_mgmd .
[root@mysql-max-5.0.27-linux-i686-glibc23 /]# chmod +x ndb_mg*
[root@mysql-max-5.0.27-linux-i686-glibc23 /]# mv ndb_mg* /usr/bin
[root@mysql-max-5.0.27-linux-i686-glibc23 /]# cd //回到服务器根目录
[root@mysql-max-5.0.27-linux-i686-glibc23 /]# rm -rf /usr/src/mysql-mgm
----------------为这台管理节点服务器建立配置文件--------
[root@server1 /]# mkdir /var/lib/mysql-cluster
[root@server1 /]# cd /var/lib/mysql-cluster
[root@mysql-cluster /]# vi config.ini //创建编辑config.ini文件
[NDBD DEFAULT]
NoOfReplicas=2 //
[MYSQLD DEFAULT]
[NDB_MGMD DEFAULT]
[TCP DEFAULT]
# Managment Server
[NDB_MGMD]
HostName=192.168.0.206
# Storage Engines
[NDBD]
HostName=192.168.0.201
DataDir= /var/lib/mysql-cluster
[NDBD]
HostName=192.168.0.202
DataDir=/var/lib/mysql-cluster
[MYSQLD]
[MYSQLD] //此处注意,有几个节点服务器就要增加几个[MYSQLD]
按ESC键后输入:wq 回车 此为保存退出
[root@mysql-cluster /]# ndb_mgmd //启动节点服务器 注:最好在/var/lib/mysql-cluster目录下输入ndb_mgmd执行
接下来需要配置集群服务器并启动mysql
在Server1和Server2中都需要进行如下操作
[root@server1 /]# vi /etc/my.cnf 将此文件原内容清空
# 输入如下内容
[mysqld]
ndbcluster
ndb-connectstring=192.168.0.206
[mysql_cluster]
ndb-connectstring=192.168.0.206
按ESC键后输入:wq 回车 此为保存退出
[root@server1 /]# mkdir /var/lib/mysql-cluster
[root@server1 /]# cd /var/lib/mysql-cluster
[root@mysql-cluster /]# /usr/local/mysql/bin/ndbd --initial /var/lib/mysql-cluster/config.ini
[root@mysql-cluster /]# /etc/rc.d/init.d/mysqld start //启动MYSQL
可以将/usr/local/mysql/bin/ndbd加入/etc/rc.local中实现开机自动启动
注意:只有在第一次启动ndbd时或者对Server3的config.ini进行改动后才需要使用--initial参数启动。
-----------回到管理节点服务器Server3上,并启动管理终端----------
[root@server3 /]# /usr/bin/mdb_mgm
-- NDB Cluster -- Management Client --
ndb_mgm> show
Connected to Management Server at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 @192.168.0.201 (Version: 5.0.27, Nodegroup: 0, Master)
id=3 @192.168.0.202 (Version: 5.0.27, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.0.206 (Version: 5.0.27)
[mysqld(API)] 2 node(s)
id=4 @192.168.0.201 (Version: 5.0.27)
id=5 @192.168.0.202 (Version: 5.0.27)
ndb_mgm>
如果上面没有问题,现在开始测试Mysql,注意:本文中对于mysql并没有设置root密码
推荐你自己设置server1和server2的Mysql root密码
[root@server1 /]#/usr/local/mysql/bin/mysql -u root -p
mysql> use test;
mysql> CREATE TABLE ctest(i INT) ENGINE=NDBCLUSTER;(注意表引擎,也可以写成ENGINE=NDB;)
mysql> INSERT INTO ctest() VALUES(1);
mysql> SELECT * FROM ctest;
应该可以看到 1 row returned信息(返回数值1)
如果上述正常,则换到server2上重复上面的测试,观察效果。如果成功则在server2中执行INSERT在换回到server1中执行SELECT * FROM
ctest;观察是否工作正常返回值是否有变化。
将Server1或者Server2的网线拔掉,观察另一台集群服务器工作是否正常(可以使用SELECT查询测试)。测试完毕后,重新插入网线即可。
之后在server3上执行管理终端命令show会看到破坏的那台服务器的状态。
测试完成后,只需要重新启动被破坏服务器的ndbd进程即可。
[root@server1 /]# /usr/local/mysql/bin/ndbd
注意:前面说过了,此时是不用加--initial参数的。
至此,mysql集群就配置完成了,mysql负载均衡功能完成!