搭建mysql NDB集群


NDB群集安裝

介紹

https://dev.mysql.com/doc/refman/8.0/en/mysql-cluster-basics.html

NDBCLUSTER (也稱為NDB)是一種內存存儲引擎,提供高可用性和數據持久性功能。

NDBCLUSTER存儲引擎可以與一系列故障切換和負載平衡選項進行配置,但最簡單的是開始在集群級別的存儲引擎。NDB Cluster的NDB存儲引擎包含一整套數據,僅依賴於群集本身內的其他數據。

NDB群集 的“ 群集 ”部分的配置獨立於MySQL服務器。在NDB群集中,群集的每個部分都被視為一個 節點

共有三種類型的群集節點,並且在最小的NDB群集配置中,將至少有三個節點,這些類型之一:

  • 管理節點:這種類型的節點的作用是管理NDB群集中的其他節點,執行諸如提供配置數據,啟動和停止節點以及運行備份之類的功能。由於此節點類型管理其他節點的配置,因此應首先啟動此類型的節點,然后再啟動任何其他節點。使用命令ndb_mgmd啟動一個MGM節點 

  • 數據節點:這種類型的節點存儲集群數據。

    NDB群集表通常完全存儲在內存中,而不是磁盤上(這就是為什么我們將NDB群集稱為 內存數據庫)。但是,某些NDB群集數據可以存儲在磁盤上。

  • SQL節點:這是訪問集群數據的節點。對於NDB群集,SQL節點是使用NDBCLUSTER存儲引擎的傳統MySQL服務器 

    SQL節點實際上只是API節點的一種特殊類型 ,它指定訪問NDB群集數據的任何應用程序。API節點的另一個示例是用於還原集群備份的 ndb_restore實用程序。可以使用NDB API編寫此類應用程序。

1、資源規划

節點

IP地址

硬件資源

系統

 

 

管理節點(mgmd

192.168.137.128

1cpu1G內存

Centos7

 

 

管理節點(mgmd

192.168.137.129

1cpu1G內存

Centos7

 

 

數據節點“ A”ndbd

SQL節點(mysqld

192.168.137.130

1cpu3G內存

(數據節點吃內存)

Centos7

 

 

數據節點“ B”ndbd

SQL節點(mysqld

192.168.137.131

1cpu3G內存

Centos7

 

 

 

2、下載安裝文件(192.168.137.130192.168.137.131)

官網地址:https://dev.mysql.com/downloads/cluster/

wget https://cdn.mysql.com//Downloads/MySQL-Cluster-8.0/mysql-cluster-8.0.19-linux-glibc2.12-x86_64.tar.gz

 

3.2SQL節點

將位置更改為包含下載文件的目錄,解壓縮歸檔文件,並創建一個名為mysqlmysql 目錄的符號鏈接 

useradd mysql

tar -xf mysql-cluster-gpl-8.0.20-linux-glibc2.12-x86_64.tar.gz

mv mysql-cluster-gpl-8.0.20-linux-glibc2.12-x86_64 /usr/local/mysql

 

3.3將位置更改為mysql目錄,並使用mysqld 設置系統數據庫 --initialize,如下所示:

#rm -rf /data/apps/mysql-8.0/

mkdir  -p  /data/apps/mysql-8.0/logs  && chown -R mysql.mysql  /data/apps/mysql-8.0

chown -R mysql.mysql /usr/local/mysql

cat > /usr/local/mysql/my.cnf <<EOE

[mysqld]

basedir=/usr/local/mysql

datadir=/data/apps/mysql-8.0/data

socket=/tmp/mysql.sock

user=mysql

symbolic-links=0

lower_case_table_names=1

max_connections=2000

wait_timeout=120

interactive_timeout=120

key_buffer_size=128M

tmp_table_size=16M

read_buffer_size=4M

read_rnd_buffer_size=16M

sort_buffer_size=32M

innodb_buffer_pool_size=1024M

ndbcluster

 

[mysqld_safe]

log-error=/data/apps/mysql-8.0/logs/mysqld.log

pid-file=/data/apps/mysql-8.0/mysqld.pid

user=mysql

 

[mysql_cluster]

ndb-connectstring=192.168.137.128,192.168.137.129 

EOE

mv /etc/my.cnf /etc/my.cnf_`date +%F-%s`

ln -s  /usr/local/mysql/my.cnf  /etc/my.cnf

 

 

 3.4初始化數據庫

/usr/local/mysql/bin/mysqld --defaults-file=/usr/local/mysql/my.cnf --basedir=/usr/local/mysql --datadir=/data/apps/mysql-8.0/data  --initialize --user=mysql 

 

 

 

記住密碼一會兒用

 

 

3.4 MySQL啟動腳本復制到適當的目錄,使其可執行,並將其設置為在操作系統啟動時啟動:

cp support-files/mysql.server  /etc/rc.d/init.d/

chmod +x /etc/rc.d/init.d/mysql.server

chkconfig --add mysql.server

 

4.1數據節點,拷貝數據節點啟動文件,如數據節點和sql節點在同一台,此步忽略

scp 192.168.137.130:/usr/local/mysql/bin/{ndbd,ndbmtd}  /usr/local/bin/.

cd /usr/local/bin

chmod +x ndb*

mkdir -p /data/apps/mysql-8.0

在每個數據節點主機上應重復上述步驟。

 

5.1管理節點。  137.128137.129

scp 192.168.137.130:/usr/local/mysql/bin/ndb_mgm*  /usr/local/bin/.
cd /usr/local/bin
chmod +x ndb_mgm*
mkdir -p /usr/local/mysql/mysql-cluster

 

5.2配置管理節點。

#配置文件詳解

#https://dev.mysql.com/doc/refman/8.0/en/mysql-cluster-config-file.html

 

cat >  /usr/local/mysql/config.ini <<EOE
[ndbd default]
# Options affecting ndbd processes on all data nodes:
NoOfReplicas=2    # Number of replicas
DataMemory=98M    # How much memory to allocate for data storage

[ndb_mgmd]
NodeId=1
# Management process options:
HostName=192.168.137.128          # Hostname or IP address of MGM node
DataDir=/usr/local/mysql/mysql-cluster  # Directory for MGM node log files

[ndb_mgmd]
NodeId=2
# Management process options:
HostName=192.168.137.129          # Hostname or IP address of MGM node
DataDir=/usr/local/mysql/mysql-cluster  # Directory for MGM node log files

[ndbd]
# Options for data node "A":
                               # (one [ndbd] section per data node)
HostName=192.168.137.130         # Hostname or IP address
NodeId=3                        # Node ID for this data node
DataDir=/data/apps/mysql-8.0   # Directory for this data node's data files

[ndbd]
# Options for data node "B":
HostName=192.168.137.131          # Hostname or IP address
NodeId=4                        # Node ID for this data node
DataDir=/data/apps/mysql-8.0   # Directory for this data node's data files

[mysqld]
NodeId=5
# SQL node options:
HostName=192.168.137.130      # Hostname or IP address
                                # (additional mysqld connections can be
                                # specified for this node for various
[mysqld] # SQL node options: NodeId
=6 HostName=192.168.137.131 # purposes such as running ndb_restore) EOE

 

6NDB群集的初始啟動

6.1管理主機

/usr/local/mysql/bin/ndb_mgmd  -f /usr/local/mysql/config.ini  --initial (初始化才加)

 

 

 

6.2在每個數據節點主機上,運行以下命令以啟動 ndbd進程:

ndbd --initial  (初始化才加)

如報錯,執行下列命令

 

ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1

ln -s /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1

再次啟動成功:

 

6.3 Sql節點啟動數據庫:

/usr/local/mysql/bin/mysqld &

 

如果一切順利,並且集群已正確設置,則集群現在應該可以運行了。您可以通過調用ndb_mgm管理節點客戶端來對此進行測試。輸出看起來應該像這里顯示的一樣,盡管您可能會看到輸出有些細微的差異,具體取決於所使用的MySQL版本:

管理節點

 

 

 

 

SQL節點在這里被稱為 [mysqld(API)],這反映了mysqld進程充當NDB群集API節點的事實 。

7、安全關閉和重新啟動NDB群集

7.1要關閉群集,請在托管管理節點的計算機上的外殼程序中輸入以下命令:

ndb_mgm -e shutdown   -e此處 的選項用於將命令從外殼傳遞給ndb_mgm客戶端。

7.2 再次啟動,管理節點執行

ndb_mgmd   -f /usr/local/mysql/config.ini  

7.3 在每個數據節點執行

ndbd

7.4 使用ndb_mgm客戶端來驗證兩個數據節點均已成功啟動。

7.5 在SQL主機上:

/usr/local/mysql/bin/mysqld &

如果其中一個數據節點掛掉,必須讓其中一個節點完全恢復,集群才可以繼續使用

 

 8、 其他注意

創建表時必須設定主鍵和加上ENGINE=NDBCLUSTER

create table s_position

(

id int not null auto_increment,

name varchar(20) not null default '經理', #設定默認值

description varchar(100),

primary key PK_positon (id) #設定主鍵

) ENGINE=NDBCLUSTER;

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM