詳解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集群有所贊助