mysql三台机群集_MySQL Cluster 3台机器搭建集群环境
最后還是通過三臺機器實現了linux下的mysql集群,這邊首先要感謝眾多網絡上提供幫助教程,雖然有些沒有經過實踐無法真正達到效果,但是這次給MGM項目的這個開頭還是不錯。
書歸正傳,這邊用的是vmware workstation來實現的,先裝三臺linux centos的服務器,最好參考百度知道里面的安裝普通database的服務器方法,當中自己來實現交換分區和boot分區還有主分區的劃分,這樣更好的學習linux的命令和一些常用的操作。接下來和網上的做法差不多,這邊關鍵是my.cnf的配置方法,最后我才發覺這個是我的問題,而且權限表的配置也很重要chown最好對mysql組下的mysql對這個安裝路徑(/usr/local/mysql/)路徑的所有權限進行賦值。
操作系統:
Centos6.0 release 64位
軟件包:
mysql-cluster-advanced-7.4.6-linux-glibc2.5-x86_64.tar.gz
數據庫管理節點: 10.10.10.201
數據庫數據節點: 10.10.10.202,10.10.10.203
數據庫sql節點: 10.10.10.202,10.10.10.203
我這里數據節點和sql節點用相同的2臺機器承擔.
1.管理節點的安裝
#groupadd mysql
#useradd?mysql -g mysql
#mv
mysql-cluster-advanced-7.4.6-linux-glibc2.5-x86_64.tar.gz /usr/local/
#cd /usr/local/
#tar zxvf
mysql-cluster-advanced-7.4.6-linux-glibc2.5-x86_64.tar.gz
#rm -f
mysql-cluster-advanced-7.4.6-linux-glibc2.5-x86_64.tar.gz
#mv
mysql-cluster-advanced-7.4.6-linux-glibc2.5-x86_64mysql
#chown -R mysql:mysql mysql
#cd mysql
#scripts/mysql_install_db --user=mysql
2.管理節點的配置
#mkdir /var/lib/mysql-cluster
#cd /var/lib/mysql-cluster
#vi config.ini
//這里需要手動添加如下內容
[ndbd default] ? NoOfReplicas=2 ??DataMemory=80M ? IndexMemory=18M
//這里有很多參數,大家可以自己找下相關資料
[ndb_mgmd] ? Id=1 ? Hostname=10.10.10.201 ? ? ? ? ??//管理節點IP? datadir=/usr/local/mysql/logs
[ndbd] ? Id=2 ? Hostname=10.10.10.202 ? ? ? ? ? ??//數據節點IP??? ? datadir=/usr/local/mysql/data/
//數據節點的數據目錄,這里要與數據節點的配置文件my.cnf(其實這邊要但是my。cnf里面不用指定也行)
的數據指定相同
[ndbd] ? Id=3 ? Hostname=10.10.10.203 ? ? ? ? ? ?//數據節點IP??? ? datadir=/usr/local/mysql/data/
[MYSQLD] ? [MYSQLD]
3.安裝和配置數據節點
這里2臺機器數據節點安裝是相同的.
#groupadd mysql
#useradd?mysql -g mysql
#mv
mysql-cluster-advanced-7.4.6-linux-glibc2.5-x86_64.tar.gz /usr/local/
#cd /usr/local/
#tar zxvf
mysql-cluster-advanced-7.4.6-linux-glibc2.5-x86_64.tar.gz
#rm -f
mysql-cluster-advanced-7.4.6-linux-glibc2.5-x86_64.tar.gz
#mv
mysql-cluster-advanced-7.4.6-linux-glibc2.5-x86_64?mysql
#chown -R mysql:mysql mysql
#cd mysql
#scripts/mysql_install_db --user=mysql
#cp support-files/my-medium.cnf /etc/my.cnf
#cp support-files/mysql.server /etc/init.d/mysqld
#vi /etc/my.cnf
//這里需要手動添加如下的內容
[client]
port =3307
[mysqld]
port = 3307
ndbcluster
ndb-connectstring=10.10.10.201
bind-address = 10.10.10.202
[mysql_cluster]
ndb-connectstring=10.10.10.201
這邊特別要說的額是設置成3307是必須的,我嘗試了很多方法,在ndbd開啟后3306就被占用了,
可以使用
netstat -anp | grep "3306" 來找到pid,用kill pid號反而會導致ndbd的集群出問題,所以這里只能指定binding-address和port
4.啟動相關服務
在管理節點啟動相關服務:
#/usr/local/mysql/bin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini
#netstat -lntpu
tcp??????? 0????? 0 0.0.0.0:1186??????????? 0.0.0.0:*
LISTEN???22907/ndb_mgmd
看到1186端口開放了說明啟動是正常的.
在數據節點啟動相關服務:
#/usr/local/mysql/bin/ndbd --initial
#netstat -lntpu
tcp??????? 0????? 0 10.10.1.65:32975??????????? 0.0.0.0:*??????????????????? LISTEN????? 1901/ndbd
tcp??????? 0????? 0 10.10.1.65:32976??????????? 0.0.0.0:*?????????????????? LISTEN????? 1901/ndbd
tcp??????? 0????? 0 10.10.1.65:32977??????????? 0.0.0.0:*?????????????????? LISTEN????? 1901/ndbd
#service mysqld start
#netstat -lntpu
tcp??????? 0????? 0 :::3306???????????????????? :::*??????????????????????? LISTEN????? 2258/mysqld
可以看到相關的ndbd服務以及mysql已經啟動ok了.
5.功能測試
到管理節點查看下相關服務狀態
# ndb_mgm
ndb_mgm> show
Connected to Management Server at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)]???? 2 node(s)
id=2??? @10.10.1.65? (mysql-5.1.37 ndb-7.0.8, Nodegroup: 0, Master)
id=3??? @10.10.1.58? (mysql-5.1.37 ndb-7.0.8, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1??? @10.10.1.151? (mysql-5.1.37 ndb-7.0.8)
[mysqld(API)]?? 2 node(s)
id=4??? @10.10.1.65? (mysql-5.1.37 ndb-7.0.8)
id=5??? @10.10.1.58? (mysql-5.1.37 ndb-7.0.8)
可以看到這里的數據節點、管理節點、sql節點都是正常的.
現在我們在其中一個數據節點上進行相關數據庫的創建,然后到另外一個數據節點上看看數據是否同步
# /usr/local/mysql/bin/mysql -u root -p
mysql> show databases;
+--------------------+
| Database?????????? |
+--------------------+
| information_schema |
| mysql????????????? |
| ndb_2_fs?????????? |
| test?????????????? |
+--------------------+
mysql> create database aa;
mysql> use aa
mysql> CREATE TABLE ctest2 (i INT) ENGINE=NDB;
//這里必須指定數據庫表的引擎為NDB,否則同
步失敗
mysql> INSERT INTO ctest2 () VALUES (1);
mysql> SELECT * FROM ctest2;
+------+
| i??? |
+------+
|??? 1 |
+------+
現在到另外一個數據節點查看下aa數據庫是否同步過來了.
#/usr/local/mysql/bin/mysql -u root -p
mysql> show databases;
+--------------------+
| Database?????????? |
+--------------------+
| information_schema |
| aa???????????????? |
| bb???????????????? |
| mysql????????????? |
| ndb_3_fs?????????? |
| test?????????????? |
+--------------------+
mysql> use aa
mysql> select * from ctest2;
+------+
| i??? |
+------+
|??? 1 |
+------+
從上面可以看到數據已經同步了,mysql集群環境已經搭建完成.
這邊同樣要感謝下面頁面的提供幫助:
http://blog.chinaunix.net/uid-23412974-id-2425362.html
http://wenku.baidu.com/link?url=BweBSV3m0ut73gnmRWj5M3w88YTanyxi_K7tvkqpWMdrfaf54xSdVfPolj0HbhdH9hmf85UO_OjXEuWsYlIBRgND0-WgZ9RW1qBE1weoLOq
讓我知道不光是chrown來設置權限表來解決問題,還需要綁定其他端口和ip,還有重要問題還需要跑到/usr/local/mysql/data找錯誤日志來排查。
總結
以上是生活随笔為你收集整理的mysql三台机群集_MySQL Cluster 3台机器搭建集群环境的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 存到mysql的中文乱码_将用户输入的中
- 下一篇: Mysql慢查询深入剖析_《深入精通My