mysql cluster配置

依賴包要求:cmake     gcc    gcc-c++     ncurses     Perl     ncurses-develhtml

在7.3以及更高的版本中, WITH_NDB_JAVA是默認啓動的,須要配置JAVA環境,WITH_CLASSPATH配置JAVA目錄。若是不啓用,能夠: -DWITH_NDB_JAVA=OFF。java

CMAKE配置選項:node

具體參閱:https://dev.mysql.com/doc/refman/5.6/en/source-configuration-options.html#cmake-general-optionsmysql

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DMYSQL_UNIX_ADDR=/usr/local/mysql/data/mysqld.sock -DWITH_EXTRA_CHARSETS=all -DWITH_SSL=bundled -DWITH_EMBEDDED_SERVER=1 -DENABLED_LOCAL_INFILE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_NDB_JAVA=OFF -DWITH_NDBCLUSTER_STORAGE_ENGINE=1 -DWITH_boost=/usr/local/boostc++

SQL節點存儲的是表結構,數據節點存儲的是數據文件。sql

配置參數:數據庫

數據節點配置參數參閱:https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-params-ndbd.html                   https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-ndbd-definition.htmlapi

SQL節點配置參數參閱:https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-params-api.html                      https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-api-definition.html緩存

管理節點參數參閱:https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-params-mgmd.html                        https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-mgm-definition.htmltcp

其餘參數參閱:https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-params-other.html

管理節點須要一個config.ini文件,SQL節點和數據節點須要一個my.cnf文件。

SQL節點與數據節點配置(my.cnf):     #SQL節點與數據節點配置都是同樣的,在管理節點上區分兩個節點。

[mysqld]

ndbcluster
skip-ndbcluster
binlog_format=row

log-bin=fb-bin

server-id=2151

ndb-connectstring=192.168.152.156

secure-file-priv=''

[mysql_cluster]
ndb-connectstring=192.168.152.156

[ndbd]
connect-string=192.168.152.156

[ndb_mgm]
connect-string=192.168.152.156

[ndb_mgmd]
config-file=/etc/mysql/config.ini


[mysqldump]
quick
max_allowed_packet = 24M

[mysql]
auto-rehash #使用TAB鍵自動補全

[mysqld_safe]
open-files-limit = 65536

 

 

管理節點(config.ini):

[ndbd default]                     #數據節點全部默認配置

NoOfReplicas=2           #一份數據在集羣中的存在份數,與數據節點對應

DataMemory=80M      #裝載到內存中的數據大小

IndexMemory=18M      #裝載到內存中索引大小

ServerPort=2202          #默認端口

LockPagesInMainMemory=1           #將進程鎖定在內存中,以免與磁盤的交換

NoOfFragmentLogFiles=300     #設置節點的REDO日誌文件的個數

DataDir=/usr/local/mysql/data       #數據節點目錄,包括集羣日誌文件,進程輸出文件和守護進程的進程ID(PID)文件

MaxNoOfConcurrentOperations=100000     #設置事務中同時更新的最大記錄數

MaxNoOfConcurrentTransactions=50000  #定義節點中最大事務數

ODirect=1                #開啓這個設置會使內地版NDB嘗試採用O_DIRECT寫LCP、備份、重作日誌,一般使用更少的內存和cpu。

SchedulerSpinTimer=400    #定義線程在進入睡眠狀態以前多少毫秒被執行

SchedulerExecutionTimer=100    #定義線程在被髮送前多少毫秒被執行

RealTimeScheduler=1    #設置ndbcluster線程啓用真實時間的時序安排

TimeBetweenGlobalCheckpoints=1000

TimeBetweenEpochs=200

RedoBuffer=32M    #設置redo日誌緩存

MaxNoOfTables=1024    #該參數爲做爲總體的簇設置了最大表對象數目。該參數的默認值爲128。最小值爲8,最大值爲20320,每一個表對象每節點約需20KB的空間。

MaxNoOfOrderedIndexes=256    #設置哈希索引在系統中贊成時間被使用的總數,該參數的默認值爲128。

BackupMaxWriteSize=1M    #設置備份日誌和備份數據緩衝寫入磁盤的默認大小
BackupDataBufferSize=16M    #設置備份數據緩存的大小
BackupLogBufferSize=4M    #設置備份日誌緩存的大小
BackupMemory=20M    #備分內存,該參數是BackupDataBufferSize和BackupLogBufferSize之和。

[tcp default]

SendBufferMemory=2M

ReceiveBufferMemory=2M

[ndb_mgmd]              #管理節點

Nodeid=1

HostName=198.51.100.10           #IP或者hostname,管理節點

DataDir=/usr/local/mysql/data            #數據文件存放目錄

[ndbd]      #數據節點節點1

HostName=198.51.100.30             #節點IP

NodeId=11                                       #節點ID

LockExecuteThreadToCPU=1

LockMaintThreadsToCPU=0

[ndbd]     #數據節點節點2

HostName=198.51.100.40                #節點IP

NodeId=12

LockExecuteThreadToCPU=1

LockMaintThreadsToCPU=0

[mysqld]               #sql節點1

Nodeid=21

HostName=198.51.100.20

[mysqld]    #sql節點2

Nodeid=22

HostName=198.51.100.20

 

初始化數據庫:

5.7以前:

mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

5.7以後:

mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

管理節點上進行初始化:

        ndb_mgmd -f /var/lib/mysql-cluster/config.ini --ndb-nodeid=1                 #指定config.ini文件位置,配置文件位置

數據節點上執行:

    ndbd --ndbcluster

--ndbcluster(--initial):該NDBCLUSTER存儲引擎是必要的使用NDB簇

SQL節點上執行:

service mysqld start

啓動順序:管理節點-->數據節點-->SQL節點

 

關閉集羣,在管理節點上執行:

    ndb_mgm -e shutdown

錯誤解決:

一、Mixing of localhost (default for [NDBD]HostName) with other hostname(192.168.152.156) is illegal

查找管理節點上config.ini文件中的[ndbd]模塊,刪除多餘的。

二、Nodegroup 0 has 1 members, NoOfReplicas=2

編輯config.ini文件,修改參數:NoOfReplicas值修改成1。

三、數據節點連接不上

檢查防火牆是否關閉,配置文件config.ini是否配置正確。

 

mysql cluster限制:

一、數據節點的節點ID範圍必須是1-48     管理節點的節點ID在1-255    NDB羣集中的最大節點總數爲255    元數據最大數據量爲20320

二、事物隔離級別只支持RC級別,當更新或刪除多行數據時,可能會發生讀已提交現象,這時必須使用當前讀。

三、任何包含BLOB和TEXT的列,NDB引擎都會使用S鎖來鎖定改行,可是對於有索引的列,不會使用共享鎖

四、錯誤會致使整個事物回滾

五、不適合處理大事物,由於會消耗更多的內存,自己NDB引擎是創建在內存上的

六、硬件機器必須是同一種體系結構

七、sql_log_bin對數據操做沒有影響; 可是,它支持模式操做。NDB羣集沒法爲具備BLOB列但沒有主鍵的表生成二進制日誌

八、副本冗餘數量爲1時,數據丟失沒法恢復,因此必須爲2.

相關文章
相關標籤/搜索