程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 詳解MySQL集群搭建

詳解MySQL集群搭建

編輯:MySQL綜合教程

詳解MySQL集群搭建。本站提示廣大學習愛好者:(詳解MySQL集群搭建)文章只能為提供參考,不一定能成為您想要的結果。以下是詳解MySQL集群搭建正文


概述

MySQL Cluster 是MySQL 合適於散布式盤算情況的高適用、可拓展、高機能、高冗余版本,其研發設計的初志就是要知足很多行業裡的最嚴格運用請求,這些運用中常常請求數據庫運轉的靠得住性要到達99.999%。MySQL Cluster許可在無同享的體系中安排“內存中”數據庫集群,經由過程無同享系統構造,體系可以或許應用便宜的硬件,並且對軟硬件無特別請求。另外,因為每一個組件有本身的內存和磁盤,不存在單點毛病。

現實上,MySQL集群是把一個叫做NDB的內存集群存儲引擎集成與尺度的MySQL辦事器集成。它包括一組盤算機,每一個都跑一個或許多個過程,這能夠包含一個MySQL辦事器,一個數據節點,一個治理辦事器和一個專有的一個數據拜訪法式。

MySQL Cluster可以或許應用多種毛病切換和負載均衡選項設置裝備擺設NDB存儲引擎,但在Cluster 級別上的存儲引擎上做這個最簡略。以下為MySQL集群構造關系圖,

MySQL從構造看,由3類節點(盤算機或過程)構成,分離是:

治理節點:用於給全部集群其他節點供給設置裝備擺設、治理、仲裁等功效。實際上經由過程一台辦事器供給辦事便可以了。

數據節點:MySQL Cluster的焦點,存儲數據、日記,供給數據的各類治理辦事。2個以上 時就可以完成集群的高可用包管,DB節點增長時,集群的處置速度會變慢。

SQL節點(API):用於拜訪MySQL Cluster數據,供給對外運用辦事。增長 API 節點會進步全部集群的並發拜訪速度和全體的吞吐量,該節點 可以安排在Web運用辦事器上,也能夠安排在公用的辦事器上,也開以和DB安排在統一台辦事器上。

NDB引擎

MySQL Cluster 應用了一個公用的基於內存的存儲引擎——NDB引擎,如許做的利益是速度快, 沒有磁盤I/O的瓶頸,然則因為是基於內存的,所以數據庫的范圍受體系總內存的限制, 假如運轉NDB的MySQL辦事器必定要內存夠年夜,好比4G, 8G, 乃至16G。NDB引擎是散布式的,它可以設置裝備擺設在多台辦事器下去完成數據的靠得住性和擴大性,實際上 經由過程設置裝備擺設2台NDB的存儲節點就可以完成全部數據庫集群的冗余性息爭決單點毛病成績。

缺點

  • 基於內存,數據庫的范圍受集群總內存的年夜小限制
  • 基於內存,斷電後數據能夠會稀有據喪失,這點還須要經由過程測實驗證。
  • 多個節點經由過程收集完成通信和數據同步、查詢等操作,是以全體性受收集速度影響,是以速度也比擬慢

2.2 長處

  • 多個節點之間可以散布在分歧的地輿地位,是以也是一個完成散布式數據庫的計劃。
  • 擴大性很好,增長節點便可完成數據庫集群的擴大。
  • 冗余性很好,多個節點上都有完全的數據庫數據,是以任何一個節點宕機都不會形成辦事中止。

完成高可用性的本錢比擬低,不象傳統的高可用計劃一樣須要同享的存儲裝備和公用的軟件能力完成,NDB 只需有足夠的內存就可以完成。

本文將搭建一個最簡化的MySQL Cluster體系,設置裝備擺設辦法中的一切敕令都是以root賬戶運轉。這個MySQL Cluster包括一個治理結點、兩個數據結點、兩個SQL結點,這五個結點會分離裝置在五個虛擬機上,虛擬機的稱號和IP以下所示:

1、公共設置裝備擺設

請在三個虛擬機上分離設置裝備擺設此處的設置裝備擺設項。

1. 裝置虛擬機

虛擬機操作體系裝置CentOS 6.4的x86_64版本,應用NAT收集,而且還要裝置vmware-tools,詳細裝置辦法此處不胪陳。

2. 拷貝mysql cluster

下載MySQL-Cluster:

下載獲得的緊縮包拷貝至虛擬機的/root/Downloads目次,然後在shell中運轉以下敕令:

cd /root/Downloads 
 
tar -xvzf mysql-cluster-gpl-7.3.4-linux-glibc2.5-x86_64.tar.gz 
 
mv mysql-cluster-gpl-7.3.4-linux-glibc2.5-x86_64 /usr/local/mysql

 3. 封閉平安戰略

封閉iptables防火牆(或許翻開防火牆的1186、3306端口),在Shell中運轉以下敕令:

chkconfig --level 35 iptables off 


封閉SELinux,在Shell中運轉以下敕令:

gedit /etc/selinux/config 

將config文件中的SELINUX項改成disabled,修正後的config文件的內容以下:

# This file controls the state of SELinux on the system. 
 
# SELINUX= can take one of these three values: 
 
# enforcing - SELinux security policy is enforced. 
 
# permissive - SELinux prints warnings instead of enforcing. 
 
# disabled - No SELinux policy is loaded. 
 
SELINUX=disabled 
 
# SELINUXTYPE= can take one of these two values: 
 
# targeted - Targeted processes are protected, 
 
# mls - Multi Level Security protection. 
 
SELINUXTYPE=targeted 

最初重啟體系


2、設置裝備擺設治理結點(192.168.124.141)

1. 設置裝備擺設config.ini設置裝備擺設文件

在shell中運轉以下敕令:

mkdir /var/lib/mysql-cluster 
 
cd /var/lib/mysql-cluster 
 
gedit config.ini 

設置裝備擺設文件config.ini內容以下:

[ndbd default] 
 
NoOfReplicas=2 
 
DataMemory=80M 
 
IndexMemory=18M 
 
[ndb_mgmd] 
 
NodeId=1 
 
hostname=192.168.124.141 
 
datadir=/var/lib/mysql-cluster 
 
[ndbd] 
 
NodeId=2 
 
hostname=192.168.124.142 
 
datadir=/usr/local/mysql/data 
 
[ndbd] 
 
NodeId=3 
 
hostname=192.168.124.143 
 
datadir=/usr/local/mysql/data 
 
[mysqld] 
 
NodeId=4 
 
hostname=192.168.124.144 
 
[mysqld] 
 
NodeId=5 
 
hostname=192.168.124.145 

2. 裝置治理結點

裝置治理節點,不須要mysqld二進制文件,只須要MySQL Cluster辦事端法式(ndb_mgmd)和監聽客戶端法式(ndb_mgm)。在shell中運轉以下敕令:

cp /usr/local/mysql/bin/ndb_mgm* /usr/local/bin 
 
cd /usr/local/bin 
 
chmod +x ndb_mgm* 

3、設置裝備擺設數據結點(192.168.124.142、192.168.124.143)

1. 添加mysql組和用戶

在shell中運轉以下敕令:

groupadd mysql 
 
useradd -g mysql mysql 

2. 設置裝備擺設my.cnf設置裝備擺設文件

在shell中運轉以下敕令:

gedit /etc/my.cnf 

設置裝備擺設文件my.cnf的內容以下:

[mysqld] 
 
basedir=/usr/local/mysql 
 
datadir=/usr/local/mysql/data 
 
socket=/usr/local/mysql/sock/mysql.sock 
 
user=mysql 
 
# Disabling symbolic-links is recommended to prevent assorted security risks 
 
symbolic-links=0 
 
[mysqld_safe] 
 
log-error=/var/log/mysqld.log 
 
pid-file=/var/run/mysqld/mysqld.pid 
 
[mysql_cluster] 
 
ndb-connectstring=192.168.124.141 

3. 創立體系數據庫

在shell中運轉以下敕令:

cd /usr/local/mysql 
 
mkdir sock 
 
scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data 

4. 設置數據目次

在shell中運轉以下敕令:

chown -R root . 
 
chown -R mysql.mysql /usr/local/mysql/data 
 
chown -R mysql.mysql /usr/local/mysql/sock 
 
chgrp -R mysql . 

5. 設置裝備擺設MySQL辦事

在shell中運轉以下敕令:

cp support-files/mysql.server /etc/rc.d/init.d/ 
 
chmod +x /etc/rc.d/init.d/mysql.server 
 
chkconfig --add mysql.server

4、設置裝備擺設SQL結點(192.168.124.144、192.168.124.145)

1. 添加mysql組和用戶

在shell中運轉以下敕令:

groupadd mysql 
 
useradd -g mysql mysql 

2. 設置裝備擺設my.cnf設置裝備擺設文件

在shell中運轉以下敕令:

gedit /etc/my.cnf

設置裝備擺設文件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.124.141 
 
[mysql_cluster] 
 
ndb-connectstring=192.168.124.141 

3. 創立體系數據庫

在shell中運轉以下敕令:

cd /usr/local/mysql 
 
mkdir sock 
 
scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data 

4. 設置數據目次

在shell中運轉以下敕令:

chown -R root . 
 
chown -R mysql.mysql /usr/local/mysql/data 
 
chown -R mysql.mysql /usr/local/mysql/sock 
 
chgrp -R mysql . 

5. 設置裝備擺設MySQL辦事

在shell中運轉以下敕令:

cp support-files/mysql.server /etc/rc.d/init.d/ 
 
chmod +x /etc/rc.d/init.d/mysql.server 
 
chkconfig --add mysql.server 

5、Cluster情況啟動

留意啟動次序:起首是治理節點,然後是數據節點,最初是SQL節點。

1. 啟動治理結點

在shell中運轉以下敕令:

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

 還可使用ndb_mgm來監聽客戶端,以下:

ndb_mgm

2. 啟動數據結點

初次啟動,則須要添加--initial參數,以便停止NDB節點的初始化任務。在今後的啟動進程中,則是不克不及添加該參數的,不然ndbd法式會消除在之前樹立的一切用於恢復的數據文件和日記文件。

/usr/local/mysql/bin/ndbd --initial 

假如不是初次啟動,則履行上面的敕令。

/usr/local/mysql/bin/ndbd 

3. 啟動SQL結點

若MySQL辦事沒有運轉,則在shell中運轉以下敕令:

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

4. 啟動測試

檢查治理節點,啟動勝利

6、集群測試

1. 測試一

如今我們在個中一個SQL結點長進行相干數據庫的創立,然後到別的一個SQL結點上看看數據能否同步。

在SQL結點1(192.168.124.144)上履行:

shell> /usr/local/mysql/bin/mysql -u root -p 
 
mysql>show databases; 
 
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; 

然後在SQL結點2上看數據能否同步過去了

經由測試,在非master上創立數據,可以同步到master上

檢查表的引擎是否是NDB,>show create table 表名;

2. 測試二

封閉一個數據節點 ,在別的一個節點寫輸出,開啟封閉的節點,看數據能否同步過去。

起首把數據結點1重啟,然後在結點2上添加數據

在SQL結點2(192.168.124.145)上操作以下:

mysql> create database bb; 
 
mysql> use bb; 
 
mysql> CREATE TABLE ctest3 (i INT) ENGINE=NDB; 
 
mysql> use aa; 
 
mysql> INSERT INTO ctest2 () VALUES (3333); 
 
mysql> SELECT * FROM ctest2; 

等數據結點1啟動終了,啟動數據結點1的辦事

#/usr/local/mysql/bin/ndbd --initial#service mysqld start
然後登錄出來檢查數據

# /usr/local/mysql/bin/mysql -u root –p
可以看到數據曾經同步過去了,解釋數據可以雙向同步了。

7、封閉集群

1. 封閉治理節點和數據節點,只須要在治理節點(ClusterMgm--134)裡履行:

Connected to Management Server at: localhost:1186 
 
2 NDB Cluster node(s) have shutdown. 
 
Disconnecting to allow management server to shutdown. 

顯示

Connected to Management Server at: localhost:1186 
 
2 NDB Cluster node(s) have shutdown. 
 
Disconnecting to allow management server to shutdown. 

2. 然後封閉Sql節點(135,136),分離在2個節點裡運轉:

shell> /etc/init.d/mysql.server stop

Shutting down MySQL... SUCCESS!

留意:要再次啟動集群,就依照第五部門的啟動步調便可,不外此次啟動數據節點的時刻就不要加”-initial”參數了。

以上就是MySQL集群搭建進程,願望對年夜家本身著手搭建MySQL集群有所贊助

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved