MySQL叢集架構及配置過程中出現問題的解決

來源:互聯網
上載者:User

MySQL叢集架構及配置過程中出現問題的解決

首先說下MySQL的優缺點

優點

  • 解決單點故障
  • 自動實現資料冗餘

缺點就是維護起來太麻煩。

叢集的條件就是所有的機器上都要安裝MySQL的叢集軟體,我安裝的是MySQL-Cluster-gpl-7.3.5-1.el6.x86_64.rpm-bundle.tar的rpm包,解包之後所有的軟體都要安裝。不是源碼包安裝。如果系統裡面安裝了mysql-server等資料庫服務軟體的要自行卸載掉即可。

MySQL叢集中有三種角色,下面是三種角色以及其的作用

角色

資料節點:ndbd節點 儲存在表裡的資料(表中的記錄)

SQL節點:不儲存資料,供使用者訪問和執行SQL操作

管理節點:用來管理叢集,在主機本機啟動管理進程的時候,指定使用的設定檔

接下來就是重點了。叢集的設定檔。這個設定檔要自己手動建立的

首先是管理節點的主設定檔,這個主設定檔首先要以.ini結尾的檔案,我存放的目錄放在/etc/mysql-cluster.ini之中,其就是我的管理節點的設定檔。

格式:

標籤:下面[]中括弧內的就是標籤。

[ndbd default] 指定資料節點的公用配置,對所有節點都適用的。

[ndb_mgmd] 指定管理節點的配置

[ndbd] 指定資料節點的配置

[mysqld] 指定SQL節點的配置

注意:此時你有幾個節點就要寫幾次標籤,也就是說如果你有2台機器是做SQL節點的,就必須定義2個[mysqld]標籤。資料節點亦是如此。下面是我自己的配置。

 

 

[ndbd default]

NoOfReplicas=2  一份資料備份幾份,一般情況下和資料節點個數相同

DataMemory=80M  用多來實體記憶體來儲存執行的SQL語句和執行結果

IndexMemory=18M 用多來實體記憶體來儲存執行的索引欄位語句和執行結果

 

 

[ndb_mgmd]

nodeid=1    (同一個網路內id號不能重複,必須唯一。一般情況下可以設定成本機ip地址的主機位,但是在RedHat6中,好像nodeid不能超過50的。)

hostname=192.168.1.1    管理主機的ip地址

datadir=/usr/local/cluster/ndbddata管理叢集時收集的叢集資訊的存放路徑

(系統內必須存在此目錄,沒有手動建立,許可權沒關係)

 

[ndbd]

nodeid=30

Hostname=192.168.1.30

Datadir=/usr/local/cluster/ndbddata SQL節點儲存資料的路徑

(系統內必須存在此目錄,沒有手動建立,許可權沒關係)

[ndbd]

nodeid=40

Hostname=192.168.1.40

Datadir=/usr/local/cluster/ndbddata

 

[mysqld]    不用指定資料存放區的位置,因為其只提供mysql服務

nodeId=10

Hostname=192.168.1.10

[mysqld]

nodeId=20

Hostname=192.168.1.20

註:千萬不要忘記上面寫的目錄,等下用到的。我們把主設定檔寫好了,然後就去建立我們的datadir吧。千萬不要忘記。

配置資料節點:

手寫設定檔(所有的資料節點都需要配置,可以複製一份到其他資料節點上去然後修改即可)

其設定檔和mysql-server的設定檔同名,即my.cnf,注意把mysql-server的設定檔mv走或者改名

[mysqld]

datadir=/usr/local/cluster/ndbdata //此目錄必須和管理設定檔中指定的目錄一致,沒有手動建立

ndb-connectstring=192.168.1.1    指向由誰管理我的主機的ip地址

ndbcluster  啟動並執行是什麼儲存引擎

[mysql_cluster]指定的是誰來管理叢集

ndb-connectstring=192.168.1.1 管理叢集的主機

配置sql節點:

編寫設定檔

vim  /etc/my.cnf 也是需要手動建立的設定檔

[mysqld]

ndbcluster  

default-storage-engin=ndbcluster 指定使用的資料庫儲存引擎

[mysql_cluster]指定的是誰來管理叢集

ndb-connectstring=192.168.1.1

到此,所有叢集的電腦配置完畢,接下來我們就可以啟動服務了。

啟動叢集的順序:

   先啟動管理節點的進程

   ndb_mgmd -f /管理主設定檔的路徑  ,其使用的是原生1186連接埠,在命令列下進行輸入

   進入叢集管理

   ndb_mgm    在命令列下進行輸入

   ndb_mgm>show查看資訊

啟動資料節點的資料進程

   ndbd

   啟動sql節點的資料庫服務

   service mysql start和原來啟動資料庫伺服器一樣

安全關閉叢集服務

 要想關閉 Cluster,可在MGM節點所在的機器上,在Shell中簡單地輸入下述命令:

  [ndb_mgmd]root# /usr/local/mysql/ndb_mgm -e shutdown

  運行以下命令關閉SQL節點的mysqld服務:

  [ndb_mgmd]root# /usr/local/mysql/bin/mysqladmin -uroot shutdown

   停止ndbd的時候通過kill -9 進程號來停止

總結:在搭建的過程中,出現了很多的小問題,只要大家細心下就可以避免,比方說我在配置的時候遇到的問題。

第一個問題:管理節點的服務啟動不了

ndb_mgmd -f /etc/mysql-cluster.ini

[root@localhost data]# ndb_mgmd -f /etc/mysql-cluster.ini

MySQL Cluster Management Server mysql-5.6.17 ndb-7.3.5

2014-05-13 03:23:47 [MgmtSrvr] ERROR    -- Directory '/usr/local/cluster/ndbdata' specified with DataDir in configuration does not exist.

剛開始我以為ndbdata是個檔案,,目錄只建到cluster,所有就報錯,看了設定檔沒有問題,後來找就發現了ndbdata也是一個目錄。這是一點需要注意的,而且此目錄要和主設定檔中定義的datadir一致。

第二個問題:ndbd啟動不了,報錯的檔案就是說和管理節點聯絡不上,後來去看ndbd節點上的設定檔,發現指定誰管理我的叢集的時候少了一個cluster,即正確的是[mysql_cluster]而我寫成了[mysqld],就啟動不了。改正確即可

配置叢集伺服器不容易出錯,只要自己夠細心,完全能夠一次性配置成功。之後就是調優的問題了,各位可以依據各自的環境進行調優。

--------------------------------------分割線 --------------------------------------

Ubuntu 14.04下安裝MySQL

《MySQL權威指南(原書第2版)》清晰中文掃描版 PDF

Ubuntu 14.04 LTS 安裝 LNMP Nginx\PHP5 (PHP-FPM)\MySQL

Ubuntu 14.04下搭建MySQL主從伺服器

Ubuntu 12.04 LTS 構建高可用分布式 MySQL 叢集

Ubuntu 12.04下原始碼安裝MySQL5.6以及Python-MySQLdb

MySQL-5.5.38通用二進位安裝

--------------------------------------分割線 --------------------------------------

本文永久更新連結地址:

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.