日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql群集配置_CentOS7 - 建立一个MySQL集群

發布時間:2024/7/23 数据库 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql群集配置_CentOS7 - 建立一个MySQL集群 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Standing up a MySQL cluster

此配方將指導您完成設置MySQL群集的過程。 通過跨多個系統劃分數據并維護副本以避免單點故障,群集數據庫可以應對可伸縮性和高可用性的挑戰。

集群的成員稱為節點。 MySQL集群中有三種節點類型:數據節點,API節點和管理節點。 數據節點負責存儲數據。 然后,用戶和進程連接到API節點以訪問數據庫。 管理節點作為整體管理集群。 雖然可以在同一系統上安裝多個節點,但是,API節點和數據節點都可以托管在同一系統上。 但是,在同一系統上托管多個數據節點顯然不是一個好主意,因為它否定了MySQL分發數據的努力。

準備

此配方演示了如何使用四個系統部署MySQL集群。 第一個系統將托管管理節點,我們假設它具有IP地址192.168.56.100。 第二個系統將托管API節點并具有地址192.168.56.101。 其余系統將配置數據節點,并使用地址192.168.56.102和192.168.56.103。 您需要使用root帳戶或sudo在所有四個系統上進行管理訪問.

怎么做。。。

請按照以下步驟設置群集MySQL數據庫:

  • 從MySQL網站下載集群存檔,并使用tar解壓縮其包:
curl -L dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/ MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar | tar x
  • 在每個系統上,安裝perl-Data-Dumper并將已安裝的mariadb-libspackage替換為下載的MySQL-Cluster-shared軟件包:
yum install perl-Data-Dumper MySQL-Cluster-shared-gpl-*.rpmyum erase mariadb-libs
  • 在每個系統上安裝MySQL-Cluster-server和MySQL-Cluster-client軟件包:
yum install MySQL-Cluster-{server,client}-gpl-*.rpm
  • 在托管管理節點的系統上,創建/ var / lib / mysql-cluster目錄:
mkdir /var/lib/mysql-cluster
  • 在/var/lib/mysql-cluster/config.ini中為管理節點創建集群的配置文件,如下所示:
[ndbd default]NoOfReplicas = 2DataMemory = 100MIndexMemory = 10MServerPort = 2202[ndb_mgmd]hostname = 192.168.56.100[mysqld]hostname = 192.168.56.101[ndbd]hostname = 192.168.56.102[ndbd]hostname = 192.168.56.103
  • 啟動管理節點:
ndb_mgmd -f /var/lib/mysql-cluster/config.ini
  • 在管理節點系統的防火墻中打開端口1186:
firewall-cmd --zone=public --permanent --add-port=1186/tcpfirewall-cmd --reload
  • 在每個數據節點的系統上,使用以下命令創建文件/etc/my.cnf:
[mysql_cluster]ndb-connectstring = 192.168.56.100
  • 啟動每個數據節點:
ndbd
  • 在數據節點的系統防火墻中打開端口2202:
firewall-cmd --zone=public --permanent --add-port=2202/tcpfirewall-cmd --reload
  • 使用以下命令在托管API節點的系統上創建/etc/my.cnf:
[mysqld]ndbclusterdefault-storage-engine = ndbcluster[mysql_cluster]ndb-connectstring = 192.168.56.100
  • 啟動MySQL服務器作為API節點:
mysqld_safe &
  • 檢索安裝MySQL服務器時創建的root帳戶的臨時密碼。 它記錄在/root/.mysql_secret中:
cat /root/.mysql_secret
  • 使用mysqladmin為root帳戶設置新密碼。 提示輸入當前密碼時,請輸入上一步中標識的密碼:
mysqladmin -u root -p password
  • 在API節點系統的防火墻中打開端口3306:
firewall-cmd --zone=public --permanent --add-service=mysqlfirewall-cmd --reload
  • 使用托管管理節點的系統上的ndb_mgm客戶端驗證集群的狀態:
ndb_mgm -e SHOW

工作原理

本文教您如何使用兩個數據節點設置MySQL集群數據庫:一個API節點和一個管理節點。 管理節點由ndb_mgmdprocess組成,該處理器向其他節點提供配置信息并對其進行監視。 在數據節點上,ndbd進程處理群集數據的存儲,分區和復制。 知道管理節點和數據節點的MySQL服務器充當API節點,用戶可以通過該節點使用集群數據庫。

Oracle維護的存儲庫中可用的軟件包是在不支持網絡數據庫(NDB)的情況下構建的,因此我們首先從MySQL網站下載了一個存檔,該存檔包含將安裝支持NDB /集群的MySQL版本的軟件包:

curl -L dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/MySQL- Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar | tar x

MySQL抽象了數據的物理組織和操作細節,并將其委托給各種存儲引擎。 不同的引擎具有不同的能力。 由于NDB引擎是實現集群的引擎,因此我們需要一個支持引擎的構建。 而不是像我們在其他配方中那樣將curl的輸出寫入文件,這次我們使用x參數將輸出直接傳遞給tar,以便動態擴展存檔。

之后,我們從CentOS存儲庫安裝了perl-Data-Dumper軟件包,并將已安裝的mariadb-libs軟件包替換為每個系統上剛剛下載的MySQL-Cluster-shared軟件包:

yum install perl-Data-Dumper MySQL-Cluster-shared-gpl-*.rpmyum erase mariadb-libs

MySQL-Cluster-shared軟件包提供其他程序使用的共享庫來使用MySQL。默認情況下,這些庫取代了從CentOS存儲庫安裝的MariaDB版本,使我們免于遇到會阻止干凈安裝的庫沖突。由于之后不再需要它,我們卸載了mariadb-libspackage。

Yum在安裝MySQL-Cluster-server軟件包之后執行的一些安裝后步驟是在Perl中編寫的,并使用Perl的Data :: Dumper模塊。這使得Perl-Data-Dumper包成為MySQL-Cluster-server包的依賴項。但是,一個錯誤導致Yum錯過了這個,所以我們自己安裝了這個包,以便MySQL-Cluster-server軟件包的安裝順利進行。它不會阻止軟件包的安裝,但它需要我們手動完成一些額外的配置步驟。

有了這些要求,我們就在每個系統上安裝了MySQL-Cluster-server和MySQL-Cluster-client軟件包:

yum install MySQL-Cluster-{server,client}-gpl-*.rpm

整個集群的配置幾乎集中在/var/lib/mysql-cluster/config.ini中的管理節點。 該文件分為幾個部分,第一部分是[ndb default],它提供了應該用于集群的默認配置值。 這里的值適用于集群的每個節點,除非在相應節點的配置部分中被更具體的指令覆蓋:

[ndbd default]NoOfReplicas = 2DataMemory = 100MIndexMemory = 10MServerPort = 2202

NoOfReplicas選項設置群集中的副本數。它的值可以設置為1或2,盡管2是推薦值。回想一下,不僅跨數據節點對集群數據庫進行了分區,而且還對其進行了復制;每個節點通常承載一個分區,通常是數據庫大小的1 / n(其中n是數據節點的數量),也是其他節點的副本。如果系統脫機,群集仍然可以正常運行,因為其數據在副本中仍然可用。 NoOfReplicas的值為1意味著只有一個數據庫副本(沒有副本),并且數據庫的可用性取決于所有數據節點都在運行。

數據節點將其數據庫的工作副本保存在RAM中,以減少延遲,同時定期將數據同步到磁盤。 DataMemory選項指定節點應為數據保留多少RAM,IndexMemory指定應為主鍵和唯一索引保留多少內存。無論您提供什么值,請確保有足夠的資源可以避免RAM交換。

ServerPort選項指定節點將用于彼此通信的端口號。默認情況下,MySQL會動態分配端口,以便更容易在同一系統上運行多個節點,但由于此配方在其自己的主機系統上運行每個節點,我們需要知道端口以允許通過防火墻的流量,我們指定了我們自己。

配置中的后續部分使用hostname選項指定管理節點(通過[ndb_mgmtd]部分),API節點([mysqld]部分)和數據節點([ndbd]部分)的地址正在跑步。如多個[ndbd]部分所示,如果在集群中運行該類型的多個節點,則會出現相同類型的多個部分:

[ndb_mgmd]hostname = 192.168.56.100[mysqld]hostname = 192.168.56.101[ndbd]hostname = 192.168.56.102[ndbd]hostname = 192.168.56.103

在其余系統上,/etc/my.cnf被創建為數據節點和API節點使用的配置文件。 每個包含一個[mysql_cluster]部分,它提供了ndb-connectionstring選項:

[mysql_cluster]ndb-connectstring = 192.168.56.100

ndb-connectstring選項指定承載管理節點的系統的地址。 當數據和API節點聯機時,它們與管理器通信以接收其配置信息。 如果您的群集有多個管理節點,則可以在用逗號分隔的連接字符串中列出其他節點:

ndb-connectstring = "192.168.56.100,192.168.56.105,192.168.56.106"

此外,API節點的配置包括[mysqld]部分。 它包括用于啟用NDB引擎的ndbcluster選項和default-storage-engine選項,指示MySQL使用NDB來管理所有新表,除非在表的CREATE TABLE語句中另有指定:

[mysqld]ndbclusterdefault-storage-engine = ndbcluster

當用戶或進程使用CREATE TABLE語句創建新表時,他們可以使用ENGINE指令指定應使用哪些MySQL存儲引擎來管理其數據,例如:

CREATE TABLE users ( id INTEGER UNSIGNED NOT NULL PRIMARY KEY, first_name VARCHAR(50) NOT NULL DEFAULT '', last_name VARCHAR(50) NOT NULL DEFAULT '')ENGINE = NDBCluster;

默認引擎是InnoDB引擎。 但是,只有NDB管理的表中的數據才能進入群集。 如果表由另一個引擎管理,則數據駐留在API節點上本地,并且不可用于群集中的其他節點。 為了防止意外問題和這可能導致的任何混淆,我們更改了默認引擎,以便在未提供ENGINE指令時表將使用NDB引擎。

啟動MySQL集群時啟動節點的順序很重要,因為一個節點可能依賴于其他節點。 首先啟動管理節點,然后啟動數據節點,然后啟動API節點。

API節點上MySQL的root帳戶的密碼是在第一次啟動服務器時隨機生成的,并寫入/root/.mysql_secret文件,就像我們在設置MySQL數據庫配方時使用mysqladmin更改它一樣:

cat /root/.mysql_secretmysqladmin -u root -p password

發送到管理節點系統上的ndb_mgm客戶端的SHOW命令允許我們查看集群的狀態,并確保一切正常運行。 可以在交互模式下調用客戶端,也可以使用-e參數直接將命令傳遞給它:

ndb_mgm -e SHOW

可以使用ndb_mgm客戶端查看MySQL集群的狀態

See also

Refer to the following resources for more information on working with MySQL clusters:

  • MySQL Reference Manual: MySQL Cluster Core Concepts (http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-basics.html)
  • MySQL Reference Manual: MySQL Cluster Installation (http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-installation.html)
  • MySQL Reference Manual: MySQL Cluster Nodes, Node Groups, Replicas, and Partitions (http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-nodes-groups.html)
  • MySQL Reference Manual: Online Backup of MySQL Cluster (http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-backup.html)
  • Set Up a MySQL Cluster the Easy Way (http://youtube.com/watch?v=64jtbkuPtvc)
  • High Availability MySQL Cookbook by Alex Davies (https://www.packtpub.com/big-data-and-business-intelligence/high-availability-mysql-cookbook)

總結

以上是生活随笔為你收集整理的mysql群集配置_CentOS7 - 建立一个MySQL集群的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。