中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL集群搭建實現高可用

發布時間:2020-08-09 09:31:31 來源:ITPUB博客 閱讀:238 作者:波仔strong 欄目:MySQL數據庫

MySQL集群搭建實現高可用

MySQL集群搭建實現高可用


MySQL集群概述和安裝環境

MySQL Cluster是MySQL適合于分布式計算環境的高實用、高冗余版本。Cluster的漢語是"集群"的意思。它采用了NDB Cluster 存儲引擎,允許在1個 Cluster 中運行多個MySQL服務器

MySQL Cluster 是一種技術,該技術允許在無共享的系統中部署"內存中"數據庫的 Cluster 。通過無共享體系結構,系統能夠使用廉價的硬件,而且對軟硬件無特殊要求。此外,由于每個組件有自己的內存和磁盤,不存在單點故障。

mysql 集群架構

MySQL集群搭建實現高可用

















SQL節點
: 給上層應用層提供sql訪問。

存儲/數據節點: 保存cluster中的數據。 數據節點,可以提供副本。實現數據冗余。

管理節點(MGM): 管理整個集群。 啟動,關閉集群。 通過ndb_mgmd命令啟動集群


在我們做的實驗中mysql cluster集群各機器角色如下分配:

mysql 管理結點:xuegod63.cn IP:192.168.1.63 (安裝server、client)

mysql 數據結點:xuegod64.cn IP:192.168.1.64 (安裝server、client)

mysql 數據結點:xuegod65.cn IP:192.168.1.65 (安裝server、client)

msyql SQL結點:xuegod66.cn IP:192.168.1.66 (安裝server、client)

msyql SQL結點:xuegod67.cn IP:192.168.1.67 (安裝server、client)


Mysql cluster的下載地址:https://dev.mysql.com/downloads/cluster/


環境清理以及安裝

這一部分雖然是初始過程但是比較復雜,請大家耐心配置。

所有主機上執行下面內容:

首先我們要清除舊版本,然后安裝mysql cluster,最后是文件權限管理。

1.mysql舊版本清除

首先使用如下命令來清理之前操作系統自帶的mysql安裝:

yum -y remove mysql

yum –y remove maridb*(centos7)

然后使用如下命令:

rpm -qa | grep mysql

rpm -qa | grep maridb

對于找到的2個剩余mysql包,請按照如下的命令格式予以刪除:

rpm -e --nodeps mysql-libs-5.1.71-1.el6.x86_64

最后刪掉下列文件:

rm -rf  /var/lib/mysql/*

rm -rf  /etc/my.cnf 

rm -rf  /etc/init.d/mysqld

vim  /etc/profile 刪除與mysql相關內容

2. mysql cluster 7.5版本安裝

2.1上傳并安裝最新的EPEL源 和 mysql社區版源安裝包

[root@xuegod63 ~]# rpm -ihv epel-release-7-10.noarch.rpm

[root@xuegod63 ~]# rpm -ihv mysql57-community-release-el7-11.noarch.rpm


2.2開啟mysql cluster 源

[root@xuegod63 ~]# sed -i "55s/0/1/g" /etc/yum.repos.d/mysql-community.repo


2.3刷新yum源緩存

[root@xuegod63 ~]# yum clean all && yum list


2.4安裝解決Cluster的依賴包

[root@xuegod63 ~]# yum install -y perl perl-Class-MethodMaker perl-DBI libaio numactl


2.5安裝Mysql Cluster

[root@xuegod63 ~]# yum install -y mysql-cluster-community-server


2.6查看安裝路徑

[root@xuegod63 ~]# rpm -ql mysql-cluster-community-server

其他4臺主機上重復2.1—2.5的步驟


3.數據節點主機都要安裝數據節點的相關包(2臺)

[root@xuegod64 ~]# yum install -y mysql-cluster-community-data-node

[root@xuegod65 ~]# yum install -y mysql-cluster-community-data-node

4. 管理節點安裝management管理包

[root@xuegod63~]# yum -y install mysql-cluster-community-management-server


5.創建文件夾

管理節點創建配置目錄:

[root@xuegod63~]# mkdir -p /usr/mysql-cluster/


搭建mysql集群

1.1 各個機器上的配置


我們先將需求配置到各臺機器上

1xuegod63創建管理節點上配置文件


[root@xuegod63 ~]vim /usr/mysql-cluster/config.ini #寫入以下內容

[ndbd default]

NoOfReplicas=2 #數據寫入數量。2表示兩份

DataMemory=200M #配置數據存儲可使用的內存

IndexMemory=100M #索引給100M

[ndb_mgmd]

nodeid=1

datadir=/var/lib/mysql #管理結點的日志

HostName=192.168.1.63 #管理結點的IP地址。本機IP

###### data node options: #存儲結點

[ndbd]

HostName=192.168.1.64

DataDir=/var/lib/mysql #mysql數據存儲路徑

nodeid=2

[ndbd]

HostName=192.168.1.65

DataDir=/var/lib/mysql #mysql數據存儲路徑

nodeid=3

# SQL node options: #關于SQL結點

[mysqld]

HostName=192.168.1.66

nodeid=4

[mysqld]

HostName=192.168.1.67

nodeid=5

在這個文件里,分別給五個節點分配了ID,這有利于更好的管理和區分各個節點。當然,要是不指定,MySQL也會動態分配一個

2xuegod64xuegod65數據節點

[root@xuegod64 /]# vim /etc/my.cnf        #請配置xuegod65一樣

[root@xuegod65 /]# vim /etc/my.cnf    

[mysqld]

datadir=/var/lib/mysql #mysql數據存儲路徑

ndbcluster #啟>動ndb引擎

ndb-connectstring=192.168.1.63 # 管理節點IP地址

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

[mysql_cluster]

ndb-connectstring=192.168.1.63 #管理節點IP地址


3. SQL節點配置文檔:

[root@xuegod66~]#vim /etc/my.cnf #請配置xuegod67一樣

[root@xuegod67~]#vim /etc/my.cnf

[mysqld]

ndbcluster #啟動ndb引擎

ndb-connectstring=192.168.1.63 #管理節點IP地址

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

[mysql_cluster]

ndb-connectstring=192.168.1.63 #管理節點IP地址

說明:數據節點和SQL結點配置文件區別 ,就多一行

數據結點有:datadir=/var/lib/mysql            #mysql數據存儲路徑。

而SQL節點上沒有。

1.2 MySQL Cluster啟動

初次啟動命令以及用戶密碼更改調整:(請嚴格按照次序啟動)

先啟動:管理結點服務->數據結點服務->sql結點服務

關閉:關閉管理結點服務,關閉管理結點服務后,nbdb數據結點服務會自動關閉->手動把sql結點服務關了。

執行初次啟動前請先確認 將兩臺機器的防火墻關閉(service iptables stop 或者 設定 防火墻端口可通,兩個端口即通訊端口1186、數據端口3306 )





  1. xuegod63上啟動管理結點命令

[root@xuegod67 ~]#ndb_mgmd --ndb_nodeid=1 --initial -f /usr/mysql-cluster/config.ini

#盡量不要把 管理結點、 數據結點、存儲結點 配置在同一臺機子上,否則一個掛了,就全掛了。


查看端口號:

[root@xuegod63~]# netstat -antup | grep 1186

tcp        0    0 0.0.0.0:1186        0.0.0.0:*            LISTEN 7057/ndb_mgmd

tcp        0    0 127.0.0.1:1186    127.0.0.1:60324    ESTABLISHED 7057/ndb_mgmd

tcp        0    0 127.0.0.1:60324    127.0.0.1:1186        ESTABLISHED 7057/ndb_mgmd


2. xuegod64xuegod65啟動數據節點服務

[root@xuegod68 ~]# ndbd --initial

[ndbd] INFO -- Angel connected to '10.10.10.67: 1186'

[ndbd] INFO -- Angel allocated nodeid: 2

[root@xuegod69 ~]# ndbd --initial

[ndbd] INFO -- Angel connected to '10.10.10.67: 1186'

[ndbd] INFO -- Angel allocated nodeid: 3


3. xuegod66xuegod67啟動SQL結點服務

[root@xuegod66~]#systemctl start mysqld

[root@xuegod66 ~]#systemctl start mysqld


4. 查看mysql 集群狀態:

[root@xuegod67 ~]#ndb_mgm

ndb_mgm> show

Cluster Configuration

---------------------

[ndbd(NDB)]    2 node(s)

id=2    @192.168.1.64 (mysql-5.7.22 ndb-7.5.10, Nodegroup: 0, *)

id=3    @192.168.1.65 (mysql-5.7.22 ndb-7.5.10, Nodegroup: 0)


[ndb_mgmd(MGM)]    1 node(s)

id=1    @192.168.1.63 (mysql-5.7.22 ndb-7.5.10)


[mysqld(API)]    2 node(s)

id=4    @192.168.1.66 (mysql-5.7.22 ndb-7.5.10)

id=5    @192.168.1.67 (mysql-5.7.22 ndb-7.5.10)


5. 數據同步實驗測試

我們就需要在此之前改一下兩臺機器mysql的密碼。

查看mysql root用戶密碼 注意:我們只需修改sql節點的密碼

[root@xuegod66 ~]# grep password /var/log/mysqld.log

2018-07-02T16:01:46.008448Z 1 [Note] A temporary password is generated for root@localhost: lCUouyg(k2?F


在my.cnf文件中mysqld下面添加 validate-password=off

重啟mysql

[root@xuegod66 ~]# systemctl restart mysqld

[root@xuegod66 ~]# mysql -u root -p'lCUouyg(k2?F'

mysql: [Warning] Using a password on the command line interface can be insecure.

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 6

Server version: 5.7.22-ndb-7.5.10-cluster-gpl


Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.


Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.


Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


mysql> set password for 'root'@'localhost'=password('123456');

mysql> grant all privileges on *.* to cluster@"%"identified by "123456"; #授權

mysql> flush privileges;

另一臺sql節點也是一樣操作


6. 模擬外部機器的一個客戶端插入數據:

mysql -ucluster -p123456 -h 192.168.1.66

注意:創建表的時候使用ndb引擎

mysql> create database db;

mysql> use db;

mysql> create table test(id int) engine=ndb;

mysql> insert into test values(1000);

mysql> select * from test;


登陸另一臺sql節點查看

mysql -ucluster -p123456 -h 192.168.1.67

mysql> use db;

mysql> select * from test;


停掉一個sql節點測試

[root@xuegod66 ~]# mysqladmin -uroot -p123456 shutdown

ndb_mgm> show 查看狀態

Connected to Management Server at: localhost:1186

Cluster Configuration

---------------------

[ndbd(NDB)]    2 node(s)

id=2    @192.168.1.64 (mysql-5.7.22 ndb-7.5.10, Nodegroup: 0, *)

id=3    @192.168.1.65 (mysql-5.7.22 ndb-7.5.10, Nodegroup: 0)


[ndb_mgmd(MGM)]    1 node(s)

id=1    @192.168.1.63 (mysql-5.7.22 ndb-7.5.10)


[mysqld(API)]    2 node(s)

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

id=5    @192.168.1.67 (mysql-5.7.22 ndb-7.5.10) #發現少了一個sql 節點


7. 關閉服務

關閉mysql集群順序: 關閉管理節點服務-》 關閉管理節點時,數據結點服務自動關閉 –》 需要手動關閉SQL結點服務


關閉mysql的管理節點

[root@xuegod63 /]    # ndb_mgm

-- NDB Cluster -- Management Client –

ndb_mgm> shutdown

Node 2: Cluster shutdown initiated

Node 3: Cluster shutdown initiated

Node 2: Node shutdown completed.

Node 3: Node shutdown completed.

3 NDB Cluster node(s) have shutdown.

Disconnecting to allow management server to shutdown.


ndb_mgm> exit

ps -axu | grep ndbd        #查看不到,說明數據節點已經被關


手動關閉SQL節點服務···

Xuegod66和xuegod67上,手動關閉SQL節點服務

[root@xuegod66 ~]# mysqladmin -uroot -p123456 shutdown

[root@xuegod67 ~]# mysqladmin -uroot -p123456 shutdown


或者:方法二 kill掉

[root@xuegod66 ~]# ps -axu | grep mysql

[root@xuegod66 ~]# kill -9 7617

[root@xuegod66 ~]# kill -9 7743

[root@xuegod66~]# ps -axu | grep mysql #xuegod67同樣kill掉

8. 總結

再次啟動,mysql集群啟動:

[root@xuegod63 /]# ndb_mgmd --ndb_nodeid=1 --initial -f /usr/mysql-cluster/config.ini

[root@xuegod64/]#ndbd

[root@xuegod65 /]#ndbd

[root@xuegod66 /]# systemctl restart mysqld

[root@xuegod67 /]# systemctl restart mysqld



查看mysql 集群狀態:

[root@xuegod63 ~]# ndb_mgm

-- NDB Cluster -- Management Client --

ndb_mgm> show

Cluster Configuration

---------------------

[ndbd(NDB)]    2 node(s)

id=2    @10.10.10.68 (mysql-5.7.20 ndb-7.5.8, Nodegroup: 0, *)

id=3    @10.10.10.69 (mysql-5.7.20 ndb-7.5.8, Nodegroup: 0)


[ndb_mgmd(MGM)]    1 node(s)

id=1    @10.10.10.67 (mysql-5.7.20 ndb-7.5.8)


[mysqld(API)]    2 node(s)

id=4    @10.10.10.70 (mysql-5.7.20 ndb-7.5.8)

id=5    @10.10.10.71 (mysql-5.7.20 ndb-7.5.8)

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

永靖县| 磴口县| 东宁县| 卓尼县| 苗栗县| 常宁市| 梓潼县| 阿合奇县| 喜德县| 安庆市| 西藏| 兴隆县| 望城县| 涿州市| 双桥区| 沙雅县| 滦平县| 肥东县| 南康市| 宜宾市| 高要市| 信宜市| 泸水县| 遵义县| 宁南县| 长汀县| 铁岭市| 文成县| 旅游| 牡丹江市| 容城县| 祥云县| 茌平县| 额尔古纳市| 永靖县| 汕尾市| 台南县| 炎陵县| 措勤县| 松阳县| 浙江省|