在Windows7中搭建Mysql Cluster

下面的這些搭建步驟都是參考Mysql的官方文檔 java

準備工做: node

登陸windows時最好用Administor登陸(特別是管理節點,用其它用戶登陸了一次,以後就搭建不了,老是出現"修改不了一些文件的錯誤"),否則程序沒有權限修改某些文件。 mysql

我有倆檯筆記本,筆記本A(操做系統是Windows7 64位)、筆記本B(操做系統是Windows7 64位),在筆記本B上裝上VMWare裝上倆臺64位的Windows7虛擬機(分別是vm-w一、vm-w2),即如今有4臺64位的windows7(A、B、vm-w一、vm-w2)。 sql

在電腦A上開無線,B連上A的無線,這樣vm-w1和vm-w2也會連上網, 數據庫

A上的IP爲192.168.155.1,B上的IP爲192.168.155.2,vm-w1的IP爲192.168.155.3,vm-w2的IP爲192.168.155.4。 windows

須要4個節點 : ide

一個管理節點ndb_mdmd、一個SQL節點、倆個Data節點,分別放在不一樣的電腦上。 this

管理節點裝在B上,SQL節點裝在A上,一個Data節點裝在vm-w1上,另外一個Data節點裝在vm-w2上。 url

一、先在A上裝SQL節點: spa

 http://dev.mysql.com/downloads/cluster/上下載zip包,解壓後放在C盤根目錄下,且將解壓獲得的文件名重設置爲mysql,建立一個txt文件,以後如下內容放入這個txt中:

[mysqld]
# Options for mysqld process:
ndbcluster                      # run NDB storage engine
ndb-connectstring=192.168.155.2  # location of management server
以後另存爲 C:\mysql\my.ini,即另存爲my.ini(另存爲時選的存儲格式爲ASCII)放在C:/mysql目錄下。

二、裝Data Nodes

在vm-w1上的C;/下建立目錄mysql,即C:/mysql下建立文件夾bin和文件夾cluster-data。

以後建立一個txt文件,以後將如下內容放入其中:

[mysql_cluster]
# Options for data node process:
ndb-connectstring=192.168.155.2  # location of management server
另存爲 C:\mysql\my.ini。

以後:在A上的C;/mysql/bin下有個ndbd.exe,將這個ndbd.exe拷貝到vm-w1的C;/mysql/bin下。

到此爲止vm-w1上的配置已經完成。

在vm-w2上搭建步驟也和上面再vm-w1上的搭建步驟一致。

三、搭建管理節點

在B上搭建管理節點。

3.一、在C:/下建立目錄mysql,在C:/mysql下建立文件夾bin和文件夾cluster-data,以後在C:/mysql/bin下建立文件夾cluster-logs。

3.二、在A的C;/mysql/bin下有ndb_mgm.exe和ndb_mgmd.exe,將這倆個文件拷貝到B的C:/mysql/bin下。

3.三、建立一個txt文件,在裏面放入下面的內容:

[mysql_cluster]
# Options for management node process
config-file=C:/mysql/bin/config.ini
另存爲 C:\mysql\bin\my.ini。

3.四、建立一個txt,在裏面放入下面的內容:

[ndbd default]
# Options affecting ndbd processes on all data nodes:
NoOfReplicas=2                      # Number of replicas
DataDir=C:/mysql/cluster-data       # Directory for each data node's data files
                                    # Forward slashes used in directory path,
                                    # rather than backslashes. This is correct;
                                    # see Important note in text
DataMemory=80M    # Memory allocated to data storage
IndexMemory=18M   # Memory allocated to index storage
                  # For DataMemory and IndexMemory, we have used the
                  # default values. Since the "world" database takes up
                  # only about 500KB, this should be more than enough for
                  # this example Cluster setup.

[ndb_mgmd]
# Management process options:
HostName=192.168.155.2               # Hostname or IP address of management node
DataDir=C:/mysql/bin/cluster-logs   # Directory for management node log files

[ndbd]
# Options for data node "A":
                                # (one [ndbd] section per data node)
HostName=192.168.155.3           # Hostname or IP address

[ndbd]
# Options for data node "B":
HostName=192.168.155.4           # Hostname or IP address

[mysqld]
# SQL node options:
HostName=192.168.155.1           # Hostname or IP address
另存爲  C:\mysql\bin\config.ini。

如今全部的搭建已經完成。

啓動MySQL Cluster:

一、先在B上啓動management node

C:/mysql/bin>ndb_mgmd

以後光標會處於服務狀態(即不容許用戶輸入)

若是出現什麼建立目錄"System/CurrentControlSet/services/eventlog/Application/MySQL"失敗,那麼須要修改Windows7的註冊表——打開註冊表,在目錄System/CurrentControlSet/services/eventlog/Application下建立一個名爲"MySQL"的項。以後從新啓動ndb_mgmd。


二、在vm-w1和vm-w2分別啓動Data Node

C:/mysql/bin>ndbd

以後光標會處於服務狀態

三、在B的management node啓動ndb_mgm(用來查看鏈接信息的)

在B上從新開一個命令窗口,以後C:/mysql/bin/ndb_mgm。

以後用show來查看鏈接信息:

ndb_mgm>show

四、在A上啓動mysql node

在A上輸入mysqld --console:

C:/mysql/bin>mysqld --console

以後在A上另起一個窗口C:/>mysql -u root -p (以後直接回車)

以後會提示輸入密碼,直接回車就行(我搭建時沒有設置密碼)。

就會進入mysql的用戶命令窗口。


關閉MySQL Cluster:

一、在A上退出mysql的用戶命令窗口

二、在A的mysqld窗口,用Ctrl+C退出mysqld窗口

三、在B的ndb_mgm的窗口中輸入shutdown來關閉Cluster

ndb_mgm>shutdown 


用JAVA鏈接MySQL Cluster:

首先在A的mysql命令窗口輸入:

grant all on *.* to root@"192.168.155.1" identified by ""; 這是賦予權限讓遠程客戶端鏈接數據庫

以後就和普通的鏈接方式同樣了,代碼以下:

package com.yun.test; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import com.yun.utl.Out; public class ConnectToCluster { //grant all on *.* to root@"192.168.155.1" identified by ""; public static void main(String[] args) { String url = "jdbc:mysql://192.168.155.1:3306/test"; String user = "root"; String pwd = ""; try { Class.forName("com.mysql.jdbc.Driver"); Connection conn=DriverManager.getConnection(url, user, pwd); //System.out.println(conn);    Statement stmt = conn.createStatement();    ResultSet rs = stmt.executeQuery("select * from person order by id");    while(rs.next()){     int id =rs.getInt("id");        String name = rs.getString("name");        int age = rs.getInt("age");        Out.println("id:"+id+"  age:"+age+"  name:"+name);    }    if(rs!=null){     rs.close();    }    if(stmt!=null){     stmt.close();    }    if(conn!=null){     conn.close();    } } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }

相關文章
相關標籤/搜索