搭建mysql cluster

虛擬機搭建Mysql Clusterhtml

參考文檔:http://www.cnblogs.com/jackluo/archive/2013/01/19/2868152.htmlmysql

http://www.cnblogs.com/StanBlogs/archive/2011/06/14/2080986.htmllinux

 

須要三臺服務器。一個管理節點服務器。另外兩個均充當數據節點和sql節點。sql

這裏選用ubuntu64位操做系統。mysql cluster 對應也必須是64位的。去官方站點下載mysql-cluster-gpl-7.4.4-linux-glibc2.5-x86_64。數據庫

(注:當在虛擬機操做時,vmware下,能夠只先操做一個sql節點,而後虛擬機有克隆功能,直接整一份,這樣另外一個sql節點就基本搞定了,只須要更改下ip便可。在虛擬機實驗下,最好整快照或克隆。ubuntu

  我這裏,管理節點ip是192.168.1.232vim

  另兩個機器,既充當數據節點也是sql節點。ip是192.168.1.210 ;  192.168.1.219   服務器

網絡

安裝ubuntu操做系統後,更改ip,dns配置。socket

切換用戶 sudo passwd root,而後建立個root用戶密碼。

su root後,輸入root密碼。

 如下操做利用root用戶進行。

對每一個機器的ip配置:

vim /etc/network/interfaces

改內容以下:

auto eth0

iface eth0 inet static  #這裏沒用dhcp動態,取靜態ip

address 192.168.1.219     #ip地址

gateway 192.168.1.1    #網關地址

netmask 255.255.255.0    #子網掩碼

dns-nameservers 192.168.1.1  #dns解析

 

重啓網絡設置:

sudo /etc/init.d/networking restart  

  

一. 對數據節點和sql節點的操做

1. 建立組,用戶

         groupadd mysql 

         useradd -g mysql mysql

 

2. 下載mysql cluster64。傳這個文件到某個目錄下。這裏直接上傳到/usr/local(若是利用文件上傳服務器,則須要賦給權限如chmod 766 /usr/local)

解壓: tar -xvf mysql.tar.gz

更名: mv mysql-cluster-gpl-7.4.4-linux-glibc2.5-x86_64  mysql

 

3. 修改mysql目錄權限

cd mysql 

chown -R root . 

chown -R mysql data 

chgrp -R mysql .

 

4. 安裝mysql初始庫

在mysql目錄下: 

scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql

 

5. 把mysql設置爲開機自啓

能夠把mysql服務開機自啓。不整也行。

 

6.這裏設置mysql配置文件,這裏缺省了mysql配置的性能方面參數。

vim /etc/my.cnf

 

[client]

socket=/usr/local/mysql/sock/mysql.sock

 

[mysqld]

ndbcluster

datadir=/usr/local/mysql/data

socket=/usr/local/mysql/sock/mysql.sock

ndb-connectstring=192.168.1.232       #這個是管理節點的ip

old_passwords=1

default-storage-engine=ndbcluster       #能夠省略建表的引擎語句(只有引擎是ndb的才能夠起到集羣的做用)

 

[mysql_cluster]

ndb-connectstring=192.168.1.232  #這裏配置的是管理節點服務器地址

 

7. 此時沒必要啓動mysql服務。

 

以上的操做,須要在多臺數據節點和sql節點機器上進行(要是虛擬機,就克隆就行了,而後改下ip)。

 

二. 對管理節點的操做

管理節點不須要安裝mysql服務。只須要mysql-cluster解壓後的兩個文件,分別是

sql節點服務器上:/usr/local/mysql/bin/ndb_mgmd 和 /usr/local/mysql/bin/ndb_mgm

ndb_mgmd 是管理節點的服務

ndb_mgm  是管理節點的客戶端查看用

1. 把sql節點上的這兩個文件拷貝到管理節點的/usr/local/bin目錄下。(我使用filezilla傳過去的)

2. 在管理節點上,確保這兩個文件可執行。

  cd /usr/local/bin

  chmod +x ndb_mgm*

3. 在/usr/local下建立mysql文件夾,確保數據節點打開服務時,能夠生成log文件

  mkdir /usr/local/mysql

4. 建立一個管理節點的配置文件

  mkdir /var/lib/mysql-cluster

  cd /var/lib/mysql-cluster

  vim config.ini

 

[NDBD DEFAULT]

NoOfReplicas=2

MaxNoOfTables = 1024                      #全部ndbcluster引擎的表數量最大數

MaxNoOfAttributes = 7000                #全部ndbcluster引擎的表的全部字段數量最大數

MaxNoOfOrderedIndexes = 10000

 

[TCP DEFAULT]

portnumber=22202

 

[NDB_MGMD]

hostname=192.168.1.232                 #管理節點

datadir=/var/lib/mysql-cluster/

 

[NDBD]

hostname=192.168.1.210                 #數據節點

datadir=/usr/local/mysql/data/

[NDBD]

hostname=192.168.1.219                 #數據節點

datadir=/usr/local/mysql/data/

 

[MYSQLD]

# 這裏配置sql節點,最好留空。

[MYSQLD]

  

3、啓動mysql cluster

 

注意啓動順序:首先是管理節點,而後是數據節點,最後是SQL節點,這裏數據節點和sql節點是同一個機器。

1.  ndb_mgmd -f /var/lib/mysql-cluster/config.ini --initial

第一次啓動時,再加--initial參數,或者在更改config.ini節點時加

(啓動時可能會報個WARNING,如WARNING  -- at line 7: [TCP] portnumber is deprecated,這個不用管就是端口號不建議使用了,warning的級別不如error。能夠正常工做的。)

 

此時使用ndb_mgm來監聽客戶端

 

2.  數據節點

/usr/local/mysql/bin/ndbd

首次啓動,則須要添加--initial參數,以便進行NDB節點的初始化工做。在之後的啓動過程當中,則是不能添加該參數的,不然ndbd程序會清除在以前創建的全部用於恢復的數據文件和日誌文件。(若是報錯:日誌文件不能生成,則手動建立這個目錄) 

此時,在管理節點上,ndb_mgm,使用show命令時,能夠看到數據節點鏈接上了(多臺數據節點都須要這樣操做)

 

3.  sql節點

 

/usr/local/mysql/bin/mysqld_safe --user=mysql & 

若是報錯說某套接字連不上mysql,那麼嘗試下再次建立系統數據庫,方法以下:

在mysql目錄下 

 scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql

 再次啓動

 /usr/local/mysql/bin/mysqld_safe --user=mysql &

 

查看管理節點。此時sql節點也應該鏈接上了。

  

4、測試

1、常規測試:

在一個節點好比A節點,上面:

爲了讓表在cluster中正常複製,建立一個表必須使用ndbcluster引擎(engine=ndb Or engine=ndbcluster)方法以下:

mysql>use test

mysql>create table teacher(t_id int) engine=ndb;(這裏引擎需要是ndb,而不是innodb或其餘)

  

若是是一個已經存在的表,用alter table修改表的引擎。

mysql>alter table teacher engine=ndb;

 

插入一條數據:

mysql>insert into teacher values(133); 

 

而後在B節點上查看:

mysql>select * from teacher;

  

A、B兩個節點數據保持一致,那就測試成功了哈哈,遇到什麼問題網上查一下資料什麼的!

  

模擬NDB節點Crash

 這個測試,基本參照文檔:

  http://www.cnblogs.com/StanBlogs/archive/2011/06/14/2080986.html

=================================================================================

備註給須要的童鞋:

 

1 查看某機器下,該系統支持的存儲引擎

    show engines; 

2 查看錶使用的存儲引擎 

    show table status from db_name where name='table_name'; 

3. 更改表引擎 

  alter table student engine=ndb;

=================================================================================

 若是你想鏈接你的mysql的時候發生這個錯誤:


ERROR 1130: Host '192.168.1.3' is not allowed to connect to this MySQL server

解決方法:
1. 受權法。 
若是你想容許用戶myuser從ip爲192.168.1.3的主機鏈接到mysql服務器,並使用mypassword做爲密碼
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

FLUSH PRIVILEGES;

 

================================================================================= 

當須要關閉數據節點或sql節點下的某服務,如關閉ndbd服務或mysql服務

能夠這樣

ps aux | grep mysql

ps aux | grep ndbd

而後找到進程號,

利用  kill -9 pid(進程號)

相關文章
相關標籤/搜索