一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數(shù)據(jù)庫技術(shù)|

服務(wù)器之家 - 數(shù)據(jù)庫 - Mysql - MySQL Cluster集群的初級(jí)部署教程

MySQL Cluster集群的初級(jí)部署教程

2020-06-01 17:24樂晨 Mysql

這篇文章主要介紹了MySQL Cluster集群的初級(jí)部署教程, MySql Cluster可以利用充分利用節(jié)點(diǎn)服務(wù)器的多進(jìn)程做到高可用,需要的朋友可以參考下

Mysql Cluster概述

   MySql Cluster最顯著的優(yōu)點(diǎn)就是高可用性,高實(shí)時(shí)性,高冗余,擴(kuò)展性強(qiáng)。

   它允許在無共享的系統(tǒng)中部署"內(nèi)存中"數(shù)據(jù)庫的Cluster.通過無共享體系結(jié)構(gòu),系統(tǒng)能夠使用廉價(jià)的硬件.此外,由于每個(gè)組件有自己的內(nèi)存和磁盤,所以不存在單點(diǎn)故障.

   它由一組計(jì)算機(jī)構(gòu)成,每臺(tái)計(jì)算機(jī)上均運(yùn)行者多種進(jìn)程,包括mysql服務(wù)器,NDB cluster的數(shù)據(jù)節(jié)點(diǎn),管理服務(wù)啟,以及專門的數(shù)據(jù)訪問程序

   所有的這些節(jié)點(diǎn)構(gòu)成一個(gè)完整的mysql集群體系.數(shù)據(jù)保存在"NDB存儲(chǔ)服務(wù)器"的存儲(chǔ)引擎中,表(結(jié)構(gòu))則保存在"mysql服務(wù)器"中.應(yīng)用程序通過"mysql服務(wù)器"訪問這些數(shù)據(jù)表,集群管理服務(wù)器通過管理工具(ndb_mgmd)來管理"NDB存儲(chǔ)服務(wù)器".

基本概念

   "NDB"是一種"內(nèi)存中"的存儲(chǔ)引擎,它具有可用性高和數(shù)據(jù)一致性好的特點(diǎn).下面介紹mysql cluster 節(jié)點(diǎn)時(shí),它表示進(jìn)程.在單臺(tái)計(jì)算機(jī)上可以有任意數(shù)目的節(jié)點(diǎn).

    管理節(jié)點(diǎn)(MGM):這類節(jié)點(diǎn)的作用是管理mysql cluster內(nèi)的其他節(jié)點(diǎn),如配置文件和cluster 日志,啟動(dòng)并停止節(jié)點(diǎn),運(yùn)行備份等.cluster中的每個(gè)節(jié)點(diǎn)從管理服務(wù)器上檢索配置數(shù)據(jù),并請(qǐng)求管理服務(wù)器所在位置的方式.當(dāng)數(shù)據(jù)節(jié)點(diǎn)內(nèi)出現(xiàn)新的事件時(shí),節(jié)點(diǎn)將關(guān)于這類事件的信息傳輸?shù)焦芾矸?wù)器上,然后,又將這類信息寫入cluster日志。由于這類節(jié)點(diǎn)負(fù)責(zé)管理其他節(jié)點(diǎn)的配置,所以應(yīng)在啟動(dòng)其他節(jié)點(diǎn)之前首先啟動(dòng)這類節(jié)點(diǎn).MGM節(jié)點(diǎn)是用命令"ndb_mgmd"來啟動(dòng)

    數(shù)據(jù)節(jié)點(diǎn)(NDB):這類節(jié)點(diǎn)用于保存cluster的數(shù)據(jù).數(shù)據(jù)節(jié)點(diǎn)的數(shù)目與副本的數(shù)目相關(guān),是片段的倍數(shù).假設(shè)有2個(gè)副本,每個(gè)副本有2個(gè)片段,那么就有4個(gè)數(shù)據(jù)節(jié)點(diǎn).不過沒有必要設(shè)置多個(gè)副本.數(shù)據(jù)節(jié)點(diǎn)是用命令"ndbd"來啟動(dòng)的.

   SQL節(jié)點(diǎn):這是用來訪問cluster數(shù)據(jù)的節(jié)點(diǎn).對(duì)于MYSQL cluster來說,客戶端節(jié)點(diǎn)是使用NDB cluster存儲(chǔ)引擎的傳統(tǒng)Mysql服務(wù)器.通常,sql節(jié)點(diǎn)使用將"ndbcluster"添加到"my.cnf"后使用"mysqld" 啟動(dòng)

   此外,可以有任意數(shù)目的cluster客戶端進(jìn)程或應(yīng)該程序.它們分為兩種類型,即標(biāo)準(zhǔn)mysql客戶端和管理客戶端.

   標(biāo)準(zhǔn)mysql客戶端:能夠從php,perl,c,c++,java,python,ruby等編寫的現(xiàn)有mysql應(yīng)用程序上訪問mysql cluster

   管理客戶端:這類客戶端與管理服務(wù)器相連,并提供了啟動(dòng)和停止節(jié)點(diǎn),啟動(dòng)和停止消息跟蹤,顯示節(jié)點(diǎn)版本和狀態(tài),啟動(dòng)和停止備份等命令.

   以下是mysql cluster 架構(gòu)示意圖:

MySQL Cluster集群的初級(jí)部署教程

由于Mysql Cluster采用的是TCP/IP方式連接,并且節(jié)點(diǎn)之間的數(shù)據(jù)傳輸沒有加密,最后使用單獨(dú)的子網(wǎng)里.

下面來實(shí)施部署

為了方便 這里我把管理節(jié)點(diǎn),數(shù)據(jù)節(jié)點(diǎn),sql節(jié)點(diǎn)放在一臺(tái)機(jī)器上.

管理節(jié)點(diǎn)1 10.1.6.205 

數(shù)據(jù)節(jié)點(diǎn)1 10.1.6.203  

數(shù)據(jù)節(jié)點(diǎn)2 10.1.6.205

sql節(jié)點(diǎn)1   10.1.6.203

sql節(jié)點(diǎn)2   10.1.6.205

1.安裝(這里安裝7.2.6版本)

下載mysql-cluster-gpl-7.2.6-linux2.6-x86_64.tar.gz 二進(jìn)制包(里面包含ndb,mysql)

?
1
2
3
4
5
6
[email protected]:~# tar -C /usr/local -xzvf mysql-cluster-gpl-7.2.6-linux2.6-x86_64.tar.gz
[email protected]:/usr/local# ln -s /usr/local/mysql-cluster-gpl-7.2.8-linux2.6-i686 /usr/local/mysql
[email protected]:/usr/local# cd mysql
[email protected]:/usr/local/mysql# scripts/mysql_install_db --user=mysql
[email protected]:/usr/local/mysql# chown -R mysql:mysql /usr/local/mysql
同理10.1.6.203

2.配置SQL節(jié)點(diǎn)和存儲(chǔ)NDB節(jié)點(diǎn)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[email protected]:/usr/local/mysql# vim /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql/
datadir=/usr/local/mysql/data/
user=mysql
port=3306
socket=/tmp/mysql.sock
 
ndbcluster
max_connect_errors=10000
ndb-connectstring=10.1.6.205
connect_timeout = 300
 
[mysql_cluster]
ndb-connectstring=10.1.6.205

同理10.1.6.203
3.配置管理節(jié)點(diǎn)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
[email protected]:/usr/local/mysql# vim /opt/cluster/config.ini
[ndbd default]
NoOfReplicas=2
DataMemory=80M #分配data storage使用的內(nèi)存 每個(gè)ndb占用
IndexMemory=18M #分配index storage使用的內(nèi)存 每個(gè)ndb占用
 
[tcp default]
portnumber=2205 #ndb監(jiān)聽端口
 
#設(shè)置管理節(jié)點(diǎn)
[ndb_mgmd]
NodeId=1
hostname=10.1.6.205
datadir=/opt/cluster #在MGM上保存日志的目錄
 
#設(shè)置存儲(chǔ)節(jié)點(diǎn)NDB1
[ndbd]
NodeId=2
hostname=10.1.6.203
datadir=/usr/local/mysql/data
 
#設(shè)置存儲(chǔ)節(jié)點(diǎn)NDB2
[ndbd]
NodeId=3
hostname=10.1.6.205
datadir=/usr/local/mysql/data
 
#設(shè)置SQL節(jié)點(diǎn)1
[mysqld]
NodeId=4
hostname=10.1.6.203
 
#設(shè)置SQL節(jié)點(diǎn)2
[mysqld]
NodeId=5
hostname=10.1.6.205
[mysqld] #運(yùn)行任意ip連接
[mysqld]

4.啟動(dòng)mysql cluster

1)先啟動(dòng)管理節(jié)點(diǎn)服務(wù)器.2)啟動(dòng)NDB存儲(chǔ)節(jié)點(diǎn)服務(wù)器.3)啟動(dòng)SQL節(jié)點(diǎn)服務(wù)器.

1)執(zhí)行啟動(dòng)MGM節(jié)點(diǎn)進(jìn)程

?
1
2
[email protected]:/usr/local/mysql/bin# /usr/local/mysql/bin/ndb_mgmd -f /opt/cluster/config.ini
MySQL Cluster Management Server mysql-5.5.22 ndb-7.2.6

必須用參數(shù)-f或--config-file告訴ndb_mgm配置文件config.ini文件所在的位置.
2)在2臺(tái)存儲(chǔ)節(jié)點(diǎn)服務(wù)器上,如果是第一次啟動(dòng)NDB進(jìn)程的話,必須先執(zhí)行以下命令:

?
1
2
3
[email protected]:/usr/local/mysql/bin# /usr/local/mysql/bin/ndbd --initial
2013-08-28 23:40:36 [ndbd] INFO  -- Angel connected to '10.1.6.205:1186'
2013-08-28 23:40:36 [ndbd] INFO  -- Angel allocated nodeid: 2

注意:僅在首次啟動(dòng)NDB時(shí),或者在備份/恢復(fù)或配置文件發(fā)生變化且重啟NDB時(shí)才使用-initial參數(shù).因?yàn)樵搮?shù)會(huì)使節(jié)點(diǎn)刪除由早期NDB實(shí)例創(chuàng)建的,用于恢復(fù)的任何文件,包括用于恢復(fù)的日志文件.
如果不是第一次啟動(dòng),用以下命令

?
1
[email protected]:/usr/local/mysql/bin# /usr/local/mysql/bin/ndbd

3)啟動(dòng)SQL節(jié)點(diǎn)服務(wù)器

?
1
[email protected]:/usr/local/mysql/bin# /usr/local/mysql/bin/mysqld_safe /etc/my.cnf &

5.查看各個(gè)節(jié)點(diǎn)情況

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[email protected]:/usr/local/mysql# /usr/local/mysql/bin/ndb_mgm
-- NDB Cluster -- Management Client --
ndb_mgm> show
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 @10.1.6.203 (mysql-5.5.22 ndb-7.2.6, Nodegroup: 0, Master)
id=3 @10.1.6.205 (mysql-5.5.22 ndb-7.2.6, Nodegroup: 0)
 
[ndb_mgmd(MGM)] 1 node(s)
id=1 @10.1.6.205 (mysql-5.5.22 ndb-7.2.6)
 
[mysqld(API)] 4 node(s)
id=4 @10.1.6.203 (mysql-5.5.22 ndb-7.2.6)
id=5 @10.1.6.205 (mysql-5.5.22 ndb-7.2.6)
id=6 (not connected, accepting connect from any host)
id=7 (not connected, accepting connect from any host)
 
ndb_mgm>

6.測(cè)試

注意:與沒有使用Cluster的Mysql相比,在mysql cluster內(nèi)操作數(shù)據(jù)的方式?jīng)]有太大的區(qū)別.操作時(shí)注意

1)表必須用engine=NDB或engine=NDBCLUSTER選項(xiàng)創(chuàng)建

2)每個(gè)NDB表必須有一個(gè)主鍵.如果在創(chuàng)建表時(shí)用戶未定義主鍵,NDB Cluster存儲(chǔ)引擎會(huì)自動(dòng)生成隱含的主鍵.

該隱含鍵也將占用空間,就像任何其他的表索引一樣.由于沒有足夠的內(nèi)存來容納這些自動(dòng)創(chuàng)建的鍵,所以很容易出現(xiàn)問題.

在203 sql節(jié)點(diǎn)1上創(chuàng)建表

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[email protected]:/usr/local/mysql/bin# /usr/local/mysql/bin/mysql -uroot -p
mysql> use test;
mysql> create table dave (num int(10)) engine=ndb;
mysql> show create table dave\G;
*************************** 1. row ***************************
  Table: dave
Create Table: CREATE TABLE `dave` (
 `num` int(10) DEFAULT NULL
) ENGINE=ndbcluster DEFAULT CHARSET=latin1
1 row in set (0.00 sec)
 
mysql> insert into dave
 -> values
 -> (100);
Query OK, 1 row affected (0.01 sec)
mysql> select * from dave;
+------+
| num |
+------+
| 100 |
+------+

然后在205 sql節(jié)點(diǎn)2上查看該表

?
1
2
3
4
5
6
7
8
[email protected]:/usr/local/mysql# /usr/local/mysql/bin/mysql -uroot -p
mysql> use test
mysql> select * from dave;
+------+
| num |
+------+
| 100 |
+------+

測(cè)試OK

關(guān)注一下表

?
1
2
3
4
5
6
7
8
mysql> select * from ndbinfo.memoryusage;
+---------+--------------+--------+------------+----------+-------------+
| node_id | memory_type | used | used_pages | total | total_pages |
+---------+--------------+--------+------------+----------+-------------+
|  2 | Data memory | 851968 |   26 | 83886080 |  2560 |
|  2 | Index memory | 212992 |   26 | 19136512 |  2336 |
|  3 | Data memory | 851968 |   26 | 83886080 |  2560 |
|  3 | Index memory | 212992 |   26 | 19136512 |  2336 |

注意:使用量寫滿會(huì)訪問不了,這時(shí)需要調(diào)整配置DataMemory,IndexMemory參數(shù).各配置文件都需調(diào)整重啟生效.


7.關(guān)閉cluster

?
1
2
3
4
[email protected]:/usr/local/mysql/bin# /usr/local/mysql/bin/ndb_mgm -e shutdown
Connected to Management Server at: 10.1.6.205:1186
3 NDB Cluster node(s) have shutdown.
Disconnecting to allow management server to shutdown.

再關(guān)閉SQL節(jié)點(diǎn)mysqld服務(wù)

?
1
2
3
4
[email protected]:/usr/local/mysql/bin# /usr/local/mysql/bin/mysqladmin -uroot -p shutdown
Enter password:
130829 02:19:57 mysqld_safe mysqld from pid file /usr/local/mysql/data//debian.pid ended
[1]+ Done     /usr/local/mysql/bin/mysqld_safe /etc/my.cnf

以上就是mysql cluster初步部署, 之后會(huì)寫haproxy+keepalive 雙機(jī)高可用.

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 盲井在线 | 欧美va在线观看 | 国产成人精品高清免费 | tk白丝丨vk | 日韩精品成人在线 | 国产yw193.㎝m在线观看 | 亚洲高清无码在线 视频 | aaaaa特级毛片 | 美女沟厕撒尿全过程高清图片 | 精品四虎国产在免费观看 | 新影音先锋男人色资源网 | 高h短篇辣肉各种姿势bl | 国产激情视频在线 | 国产精品视频一区二区三区经 | 久久偷拍免费2017 | 亚洲第一区二区快射影院 | 好吊色视频988gao在线观看 | 欧美二区三区 | 成人国产在线视频 | 亚洲国产成人在人网站天堂 | 国产精品99久久久 | 免费观看伦理片 | 天天舔天天操天天干 | www.九九| 亚洲天堂视频在线播放 | 99热这里只有精品在线播放 | 日日爽| 99国产精品免费观看视频 | 久久精品无码一区二区日韩av | 天生奶水1v1高h | 四虎影院网站 | 亚洲 日本 中文字幕 制服 | a网在线| 亚洲黄色片免费看 | 天码毛片一区二区三区入口 | 毛片一区二区三区提莫影院 | 国产免费资源高清小视频在线观看 | 免费特黄一区二区三区视频一 | 精品一区二区三区免费视频 | 91九色视频无限观看免费 | 亚洲午夜久久久久影院 |