mysql資料庫集群配置(mysql資料庫集群方案)

本文目錄一覽:

如何在Windows系統中配置Mysql群集

MySQL 群集是一種技術,該技術允許在無共享的系統中部署「內存中」和「磁碟中」資料庫的 Cluster 。通過無共享體系結構,系統能夠使用廉價的硬體,而且對軟硬體無特殊要求。此外,由於每個組件有自己的內存和磁碟,不存在單點故障。MySQL Cluster 由一組計算機構成,每台計算機上均運行著多種進程,包括 MySQL 伺服器,NDB Cluster 的數據節點,管理伺服器,以及(可能存在的)專門的數據訪問程序。

管理伺服器(MGM節點)負責管理 Cluster 配置文件和 Cluster 日誌。Cluster 中的每個節點從管理伺服器檢索配置數據。當數據節點內出現新的事件時,節點將關於這類事件的信息傳輸到管理伺服器,然後,將這類信息寫入 Cluster 日誌。

目前能夠運行 MySQL Cluster 的操作系統有 Linux、Mac OS X 和 Solaris,最新的版本已經支持 Windows 操作系統。

MySQL 群集的數據節點之間的通信是不加密的,並且需要高速的帶寬,所以建議把群集建立在一個高速區域網內,不建議跨網段、跨公網的部署這種系統體系。

MySQL 群集分為三種節點:管理節點,數據節點和SQL節點。

管理節點:主要用於管理各個節點,能夠通過命令對某個節點進行重啟、關閉、啟動等操作。也能夠監視全部節點的工作狀態。

數據節點:主要是對數據的存儲,不提供其他的服務。

SQL節點:主要是對外提供SQL功能,類似一台普通的 MySQL Server。

而SQL節點和數據節點可以是同一台機器,也就是說這台機器即是SQL節點也是數據節點。它們只是邏輯關係上的劃分,實際部署時,甚至所有的階段都可以位於同一台物理機器上,只是配置較複雜些。

一、軟體下載機器操作環境

配置 MySQL 群集必需使用其群集版本,注意和 MySQL Server 版本的區別。本文以 Windows 平台下的 MySQL 群集版本 MySQL Cluster 7.1.3 為例(截至2010年6月初的最高版本),這是 MySQL Server 5.1 系列版本之一,添加了群集的功能。下載地址為:,選擇 mysql-cluster-gpl-noinstall-7.1.3-win32.zip 文件,這是一個 for Windows 32位版本的、免安裝的二進位版本。

根據自己的操作系統的位數,也可以選擇 64 位版本的。還有一個 27.2M 的 Windows(x86, 32-bit) 版本,下載下來需要自己編譯,有經驗的高級用戶可以選用。

本實驗在 2 台安裝 Windows Server 2003(sp2) 的機器上進行。節點分配及 IP 配置如下:

第一台機器,IP 為 10.0.0.201,作為管理節點(MGM),SQL節點1(SQL1),數據節點1(NDBD1)。

第二台機器,IP 為 10.0.0.202,作為SQL節點2(SQL2),數據節點2(NDBD2)。

管理節點最好不要與數據節點部署在同一台伺服器上,否則可能會因為該數據節點伺服器的當機,而導致管理節點伺服器的問題,從而導致整個群集系統的崩潰。

二,配置管理節點:

在第一台機器上,建文件夾 D:\mysql-cluster,在其下建立文件 config.ini,內容如下:

[NDBD DEFAULT]

NoOfReplicas=1

[MYSQLD DEFAULT]

[NDB_MGMD DEFAULT]

[TCP DEFAULT]

# Managment Server

[NDB_MGMD]

hostname=10.0.0.201

# Storage Engines

[NDBD]

hostname=10.0.0.201

datadir= D:\data

[NDBD]

hostname=10.0.0.202

datadir= D:\data

# SQL Engines

[MYSQLD]

hostname=10.0.0.201

[MYSQLD]

hostname=10.0.0.202

Cluster 管理節點的默認埠是1186,數據節點的默認埠是 2202。從 MySQL 5.0.3開始,該限制已被放寬,Cluster 能夠根據空閑的埠自動地為數據節點分配埠。如果你的版本低於5.0.22,請注意這個細節。

Cluster 管理節點作為一個服務端(通過運行 db_mgmd.exe 程序讀取本配置文件來啟動),通過本機上的客戶端 ndb_mgm.exe 來連接和操作。

三、配置 MySQL 資料庫伺服器:

在2台機器上,分別依次操作。

解壓 mysql-cluster-gpl-noinstall-7.1.3-win32.zip 文件到 D:\mysql-cluster-gpl-noinstall-7.1.3-win32 文件夾下,把 D:\mysql-cluster-gpl-noinstall-7.1.3-win32\bin 加到 Windows 的系統 path 中。

打開DOS命令行窗口(配置完系統path後,在再次打開新的命令行窗口),執行以下語句,讓 MySQL 作為 Windows 服務運行:

mysqld.exe -install mysql

再在 Windows 服務管理界面里,配置 mysql 服務,手動啟動(不要自動啟動)。

把 D:\mysql-cluster-gpl-noinstall-7.1.3-win32 下的某個備用的配置文件(例如my-small.ini)複製為 my.ini 文件。

建立 D:\tmp 文件夾。

四、配置SQL節點和數據節點:

在2台機器上,分別依次操作。

建立文件夾 D:\data。

編輯 NySQL 配置文件 D:\mysql-cluster-gpl-noinstall-7.1.3-win32\my.ini,在 [mysqld] 節末尾加語句:

#SQL群集節點

ndbcluster

ndb-connectstring=10.0.0.201

有了 ndbcluster 語句,mysql 服務將作為群集的 SQL 節點啟動。mysqld.exe 命令帶參數 –ndbcluster 運行是一樣的效果。

mysql 服務連接到數據節點的 2202 默認埠,或自動分配的別的可用埠。

(問題:SQL節點如何獲得數據節點的IP地址?是否通過連接管理節點,取得所有數據節點的IP地址的列表?)

這裡的連接字元串的值在 MySQL 服務啟動時使用,用於連接到管理節點。

在末尾加語句:

#NDB集群節點

[mysql_cluster]

ndb-connectstring=10.0.0.201

註:好像以下形式也可:

[ndbd]

ndb-connectstring=10.0.0.201

這裡的連接字元串的值在數據節點啟動時使用,用於連接到管理節點。

五,啟動群集各伺服器

啟動順序依次是:管理節點、數據節點、SQL節點。

1,啟動管理節點

在第一台伺服器的DOS窗口,運行命令:

C:\ndb_mgmd.exe -f d:\mysql-cluster.conf\config.ini –configdir=d:\mysql-cluster

註:如果不帶 –configdir=d:\mysql-cluster 參數,將默認為 C:\mysql\mysql-cluster 文件夾。

屏幕顯示:

C:\ndb_mgmd.exe -f d:\mysql-cluster.conf\config.ini –configdir=d:\mysql-cluster

2010-06-10 01:16:57 [MgmtSrvr] INFO — NDB Cluster Management Server. mysql-5.1.44 ndb-7.1.3

2010-06-10 01:16:57 [MgmtSrvr] INFO — Reading cluster configuration from 『d:\mysql-cluster.conf\config.ini’

2010-06-10 01:16:57 [MgmtSrvr] INFO — Got initial configuration from 『d:\mysql-cluster.conf\config.ini’, will try to set it when all ndb_mgmd(s) started

2010-06-10 01:16:57 [MgmtSrvr] INFO — Mgmt server state: nodeid 1 reserved for ip 10.0.0.201, m_reserved_nodes 1.

2010-06-10 01:16:57 [MgmtSrvr] INFO — Id: 1, Command port: *:1186

==INITIAL==

2010-06-10 01:16:57 [MgmtSrvr] INFO — Starting initial configuration change

2010-06-10 01:16:57 [MgmtSrvr] INFO — Configuration 1 commited

2010-06-10 01:16:57 [MgmtSrvr] INFO — Config change completed! New generation: 1

==CONFIRMED==

2,啟動數據節點

分別在2台伺服器的DOS窗口運行命令。

第一次,或初始化群集節點時,運行命令:

ndbd.exe –initial

初始化之後,只運行 ndbd.exe 即可。若帶參數 –initial 運行,將使正常運行的群集系統中,數據節點的數據全部丟失。

數據節點依賴管理節點伺服器,進行數據的自動複製和同步,使各個數據節點的數據保持一致,並在某個數據節點意外關閉又恢復後,進行數據的恢復重建。

3,啟動SQL節點

有了 ndbcluster 語句,啟動 mysql 服務,就啟動了SQL節點。應在前2種節點啟動後,分別在2台伺服器上進行。

六、群集管理

在所有的數據節點和SQL節點未啟動之前,運行群集管理節點服務的客戶端 ndb_mgm.exe,只能獲得以下信息:

C:\ndb_mgm.exe

— NDB Cluster — Management Client –

ndb_mgm show

Cluster Configuration

———————

[ndbd(NDB)] 2 node(s)

id=2 (not connected, accepting connect from 10.0.0.201)

id=3 (not connected, accepting connect from 10.0.0.202)

[ndb_mgmd(MGM)] 1 node(s)

id=1 @10.0.0.201 (mysql-5.1.44 ndb-7.1.3)

[mysqld(API)] 2 node(s)

id=4 (not connected, accepting connect from 10.0.0.201)

id=5 (not connected, accepting connect from 10.0.0.202)

ndb_mgm

說明數據節點、SQL節點均未連接到管理節點服務。

在所有的數據節點和SQL節點正確啟動之後,將獲得以下信息:

ndb_mgm show

Cluster Configuration

———————

[ndbd(NDB)] 2 node(s)

id=2 @10.0.0.201 (mysql-5.1.44 ndb-7.1.3, Nodegroup: 0, Master)

id=3 @10.0.0.202 (mysql-5.1.44 ndb-7.1.3, Nodegroup: 1)

[ndb_mgmd(MGM)] 1 node(s)

id=1 @10.0.0.201 (mysql-5.1.44 ndb-7.1.3)

[mysqld(API)] 2 node(s)

id=4 @10.0.0.201 (mysql-5.1.44 ndb-7.1.3)

id=5 @10.0.0.202 (mysql-5.1.44 ndb-7.1.3)

ndb_mgm

關閉群集的DOS命令:

ndb_mgm -e shutdown

或在 ndb_mgm 環境下執行 shutdown 命令。

以上命令或關閉管理節點服務和所有的數據節點。隨意、強行關閉群集系統(關機或關閉進程),會導致數據沒有全部寫回磁碟而導致的數據丟失。

關閉SQL節點的 mysqld 服務:

C:\net stop mysql,或:

C:\mysqladmin -u root shutdown

七、測試

正常運行的 MySQL 群集系統,通過SQL節點可以對數據節點進行資料庫操作,各數據節點可以自動進行數據同步。某一個數據節點關閉後,不影響SQL節點的使用。某些數據節點出錯後,可以進行恢復。需要注意的是,SQL節點建立資料庫時,必須選擇「ndbcluster」資料庫引擎。如果不選擇「ndbcluster」引擎,建立的資料庫將不會進入MySQL群集系統中,但是可以獨立使用。

另外,每個 NDB 表必須有一個主鍵。如果在創建表時未定義主鍵,NDB Cluster 存儲引擎將自動生成隱含的主鍵。該隱含的鍵也將佔用空間,就像任何其他的表索引一樣。由於沒有足夠的內存來容納這些自動創建的鍵,出現問題並不罕見。

什麼是MySQL集群?帶你全面掌握MySQL集群原理

如果Master收到所有 Slave的OK消息,它就會向所有Slave發送提交消息,告訴Slave提交該事務;

如果Slave收到提交請求,它們就會提交事務,並向Master發送事務已提交 的確認;

如果Slave收到取消請求,它們就會撤銷所有改變並釋放所佔有的資源,從而中止事務,然後向Masterv送事務已中止的確認。

隨著計算機和信息技術的迅猛發展和普及,行業應用系統的規模迅速擴大,行業應用所產生的數據量量呈爆炸式增長,類似於MySQL集群這樣的技術得到了廣泛的運用,MySQL集群原理的運用就顯得尤其重要。

動力節點的MySQL集群教程 ,對於MySQL集群技術的應用場景有著詳細的介紹,能夠有效幫助我們學以致用, 教程主要從MySQL集群架構解析到架構部署再到集群架構測試,一步步帶你部署企業級的MySQL資料庫集群項目,熟悉各個環節技術點,提升資料庫架構設計能力。

•001.MySQL集群視頻教程:主從複製介紹

•002.MySQL集群視頻教程:主從複製結構

•003.MySQL集群視頻教程:主從複製流程原理

•004.MySQL集群視頻教程:多實例安裝

•005.MySQL集群視頻教程:多實例鏈接

•006.MySQL集群視頻教程:一主多從-配置

•007.MySQL集群視頻教程:-一主多從測試

•008.MySQL集群視頻教程:雙主雙從配置

•009.MySQL集群視頻教程:雙主雙從測試

•010.MySQL集群視頻教程:多數據源-環境搭建

•011.MySQL集群視頻教程:多算數據源實現

•012.MySQL集群視頻教程:修復MySLQ主從複製

•013.MySQL集群視頻教程:多數據源的問題

•014.MySQL集群視頻教程:動態數據源

•015.MySQL集群視頻教程:動態數據源執行流程

•016.MySQL集群視頻教程:SpringBoot集成多數據源

•017.MySQL集群視頻教程:SpringBoot集成多數據源問題

•018.MySQL集群視頻教程:SpringBoot集成動態數據源

單機MySQL資料庫怎麼做成分散式資料庫集群?

可以採用開源的MyCat解決方案,優點是免費,缺點是出現問題可能要自己解決或者去社區尋找解決方案;

也可以採用北京萬里開源軟體有限公司的集群解決方案,後端使用開源的MySQL存儲數據,優點是有任何問題他們都可以幫忙解決,而且不用擔心系統後續的擴展、集群高可用等情況,他們的工程師還開發過MySQL核心代碼,找他們可以睡個安穩覺,缺點是不免費,他們還有自己的國產資料庫GreatDB,100%兼容MySQL。

對於初創企業,可以考慮選擇免費的開源解決方案,畢竟遇到的問題可能有限,如果要想長期穩定發展,還是選擇萬里開源這樣的公司比較靠譜一些。

如何安裝配置基於2台伺服器的MySQL集群

Servers1和Server2作為實際配置MySQL集群的伺服器。

對於作為管理節點的Server3則要求較低,只需對Server3的系統進行很小的調整並且無需安裝MySQL,Server3可以使用一台配置較低的計算機並且可以在Server3同時運行其他服務。

如何配置MySQL集群在一台伺服器

下文就是教你如何在一台伺服器上搭建Cluster。

一,先確認Cluster的包已經正確安裝

[root@cluster-one ~]# rpm -aq|grep -i mysql

MySQL-Cluster-client-gpl-7.2.10-1.el6.x86_64

MySQL-Cluster-server-gpl-7.2.10-1.el6.x86_64

MySQL-Cluster-shared-compat-gpl-7.2.10-1.el6.x86_64

MySQL-Cluster-devel-gpl-7.2.10-1.el6.x86_64

二,創建如下幾個配置文件,下面啟動時要用到

[root@cluster-one mysqlData]# more config.ini

[NDBD DEFAULT]

NoOfReplicas=2

[TCP DEFAULT]

#portnumber=3388

[NDB_MGMD]

NodeId = 1

hostname=localhost

datadir=/mysqlData/clustermgmd-data/

[NDBD]

NodeId = 2

hostname=localhost

datadir=/mysqlData/clusterndb1-data/

[NDBD]

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/249333.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 17:11
下一篇 2024-12-12 17:11

相關推薦

  • 如何修改mysql的埠號

    本文將介紹如何修改mysql的埠號,方便開發者根據實際需求配置對應埠號。 一、為什麼需要修改mysql埠號 默認情況下,mysql使用的埠號是3306。在某些情況下,我們需…

    編程 2025-04-29
  • Python 常用資料庫有哪些?

    在Python編程中,資料庫是不可或缺的一部分。隨著互聯網應用的不斷擴大,處理海量數據已成為一種趨勢。Python有許多成熟的資料庫管理系統,接下來我們將從多個方面介紹Python…

    編程 2025-04-29
  • KeyDB Java:完美的分散式高速緩存方案

    本文將從以下幾個方面對KeyDB Java進行詳細闡述:KeyDB Java的特點、安裝和配置、使用示例、性能測試。 一、KeyDB Java的特點 KeyDB Java是KeyD…

    編程 2025-04-29
  • openeuler安裝資料庫方案

    本文將介紹在openeuler操作系統中安裝資料庫的方案,並提供代碼示例。 一、安裝MariaDB 下面介紹如何在openeuler中安裝MariaDB。 1、更新軟體源 sudo…

    編程 2025-04-29
  • Python操作MySQL

    本文將從以下幾個方面對Python操作MySQL進行詳細闡述: 一、連接MySQL資料庫 在使用Python操作MySQL之前,我們需要先連接MySQL資料庫。在Python中,我…

    編程 2025-04-29
  • 資料庫第三範式會有刪除插入異常

    如果沒有正確設計資料庫,第三範式可能導致刪除和插入異常。以下是詳細解釋: 一、什麼是第三範式和範式理論? 範式理論是關係資料庫中的一個規範化過程。第三範式是範式理論中的一種常見形式…

    編程 2025-04-29
  • MySQL遞歸函數的用法

    本文將從多個方面對MySQL遞歸函數的用法做詳細的闡述,包括函數的定義、使用方法、示例及注意事項。 一、遞歸函數的定義 遞歸函數是指在函數內部調用自身的函數。MySQL提供了CRE…

    編程 2025-04-29
  • leveldb和unqlite:兩個高性能的資料庫存儲引擎

    本文將介紹兩款高性能的資料庫存儲引擎:leveldb和unqlite,並從多個方面對它們進行詳細的闡述。 一、leveldb:輕量級的鍵值存儲引擎 1、leveldb概述: lev…

    編程 2025-04-28
  • 使用Go-Redis獲取Redis集群內存使用率

    本文旨在介紹如何使用Go-Redis獲取Redis集群的內存使用率。 一、Go-Redis簡介 Go-Redis是一個用於連接Redis伺服器的Golang客戶端。它支持Redis…

    編程 2025-04-28
  • MySQL bigint與long的區別

    本文將從數據類型定義、存儲空間、數據範圍、計算效率、應用場景五個方面詳細闡述MySQL bigint與long的區別。 一、數據類型定義 bigint在MySQL中是一種有符號的整…

    編程 2025-04-28

發表回復

登錄後才能評論