??xml version="1.0" encoding="utf-8" standalone="yes"?> ?92.168.56.10或?92.168.56.20L一台机器上Q访问数据库Q命令ؓQ?/p>
比如现在我在192.168.56.10机器上面创徏数据库assetscenterdbQ执行命令: 创徏成功之后Q在192.168.56.20的机器上面就可以看到我们创徏的这个数据库Q接下来我们要创建数据库表, q里我们注意数据库表?strong>ENGINE是ndbQ比如说数据库里面我的一个表l构q个样子Q?/p>
只有q样子,q两台机器才能共享数据库的数据结构,此时在另外一台机器上面,执行命oQ?/p>
可以看到我们创建的q张表?/p>
那么JavaE序如何讉K呢,我采用的Jdbc驱动为mysql-connector-5.1.12Q连接串如下Q?/p>
使用roundRobin法Q若是其中一台机器down掉以后,会自动不能访问的数据库服务器 t除Q如果还原后l进行压力分载?/p>
其余的数据库操作和普通的一栗?/p>
接下来我们还需要配|数据库允许q程讉KQ比如我把服务器攑֜192.168.56.30机器上面Q我需要在另外两台机器上面分别配置Q?/p>
然后你运行服务器可以正常访问了?/p>
如果此时你的E序q不能正常访问,那么你就需要看我这一博?a title="Mysql数据?ldquo;ERROR 1042 (HY000): Can't get hostname for your address”问题" target="_blank">Mysql数据?ldquo;ERROR 1042 (HY000): Can't get hostname for your address”问题Q?/p>
因ؓ我就遇到了这U问题,我本地用上述配置可以了Q可是我把机器放到LAB中去了,mysqlq接不上了,出现了ERROR 1042 (HY000): Can't get hostname for your address错误Q?/p>
可能是mysql的DNS解析除了问题Q我的本地环境和Lab的DNS不一P才会造成q个问题的?/p> 首先我们下蝲Mysql Cluster,下蝲链接地址?a >MySQL Cluster 7.1.17Q我们采用的服务器ؓCentOS Server和Ubuntu ServerQ所以我们下载针对Linux Generic版本?/p>
现在我有三台服务器,两个是CentOS ServerQ一个是Ubuntu ServerQ前两个Server分别作ؓData Node和SQL NodeQData Node和SQL Node在同一个机器上面)Q?/p>
后者作为Management NodeQ如果没有真实机器的Q可以用虚拟机模拟,下面是我的IP部vQ?/p>
下面是我机器的大致拓扑图l构Q?/p>
接下来我们就需要对q几个节点进行详l的配置工作Q?/p>
1、配|Data Node和SQL Node 目前我们采用的三台机器策略,所以把q两个节Ҏ在同一个机器上面,所以我们在一ơ配|就可以了?/p>
首先我们?92.168.56.10q台机器上面q行操作配置Q?92.168.56.20操作配置和这?/p>
我们需要在ROOT账户下面执行下属操作Q如果在CentOS中遇到命令找不到的问题,参考我的BlogCentOSpȝbash: groupadd: command not found问题 接下来我们要创徏一个新的用L和用P命o如下Q?/p>
mysql cluster攑֜/usr/local/下面Q执行命令: q入到mysql目录下面Q执行数据库初始化命令: q行权限更改操作Q命令ؓQ?/p>
2、配|Management Node ndb_mgmd和ndb_mgm脚本文g攑օ?usr/local/bin目录下面Q命令ؓQ?/p>
更改其对应的权限Q命令ؓQ?/p>
新徏目录/var/lib/mysql-cluster/Q命令ؓQ?/p>
3、配|三台机器的配置文g 两台数据节点的在/etc目录下面创徏配置文gmy.cnfQ其内容为: 如果在运行过E中出现Mysql数据?ldquo;Communications link failure due to underlying exception”问题Q请参考这边博文进行配|?/p>
针对192.168.56.20机器只要把ndb-connectstring替换一下就行了?/p>
在管理节Ҏ?etc目录下面创徏config.ini文gQ其内容为: 4、启动集环?/p>
首先我们需要先启动理节点192.168.56.30机器Q执行命令: 如果出现The default config directory '/usr/local/mysql/mysql-cluster' does not existq个错误信息Q就手动创徏q个文g夏V?/p>
接下来我们需要在192.168.56.10?92.168.56.20启动数据节点Q命令ؓQ?/p>
W一ơ启用需要加—initial参数Q第二次启动不能?/strong>q个参数。两台机器都分别执行q个命o?/p>
接下来启动这两台机器的sql节点Q命令ؓQ?/p>
两台机器都需要执行这个命令?br /> 最后进入到理台查看我们的集群是否配置完成Q输入命令: 如果出现下面信息Q说明配|成功: 如果看不CqC息,可能是防火墙问题Q你可以选择把CentOS的防火墙xQ命令ؓQ?/p>
当然你可以选择配置防火墙,开放一些必要的端口Q可以参考我的另一文?a title="CentOS 打开3306端口" target="_blank">CentOS 打开3306端口 关闭集群Q执行命令: 然后重启mysql服务卛_?/p>1 bin/mysql
1 create database assetscenterdb
1 CREATE TABLE `AC_ASSET` (
2 `ID` int(11) NOT NULL AUTO_INCREMENT,
3 `TYPE_ID` int(11) NOT NULL,
4 `STATUS` tinyint(4) NOT NULL,
5 `SN` varchar(50) DEFAULT NULL,
6 `DESCRIPTION` text,
7 `ELTMS` varchar(50) DEFAULT NULL,
8 `ORDER_NAME` varchar(50) DEFAULT NULL,
9 `OWNER_NAME` varchar(50) DEFAULT NULL,
10 `WAREHOUSE_TIME` varchar(50) DEFAULT NULL,
11 `LOCATION` varchar(100) DEFAULT NULL,
12 `PRICE` double DEFAULT NULL,
13 `USER_NAME` varchar(50) DEFAULT NULL,
14 PRIMARY KEY (`ID`)
15 ) ENGINE=ndb AUTO_INCREMENT=1726 DEFAULT CHARSET=utf8;1 show tables
1 jdbc:mysql:loadbalance://192.168.56.10:3306,192.168.56.20:3306/assetscenterdb?roundRobinLoadBalance=true
1 grant all on *.* to root@"192.168.56.30" Identified by "你的密码"
1 192.168.56.10 Data Node + Sql Node
2 192.168.56.20 Data Node +Sql Node
3 192.168.56.30 Management Node1 groupadd mysql
2 useradd –g mysql mysql1 tar -C /usr/local -xzvf mysql-cluster-gpl-7.1.17-linux-i686-glibc23.tar.gz
2 ln -s /usr/local/mysql-cluster-gpl-7.1.17-linux-i686-glibc23 /usr/local/mysql1 scripts/mysql_install_db --user=mysql
1 chown -R root .
2 chown -R mysql data
3 chgrp -R mysql .1 tar -zxvf mysql-5.1.56-ndb-7.1.17-linux-i686-glibc23.tar.gz
2 cd mysql-5.1.56-ndb-7.1.17-linux-i686-glibc23
3 cp bin/ndb_mgm* /usr/local/bin1 cd /usr/local/bin
2 chmod +x ndb_mgm*mkdir -p /var/lib/mysql-cluster/
[mysqld]
ndbcluster
datadir=/usr/local/mysql/data
basedir=/usr/local/mysql
port=3306
[mysql_cluster]
ndb-connectstring=192.168.56.10 1 [ndbd default]
2 NoOfReplicas=2
3 DataMemory=80M
4 IndexMemory=18M
5
6 [ndb_mgmd]
7 NodeId=1
8 hostname=192.168.56.30
9 datadir=/var/lib/mysql-cluster
10
11 [ndbd]
12 NodeId=2
13 hostname=192.168.56.10
14 datadir=/usr/local/mysql/data
15
16 [ndbd]
17 NodeId=3
18 hostname=192.168.56.20
19 datadir=/usr/local/mysql/data
20
21 [mysqld]
22 [mysqld]1 ndb_mgmd -f /etc/config.ini --initial
1 bin/ndbd --initial
1 bin/mysqld_safe --user=mysql &
1 ndb_mgm –e show
1 /etc/init.d/iptables stop
1 ndb_mgm –e shutdown
]]>1 wait_timeout=2592000
1 <script type="text/javascript">
2 if(top != self) {
3 if(top.location != self.location) {
4 top.location = self.location;
5 }
6 }
7 </script>
1 /sbin/iptables -I INPUT -p tcp --dport 3036 -j ACCEPT
我们需要保存我们的操作Q命令如下:
1 /etc/rc.d/init.d/iptables save
此时我们可以查看端口的状态,命o如下Q?/p>
1 /etc/init.d/iptables status
当然如果你打开其他端口也一P只需要把q个端口h乘你需要的端口号即可?/p>
可惜cnBlog没有一键导入的功能~~
个h对ItEye的感觉没有刚开始好Q现在觉得里面博文质量不如以前?/p>