mysql群集

Mysql集群

1,安装环境与硬件设施

 

环境:windows server 2008R2

5台数据库部署机器,都安装在虚拟机里:

Management node(ndb_mgmd): 172.16.14.32

Data node(ndbd): 172.16.14.35

Data node(ndbd): 172.16.14.37

Sql node(mysqld): 172.16.14.39

Sql node(mysqld): 172.16.14.43

 

客户机:

172.16.0.235(xp)(注:本机做测试,子网掩码 248)

2安装验证数据库

http://www.mysql.com/products/cluster/下载最新的windows版本:

共享:\\172.16.10.253\软件工具共享\数据库软件\MySQL\mysql-cluster\

mysql-cluster-gpl-7.3.2-winx64.msi

 

将mysql-cluster-gpl-7.3.2-winx64.msi

分别安装到5台node机器的C:\program\MySQL\MySQLCluster 7.3\bin(默认安装)

 

将C:\program\MySQL\MySQLCluster 7.3\bin添加到系统环境变量path中

安装时可能安装未完全,需要自己手动  

Mysqld.exe install

Net start mysql

 

 

输入命令mysqld –console,可以打开mysqld进程,并显示了数据库的一些基本信息。

 

当然,可以在mysqld –console命令前加上start /b,即start /bmysqld –console,这样在当前cmd窗口可以继续输入其它命令。也就是说ctrl + c 无法中断mysqld进程了。

验证是mysqld服务是否已经启动了,敲入命令mysql–uroot。默认用户root,没有设置密码。你可以通过mysql命令select user,host,passwordfrom mysql.user;看到表里的信息:

可以通过以下几个方法重置密码:

(1)       使用set命令:

set PASSWORD FOR 'root'@'localhost' =PASSWORD('newpwd');

(2)使用update命令:

mysql>updatemysql.user set password = PASSWORD('newpwd') where user = 'root';

mysql>flushprivileges;

(3)使用mysqladmin

mysql > mysqladmin -u root password "newpwd"

mysql > mysqladmin-u root -h host_name password "newpwd"

更多方法见:http://dev.mysql.com/doc/refman/5.1/en/default-privileges.html

 

附:在本文示例中将密码也设为root

 

关闭mysqld:

mysql>mysqladmin -h xx -uxx -pxxx shutdown

 

3配置与开启集群

3.1数据库权限与访问配置

两个sql node都要配置成能被远程访问,这点很重要,是首先需要保证的,所以在进行其它配置之前先进行这个配置与验证。Cluster版本默认是不支持的远程访问的。

 

要在

[mysqld] 中加入

Skip-grant-tables

验证方法:在sql node的机器上开启mysqld,然后进行相互的连接访问:mysql –uroot–proot –h xxx。

 

3.3配置managementnode

更多关于这方面的配置参见官方文档:

http://dev.mysql.com/doc/mysql-cluster-excerpt/5.1/en/mysql-cluster-install-windows-binary.html

 

总体说下,每种类型的node需要配置的内容不一样。Management node在启动时主要需要读以下element信息:[ndb_mgmd]/ [ndbd]/[mysqld],可以将这些配置写入一个文本文件,在启动时作为参数加入。

 

以下操作都在Managementnode(ndb_mgmd): 172.16.14.32上操作。

 

在C:\新建 mysql\mysql_cluster\config.ini

并写入如下内容:

[NDBD DEFAULT]

NoOfReplicas=2

[MYSQLD DEFAULT]

[NDB_MGMDDEFAULT]

[TCP DEFAULT]

# ManagmentServer

[NDB_MGMD]

HostName=172.16.14.32#管理节点服务器db1的IP地址

# StorageEngines   

[NDBD]

HostName=172.16.14.35#MySQL集群db1的IP地址

DataDir=C:\data     #如果不存在就创建一个

[NDBD]

HostName=172.16.14.37#MySQL集群db3的IP地址

DataDir= C:\data     #如果不存在就创建一个

[MYSQLD]

HostName=172.16.14.38

[MYSQLD]

HostName=172.16.14.43

[ndbd default]节点的配置是通用的ndbd配置,这样ndbd机器对ndb数据库操作记录都保存在c:\data指定的文件下。[mysqld]可以不指定具体值,这样更灵活。[ndb_mgmd]节点下的c:\data是管理节点的日志保存目录,如果启动不了等都可以在日志里找到具体原因。

 

启动管理节点:

C:\Program Files\MySQL\MySQL Cluster7.3\bin>start/b ndb_mgmd --initial -f c:\mysql\mysql_cluster\config.ini  --configdir=c:\mysql\

 

查看节点信息:

ndb_mgm -e show

附:NodeId一般不需要配置,系统会自动分配。

3.4配置data node

新建文件夹c:\data

Data node不需要配置,只是在启动时注意一个参数- -initial,第一次启动时才加这个参数。

 

以下操作在data node:

Data node(ndbd): 172.16.14.36

Data node(ndbd): 172.16.14.37

机器上操作。

 

start /b ndbd -c 172.16.14.36 --initial

-c参数是ndb-connectstring的缩写,是指连接到的管理节点的IP地址或名称。注意这个命令是需要管理节点先启动。这时在管理节点的机器上运行ndb_mgm-e show可以看到data node已经连接上。

3.5配置SQL Node

在c:\下新建my.cnf,为了将node作为cluster的一部分,必须配置下列两个选项:

[mysqld]

Default-storage-engine=MyISAM

ndbcluster # run NDB storage engine

ndb-connectstring=172.16.14.32 # locationof management server

Explicit_defaults_for_timestamp=true

并且必须配置在最前面。

在c:\windows下建立my.ini

[mysql]

mo-auto-rehash

 

[myisamchk]

key_buffer_size = 8M

sort_buffer_sizw = 8M

 

[mysqlhotcopy]

interactive-timeout

 

[mysql_cluster]

ndb-connectstring=172.16.14.32

 

[mysqld]

ndbcluster

ndb-connectstring=172.16.14.32

 

可以通过在管理节点的机器上运行ndb_mgm-e show查看是否已经连通。

3.6 QAS

(1)在使用mysql命令连接开启mysqld服务的机器时,出现一些错误信息:

ERROR1042 (HY000): Can't get hostname for your address

ERROR1045 (28000): Access denied for user 'root'@'192.168.23.128' (using passwo

rd:NO)

答:这类错误是数据库没有设置成远程访问或无相关权限

 

(2)在data node机器上启动mysqld命令,刚启动过几秒就自动关闭了?

答:在mysqlc\data\xx(电脑名).err日志文件里找找原因,比如是不是在[mysqld]节点设置了datadir等不能识别的变量。

 

(3)在win7上无法成功启动mysqld,提示:

SYSTEM.CurrentControlSet.services.eventlog.Application.MySQLCluster Data Node Daemon无法找到也无法创建?

答:可能由于权限等原因,手动在注册表里创建如下项:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\Application\MySQLCluster Data Node Daemon]

4验证集群

在客户端机器或其它能ping通mysqld服务的mysql node的机器上,运行如下一系列mysql命令:

 

比如首先连通

Mysql –uroot –proot –h 172.16.14.43

 

创建数据库:

Create database gengp;

Use gengp;

 

创建表:

Create table gp (id int not null) engine=ndb;

 

插入数据:

Insert into gp values (1),(2),(3),(4);

 

查询表:

Select * from gp;

 

退出:

Exit;

 

再连接另一个mysqld:

Mysql –uroot –proot –h 172.16.14.39

 

查询:

Select * from gp

 

同样也能查询到数据,这说明能通过两台mysqld服务的机器对外提供数据服务。当然这个示例是数据也保存在这两台机器上。可以看到mysqlc\data\下都有文件夹clusterdb,即是数据文件。

 

5关闭集群

理论上管理节点可以在集群启动后关闭,但这样一旦某台机器宕机,集群就无法工作了,所以最好保持管理节点机器处于运行状态。

 

Mysqld服务需要手动关闭:

mysqladmin –h xxx -uroot -proot shutdown

 

关闭管理节点ndb_mgmd服务,可以在管理节点的机器上,或者在mysql node上(见3.2节)执行如下命令:

ndb_mgm -e shutdown

 

6命令行索引

启动管理节点:

start /b ndb_mgmd --initial -f conf/config.ini--configdir=c:\program\db\mysqlc\my_cluster\conf

 

启动数据结点:

start /b ndbd -c 172.16.14.37--initial

 

查看节点信息:

ndb_mgm -e show

 

启动mysql服务引擎:

start /b mysqld--defaults-file=D:\program\db\mysqlc\my_cluster\conf\my.cnf

 

关闭mysqld服务:

mysqladmin -uroot -proot shutdown -h 172.16.14.39

 

关闭管理服务:

ndb_mgm -e shutdown

参考

官方网站:http://www.mysql.com/products/cluster/

网上示例:http://www.unchis.com/html/db/mysql/2011/0405/299.html

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值