ubuntu1804搭建mysql cluster

在網上看了幾篇相關教程,雖然寫的都很好,但是沒有一個可以從頭到尾做下來沒有任何問題的,最終結合了各篇的精華,終於自己搭成了,趁着剛搭完,趕快記錄下來~

環境

三臺阿里雲服務器(2v+4g+50g),在一個VPC網絡裏,就是在一個局域網裏。

三臺機器的內網ip如下:

服務器1:172.17.119.207
服務器2:172.17.119.206
服務器3:172.17.119.204

其中,服務器1上安裝管理節點,服務器2上安裝一個數據節點和一個sql節點,服務器3上安裝一個數據節點和一個sql節點。

說明

1.本文使用mysql cluster的安裝包,其中包含mysql5.7,所以無需額外安裝mysql,如果以前安裝過mysql,需要先卸載乾淨,本人是在純淨的ubuntu1804上安裝的,也推薦大家在純淨的系統上安裝,避免mysql殘留影響安裝。

2.以下所有命令均以root身份執行。

下載安裝包

這個安裝包在三臺服務器上都需要有,使用下面命令獲取:

wget http://mirrors.sohu.com/mysql/MySQL-Cluster-7.5/mysql-cluster-gpl-7.5.10-linux-glibc2.12-x86_64.tar.gz
tar -xf mysql-cluster-gpl-7.5.10-linux-glibc2.12-x86_64.tar.gz

也可以到這個網址上自己找更新版本的。

配置

管理節點

執行下面命令:

mv mysql-cluster-gpl-7.5.10-linux-glibc2.12-x86_64 /usr/local/mysql_cluster
//將集羣啓動和管理命令放到/usr/local/bin
cd /usr/local/mysql_cluster/bin
cp ndb_mgm* /usr/local/bin
//配置文件
mkdir /var/lib/mysql-cluster
cd /var/lib/mysql-cluster
vi config.ini

config.ini內容如下:

# Options affecting ndbd processes on all data nodes:
[NDBD DEFAULT]    
NoOfReplicas=2
DataMemory=80M
IndexMemory=18M

# TCP/IP options:
[TCP DEFAULT]    
#portnumber=2202

# Management process options:
[NDB_MGMD]          
nodeid=1          
HostName=172.17.119.207
DataDir=/var/lib/mysql-cluster/

# Options for data node :
[NDBD]                          
nodeid=2
HostName=172.17.119.206
DataDir=/usr/local/mysql_cluster/data/

# Options for data node :
[NDBD]  
nodeid=3                     
HostName=172.17.119.204
DataDir=/usr/local/mysql_cluster/data/

# SQL node options:
[MYSQLD] 
nodeid=4                      
HostName=172.17.119.206
[MYSQLD]
nodeid=5
HostName=172.17.119.204

管理節點就配置好了。

數據節點和sql節點

在服務器2和服務器3上均執行以下命令:

mv mysql-cluster-gpl-7.5.10-linux-glibc2.12-x86_64 /usr/local/mysql
//添加用戶和組
groupadd mysql
useradd -g mysql mysql
//將ndbd命令複製到/usr/local/bin/,該命令用於啓動數據節點
cd /usr/local/mysql/bin/
cp ndbd /usr/local/bin
//安裝運行mysql需要的包
apt-get install numactl
apt-get install libaio1 libaio-dev
//初始化mysql
cd /usr/local/mysql
mkdir data
cd bin/
./mysqld --initialize

這一步執行完,屏幕輸出的最後一行應該是這樣的:

A temporary password is generated for root@localhost: caA15u&;>p>X

就是會告訴你root用戶mysql的初始密碼,這個要記錄一下,後面連接mysql要用的。

接下來設置一些權限:

cd /usr/local/mysql
chown -R root .
chown -R mysql data
chgrp -R mysql .
cp support-files/mysql.server /etc/init.d
chmod +x /etc/init.d/mysql.server

最後創建並修改配置文件:

vi /etc/my.cnf

my.cnf內容如下:

[mysqld]
ndbcluster
ndb-connectstring=172.17.119.207
datadir=/usr/local/mysql/data
basedir=/usr/local/mysql
character_set_server=utf8
default-storage-engine=ndbcluster
port=3306
 
[mysql_cluster]
ndb-connectstring=172.17.119.207

到這裏,數據節點和sql節點就也配置完成了。

運行

啓動管理節點

執行下面命令:

cd /usr/local/bin
ndb_mgmd --ndb-nodeid=1 --initial --configdir=/var/lib/mysql-cluster/ -f /var/lib/mysql-cluster/config.ini

輸出如下信息則表示管理節點啓動成功:

然後,使用ndb_mgm命令進入管理模式,輸入show查看當前狀態:

可以看到,此時數據節點和sql節點都處於未連接的狀態。

啓動數據節點

在服務器2和服務器3上均執行下面命令:

cd /usr/local/bin/
ndbd --initial

注意,--initial參數只有第一次啓動需要帶上,之後再啓動就不需要了,如果輸出如下則表示數據節點啓動成功:

在兩臺服務器上都執行完之後,到管理節點,再次輸入show,會看到兩個數據節點都連上了:

啓動sql節點

在服務器2和服務器3上均執行以下命令:

cd /usr/local/mysql/bin/
./mysqld_safe --user=mysql  --skip-syslog &

看到如下信息說明sql節點啓動成功:

這時再到管理節點,輸入show,會發現兩個sql節點也連接上了:

到這裏,mysql集羣的搭建就算大功告成了!

驗證

最後驗證一下效果,在sql節點1上建一個數據庫,看看是否可以同步到節點2。

首先,在服務器2上連接mysql:

cd /usr/local/mysql/bin/
./mysql -uroot -p

然後,輸入初始化mysql的時候屏幕上輸出的那個密碼。

進去之後,首先要更換密碼,否則無法進行任何操作。

連接上mysql之後,輸入以下命令修改密碼:

ALTER USER USER() IDENTIFIED BY 'your_password';

以後再連接,密碼就用你設置的這個了~

然後,我們創建個數據庫,叫test。

create database test;

創建完之後,到sql節點2,同樣需要首先更改密碼,更改之後,查看數據庫:

可以看到,在sql節點2上,也有了test數據庫,說明同步上了~

關閉

想要關閉集羣時,最好按順序來,避免把集羣搞亂。

首先在管理節點執行以下命令:

cd /usr/local/bin
ndb_mgm -e shutdown

執行完這一步,管理節點和數據節點就都關閉了,sql節點還需要手動關閉。 

使用提示

最後要提示一點,是我踩過的一個坑。。。

我們在配置集羣的時候,配置了數據庫默認引擎爲ndb_cluster,只有使用這個引擎,數據才能同步上。

但是,這隻對我們新建的表生效。

我們搭好集羣以後,一般會把以前mysql的數據導進去,這時候問題來了,以前的mysql用的一般是innodb之類的引擎,所以數據導入之後,並不能同步上,一定要在導入數據之後,把所有表的引擎改成ndb_cluster,這樣才能同步上!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章