配置mysql簇叢集的個人心得。
安裝準備:
1.所需軟體。
管理節點:
MySQL-Cluster-gpl-management-7.1.9a-1.rhel5.i386.rpm
MySQL-Cluster-gpl-tools-7.1.9a-1.rhel4.i386.rpm
sql節點:
MySQL-Cluster-gpl-server-7.1.9a-1.rhel5.i386.rpm
MySQL-Cluster-gpl-client-7.1.9a-1.rhel5.i386.rpm
存儲節點:
MySQL-Cluster-gpl-storage-7.1.9a-1.rhel4.i386.rpm
2.前提條件
關閉所有叢集機器的防火牆
在所有mysql叢集的機器中配置/etc/hosts檔案将所有機器的ip和機器名稱寫進去。并将所有的叢集機器加到同一個組群中。
添加到mysql組中: groupadd mysql
添加使用者mysql: useradd -g mysql mysql
一 安裝和配置管理節點
1. 安裝準備
建立檔案夾:mkdir /var/lib/mysql/data表示存儲節點檔案夾
mkdir /var/lib/mysql-cluster表示管理節點檔案夾
賦予權限:chmod -R 1777 /var/lib/mysql
chmod -R 1777 /var/lib/mysql-cluster
2. 安裝管理節點軟體
rpm -ivh MySQL-Cluster-gpl-management-7.1.9a-1.rhel5.i386.rpm
rpm -ivh MySQL-Cluster-gpl-tools-7.1.9a-1.rhel4.i386.rpm
3. 配置管理節點
在mysql目錄下建立mysql-cluster檔案夾,進入到mysql-cluster,建立config.ini
[NDBD DEFAULT]
NoOfReplicas=2 #備份,副本,這樣的話2台資料節點的資料就會同步
DataMemory=200M
IndexMemory=100M
[TCP DEFAULT]
portnumber=2202 連接配接端口号,與存儲節點和sql節點對應
[NDB_MGMD] #管理節點
id=11
hostname=管理節點的ip位址
datadir=/var/lib/mysql-cluster
[NDBD] #資料節點
id=21
hostname=對應資料節點的IP位址
datadir=/var/lib/mysql/data
[NDBD] #資料節點
id=22
hostname=對應資料節點的IP位址
datadir=/var/lib/mysql/data
可以有多個ndbd幾點,隻需要在此處添加[NDBD]注冊即可
[MySQLD] #sql節點
id=31
hostname=對應sql節點的ip位址
[MySQLD] #sql節點
id=32
hostname=對應sql節點的ip位址
可以有多個ndbd幾點,隻需要在此處添加[MySQLD]注冊即可
4. 啟動管理節點
ndb_mgmd -f /var/lib/mysql-cluster/config.ini
5. 管理工具
使用指令ndb_mgm進入管理控制台,輸入show可以顯示叢集裝置的連接配接資訊。
二 安裝配置ndbd節點
1. 安裝軟體
rpm -ivh MySQL-Cluster-gpl-storage-7.1.9a-1.rhel4.i386.rpm
2. 配置ndbd節點
在/ect/my.cnf檔案中添加資訊
vi /ect/my.cnf
[mysqld]
max_connections = 100 最大連接配接數
slow_query_log = /var/lib/mysql-cluster/slow_query.log
long_query_time = 1
datadir = /var/lib/mysql-cluster
ndbcluster
ndb-connectstring="nodeid=id,ip" 其中id為在管理節點中配置的本存儲節點ip對應的id,後面的ip位址為管理節點的ip位址
[mysql_cluster]
ndb-connectstring="nodeid=id,ip" 其中id為在管理節點中配置的本存儲節點ip對應的id,後面的ip位址為管理節點的ip位址
3. 啟動ndbd節點
第一次啟動使用指令 ndbd -initial
以後使用ndbd即可
三 安裝配置sql節點
1. 安裝軟體
rpm -ivh MySQL-Cluster-gpl-server-7.1.9a-1.rhel5.i386.rpm
rpm -ovh MySQL-Cluster-gpl-client-7.1.9a-1.rhel5.i386.rpm
2. 配置sql節點
運作下面指令:
cp my-medium.ini /etc/my.cnf 使用 find / -name medium.cnf 查找到medium.cnf檔案的位置,然後使用複制
1>my-small.ini是為了小型資料庫而設計的。不應該把這個模型用于含有一些常用項目的資料庫。
2>my-medium.ini是為中等規模的資料庫而設計的。如果你正在企業中使用RHEL,可能會比這個作業系統的最小RAM需求(256MB)明顯多得多的實體内
存。由此可見,如果有那麼多RAM記憶體可以使用,自然可以在同一台機器上運作其它服務。
3>my-large.ini是為專用于一個SQL資料庫的計算機而設計的。由于它可以為該資料庫使用多達512MB的記憶體,是以在這種類型的系統上将需要至少
1GB 的RAM,以便它能夠同時處理作業系統與資料庫應用程式。
4>my-huge.ini是為企業中的資料庫而設計的。這樣的資料庫要求專用伺服器和1GB或1GB以上的RAM。
vi /etc/my.cnf
在my.cnf檔案的後面添加
[MYSQLD]
basedir = /usr
datadir = /usr/local/mysql/data/
user = mysql
socket = /tmp/mysql.sock
ndbcluster
ndb-connectstring=="nodeid=id,ip" 其中id為在管理節點中配置的本存儲節點ip對應的id,後面的ip位址為管理節點的ip位址
[MYSQL_CLUSTER]
ndb-connectstring=="nodeid=id,ip" 其中id為在管理節點中配置的本存儲節點ip對應的id,後面的ip位址為管理節點的ip位址
3.賦予權限
建立 /usr/local/mysql/data 目錄檔案夾
chomd 775 /usr/local/mysql/data
賦予資料庫存取權限
mysql_install_db /usr/local/mysql/data 使用find / -name mysql_install_db 查找到mysql_install_db 然後使用此指令
mysql_install_db 重新初始化mysql
4.啟動mysqld
使用指令 mysqld_safe
四 測試叢集
1.管理節點中輸入ndb_mgm進入管理控制台,輸入show,在顯示的資訊如下圖所示,即表示所有連接配接正常。
________________________________________________________________________
| [ndbd(NDB)] 2 node(s)
| id=21 @192.168.41.52 (mysql-5.1.51 ndb-7.1.9, Nodegroup: 0, Master)
| id=22 @192.168.41.42 (mysql-5.1.51 ndb-7.1.10, Nodegroup: 0)
|
| [ndb_mgmd(MGM)] 1 node(s)
| id=11 @192.168.41.240 (mysql-5.1.51 ndb-7.1.10)
|
| [mysqld(API)] 2 node(s)
| id=31 @192.168.41.51 (mysql-5.1.51 ndb-7.1.9)
| id=32 @192.168.41.55 (mysql-5.1.51 ndb-7.1.9)
|________________________________________________________________________
2.在sql1節點中登入mysql -u root
然後建立一個資料庫 sql1test, 進入sql1test資料庫建立一張表test,然後在裡面添加幾條資料。
3.在另一個sql節點中登入mysql -u root
檢視資料庫,并找到sql1test資料庫,進入實用select語句查詢test表中的記錄,顯示的記錄正常。
4.斷開一個ndbd資料存儲節點
在sql1節點中查詢test表中的記錄正常。
上面描述的資訊正常則叢集已經搭起來了。
五 遇到的問題
1.sql節點啟動失敗,提示不存在 /var/lib/mysql/mysql.sock檔案。
打開/etc/my.cnf修改[client]下的socket值,使得此值與[MYSQLD]下的socket值相同。
2.錯誤資訊無法找到errmsg.sys檔案。
修改[MYSQLD]下的basedir值,使用find / -name errmsg.sys查找到此檔案,然後修改basedir值使其能正确的指到errmsg.sys檔案。
3.使用mysql指令進入資料庫控制台中,無法實作資料庫的叢集模式。
使用mysql -u root 登入到資料庫控制台即可。
4.建立的表無法在另一個sql節點的mysql控制台中檢視到。
使用指令 create table [table name] () engine=ndbcluster;建立資料庫表即可實作