Mysql集群搭建
一、NDB集群核心概念
(1)介紹
NDBCLUSTER (也稱為NDB)是一種內存存儲引擎,提供高可用性和數據持久性功能。
的NDBCLUSTER存儲引擎可以與一系列故障切換和負載平衡選項進行配置,但最簡單的是開始在集群級別的存儲引擎。NDB Cluster的NDB存儲引擎包含一整套數據,僅依賴於集群內部的其他數據。
NDB Cluster 的“Cluster”部分是獨立於MySQL服務器配置的。在NDB群集中,群集的每個部分都被視為一個節點。
(2)節點
有三種類型的集群節點,在最小的NDB集群配置中,將至少有三個節點,每種節點中的一種:
管理節點:此類節點的作用是管理NDB集群中的其他節點,執行諸如提供配置數據,啟動和停止節點以及運行備份等功能。
數據節點:此類節點存儲群集數據。
NDB Cluster表通常完全存儲在內存中而不是磁盤上(這就是我們將NDB Cluster稱為 內存數據庫的原因)。但是,一些NDB Cluster數據可以存儲在磁盤上;
SQL節點:這是一個訪問集群數據的節點。對於NDB Cluster,SQL節點是使用NDBCLUSTER存儲引擎的傳統MySQL服務器 。SQL節點是使用和 選項啟動的mysqld進程
重要
期望在生產環境中使用三節點設置是不現實的。這種配置不提供冗余; 要從NDB Cluster的高可用性功能中受益,您必須使用多個數據和SQL節點。強烈建議使用多個管理節點。
二、集群安裝--准備工作
以下操作與官網有些出入,如有疑問,可自行翻閱資料
https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-install-linux-binary.html 官網地址
(1)環境
系統 |
CentOS Linux release 7.2.1511 (Core) |
mysql集群版本 |
mysql-cluster-gpl-7.6.9-linux-glibc2.12 |
這里這是簡單搭建,三台機器,三個節點
要保證機器之間能夠ping通
192.168.10.151 |
管理節點 |
192.168.10.67 |
sql節點 |
192.168.10.162 |
數據節點 |
(2)添加mysql用戶
在三台機器,均執行以下操作
1、增加用戶和群組
shell> groupadd mysql shell> useradd -g mysql -s /bin/false mysql
shell> id mysql 查看mysql是否創建成功
uid=1001(mysql) gid=1001(mysql) groups=1001(mysql)
2、下載安裝包,並上傳到3台機器上面
三、集群安裝--安裝二進制文件
(1)SQL節點。
SQL節點在指定用於承載SQL節點的每台計算機上
以下操作為初始化數據庫
1、
shell> tar -xzvf mysql-cluster-gpl-7.6.9-linux-glibc2.12-x86_64.tar.gz shell> mv mysql-cluster-gpl-7.6.9-linux-glibc2.12-x86_64 /usr/local/ #移動 shell> cd /usr/local/ shell> mv mysql-cluster-gpl-7.6.9-linux-glibc2.12-x86_64 mysql #改名字 shell> cd mysql shell> mkdir data [root@fdmsdb /]# chown mysql:mysql data [root@fdmsdb /]# chmod -R 755 data
2、修改/etc/my.cnf 文件
①先自行創建my.cnf 所需文本,並更改權限
例如
cd /var/log/
touch mysqld.log
chown mysql:mysql mysqld.log
chmod 775 mysqld.log
②/my.cnf 具體配置如下
[mysqld] # Options for mysqld process: symbolic-links=0 basedir = /usr/local/mysql datadir = /usr/local/mysql/data socket=/tmp/mysql.sock [mysqld_safe] #錯誤日志 log-error=/var/log/mysqld.log pid-file=/var/run/mariadb/mariadb.pid # include all files from the config directory # #!includedir /etc/my.cnf.d
3、初始化數據庫
bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --lc_messages_dir=/usr/local/mysql/share
4、設置MySQL服務器和數據目錄的必要權限
shell> cd /usr/local/mysql shell> chown -R root . shell> chown -R mysql data shell> chgrp -R mysql .
5、設置鏈接
shell> cp support-files/mysql.server /etc/rc.d/init.d/ shell> chmod +x /etc/rc.d/init.d/mysql.server shell> chkconfig --add mysql.server
(啟動腳本目錄可能因操作系統和版本而異 - 例如,在某些Linux發行版中,它是 /etc/init.d。)
請記住,必須在要駐留SQL節點的每台計算機上重復上述步驟。
(2)數據節點。
安裝數據節點一般來說不需要 mysqld二進制文件。只需要NDB Cluster數據節點可執行ndbd(單線程)或 ndbmtd(多線程)。
①為了保險起見,重復SQL節點初始化數據庫的操作
②
shell> cd /usr/local/mysql shell> cp bin/ndbd /usr/local/bin/ndbd shell> cp bin/ndbmtd /usr/local/bin/ndbmtd shell> cd /usr/local/bin shell> chmod +x ndb*
應在每個數據節點主機上重復上述步驟。
(3)管理節點
安裝管理節點不需要 mysqld二進制文件。只需要NDB群集管理服務器(ndb_mgmd); 您最有可能也想安裝管理客戶端(ndb_mgm)
shell> tar -zxvf mysql-cluster-gpl-7.6.9-linux-glibc2.12-x86_64.tar.gz shell> cd mysql-cluster-gpl-7.6.9-linux-glibc2.12-x86_64 shell> cp bin/ndb_mgm* /usr/local/bin
# 創建快捷方式
shell> cd /usr/local/bin
shell> chmod +x ndb_mgm*
三、NDB集群的初始配置
(1)配置數據節點和SQL節點
在my.cnf添加下列信息
shell> vi /etc/my.cnf
[mysqld] # Options for mysqld process: ndbcluster # run NDB storage engine [mysql_cluster] # Options for NDB Cluster processes: ndb-connectstring=192.168.10.151 # location of management server
(2)配置管理節點
1、
shell> mkdir /var/lib/mysql-cluster shell> cd /var/lib/mysql-cluster shell> vi config.ini
[ndbd default] # Options affecting ndbd processes on all data nodes: NoOfReplicas=1 # Number of replicas 目前只有數據一個數據節點,設置為1 DataMemory=80M # How much memory to allocate for data storage IndexMemory=18M # How much memory to allocate for index storage # For DataMemory and IndexMemory, we have used the # default values. Since the "world" database takes up # only about 500KB, this should be more than enough for # this example NDB Cluster setup. ServerPort=2202 # This the default value; however, you can use any # port that is free for all the hosts in the cluster # Note1: It is recommended that you do not specify the port # number at all and simply allow the default value to be used # instead # Note2: The port was formerly specified using the PortNumber # TCP parameter; this parameter is no longer available in NDB # Cluster 7.6. [ndb_mgmd] # Management process options: HostName=192.168.10.151 # Hostname or IP address of MGM node DataDir=/var/lib/mysql-cluster # Directory for MGM node log files
[ndbd] # Options for data node "A": # (one [ndbd] section per data node HostName=192.168.10.162 # Hostname or IP address NodeId=2 # Node ID for this data node DataDir=/usr/local/mysql/data # Directory for this data node's data files [mysqld] # SQL node options: HostName=192.168.10.67 # Hostname or IP address # (additional mysqld connections can be # specified for this node for various # purposes such as running ndb_restore)
2、開放端口
Cluster管理節點的默認端口是1186; 數據節點的默認端口是2202.但是,群集可以自動為那些已經空閑的數據節點分配端口。
/sbin/iptables -I INPUT -p tcp --dport 1186 -j ACCEPT -- 開放端口
四、啟動集群
(1)在管理主機上
啟動管理節點進程
ndb_mgmd -f /var/lib/mysql-cluster/config.ini
(2)在每個數據節點主機上
shell> ndbd
(3)在SQL主機
shell> /usr/local/mysql/bin/mysqld_safe &
(4)測試
如果一切順利,並且群集已正確設置,則群集現在應該可以運行。您可以在管理節點上調用ndb_mgm客戶端來測試它。
shell> ndb_mgm -- NDB Cluster -- Management Client -- ndb_mgm> SHOW Connected to Management Server at: localhost:1186 Cluster Configuration
至此大功告成
shell> ndb_mgm -e shutdown # 關閉群集
如果出現報錯,請檢查文件配置和文件的權限是否正確