阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Ubuntu 12.04 LTS 构建高可用分布式 MySQL 集群

430次阅读
没有评论

共计 9530 个字符,预计需要花费 24 分钟才能阅读完成。

MySQL Cluster 是 MySQL 适合于分布式计算环境的高实用、高冗余版本。它采用了 NDB Cluster 存储引擎,允许在 1 个 Cluster 中运行多个 MySQL 服务器。通过无共享体系结构,系统能够使用廉价的硬件,而且对软硬件无特殊要求。此外,由于每个组件有自己的内存和磁盘,不存在单点故障。

开发者官方网站 www.Oracle.com
在这篇文章中,我会叙述如何 在 Ubuntu 12.04 LTS 构建高可用 MySQL 集群

1. SQL Cluster 虚拟主机
要创建一个功能齐全的集群,至少需要 3 台主机才可以完成。其中一个主机作为管理节点,另外两个做数据节点。如果数据节点脱机,群集仍然可以工作,但是一旦管理节点出现问题,将导致集群无法正常工作,所以在可能的情况下,建立两个管理节点。在我的例子中,我将使用二个管理节点的集群
这个例子中一共使用了 5 台主机,系统架构如下图所示

Ubuntu 12.04 LTS 构建高可用分布式 MySQL 集群

Ubuntu 12.04 LTS 构建高可用分布式 MySQL 集群

虚拟机群平台    VMware ESXi 4.1
虚拟机操作系统    Ubuntu 12.04.3 LTS (Precise Pangolin) 64-bit
所有虚拟机都在同一 192.168.67.0/24 网络地址段当中,请根据你的网络情况来具体配置 IP 地址,在开始之前请确保所有主机网络连接设置正常

2. 安装管理节点
首先,我们需要安装的 MySQL 集群的管理节点。我们将开始与 MySQL-MGM-1,配置完成后按照相同的步骤配置第二个管理节点,如果只设定一个管理节点,那么继续下一步的配置
在开始配置前,请访问 http://www.mysql.com/downloads/cluster/#downloads 确认当前安装文档的版本信息. 这里我所使用的 MySQL Cluster 版本是 7.3.3
首先,我们把 MySQL Cluster 安装包下载到管理主机上。进入到 /usr/src 文件夹并创建 mysql-mgm 目录

mkdir /usr/src/mysql-mgm
cd /usr/src/mysql-mgm

完成这一步后,在 MySQL 的官方网站下载最新的安装源代码,并解压软件包
wget http://cdn.mysql.com/Downloads/MySQL-Cluster-7.3/mysql-cluster-gpl-7.3.3-linux-glibc2.5-x86_64.tar.gz
tar xvfz mysql-cluster-gpl-7.3.3-linux-glibc2.5-x86_64.tar.gz

进入解压缩后的文件夹,然后移动二进制文件
cd mysql-cluster-gpl-7.3.3-linux-glibc2.5-x86_64
cp bin/ndb_mgm /usr/bin
cp bin/ndb_mgmd /usr/bin

更改目录的权限,并可以选择删除下载的源文件
chmod 755 /usr/bin/ndb_mg*
cd /usr/src
rm -rf /usr/src/mysql-mgm

接下来,我们创建管理节点配置文件,在 /var/lib/mysql-cluster/ 文件夹中,名字叫做 config.ini,这个文件夹事先不存在,创建它
mkdir /var/lib/mysql-cluster

在 config.ini 文件创建完成后,使用你喜欢的文本编辑器编辑此文件,内容类似于这样
[NDBD DEFAULT]
NoOfReplicas=2
DataMemory=80M
IndexMemory=18M
[MYSQLD DEFAULT]
[NDB_MGMD DEFAULT]
DataDir=/var/lib/mysql-cluster
[TCP DEFAULT]
# Section for the cluster management node
[NDB_MGMD]
NodeId=1
# IP address of the first management node (this system)
HostName=192.168.67.10
[NDB_MGMD]
NodeId=2
#IP address of the second management node
HostName=192.168.67.11
# Section for the storage nodes
[NDBD]
# IP address of the first storage node
HostName=192.168.67.12
DataDir= /var/lib/mysql-cluster
[NDBD]
# IP address of the second storage node
HostName=192.168.67.13
DataDir=/var/lib/mysql-cluster
# one [MYSQLD] per storage node
[MYSQLD]
[MYSQLD]

所有主机都定义在这个里,即使我们只安装第一个。请注意,管理主机节点需要设定 NodeId,而 NDBD 节点不需要设定.
完成这步操作后,可以用下面的命令启动管理节点
ndb_mgmd -f /var/lib/mysql-cluster/config.ini –configdir=/var/lib/mysql-cluster/

完成这步操作后, 你可以通过下面的命令向 init.d 中添加一个条目,以自动启动程序
echo “ndb_mgmd -f /var/lib/mysql-cluster/config.ini –configdir=/var/lib/mysql-cluster/” > /etc/init.d/ndb_mgmd
chmod 755 /etc/init.d/ndb_mgmd

如果一切顺利,第二个管理节点上遵循相同的步骤,并使用相同的配置。请不要改变的节点配置文件中的 ID
你可以使用 ndb_mgm 命令来验证管理节点的运行,(只需要在终端中输入 ndb_mgm),并通过键入 show,启动配置实用程序。此时 NDBD 节点和 MySQL 节点处于断开状态,需要将所有节点配置完成才可以输出正确的状态。

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2013-11/93019p2.htm

推荐阅读

搭建基于 Corosync+DRBD 的高可用 MySQL 集群 http://www.linuxidc.com/Linux/2013-10/91386.htm

Corosync+Pacemaker+DRBD+MySQL 实现高可用 (HA) 的 MySQL 集群 http://www.linuxidc.com/Linux/2013-08/89036p3.htm

Heartbeat+MySQL+NFS 实现高可用 (HA) 的 MySQL 集群 http://www.linuxidc.com/Linux/2013-08/88663.htm

Hadoop 集群(第 10 期)_MySQL 关系数据库 http://www.linuxidc.com/Linux/2012-12/76706.htm

3. 数据节点
创建数据节点与创建管理节点的过程是类似的。让我们开始创建一个 mysql 组,将用户 mysql 添加到 mysql 组中
groupadd mysql
useradd -g mysql mysql

进入 /usr/local,并下载和配置管理节点时使用的相同的压缩文档,并解压
cd /usr/local/
wget http://cdn.mysql.com/Downloads/MySQL-Cluster-7.3/mysql-cluster-gpl-7.3.3-linux-glibc2.5-x86_64.tar.gz
tar xvfz mysql-cluster-gpl-7.3.3-linux-glibc2.5-x86_64.tar.gz

创建一个名为 mysql 指向解压的文件夹(这以后将用于 DB 集群,所以不要删除它!)的的软连接。创建完成后,你可以安装数据库
ln -s mysql-cluster-gpl-7.3.3-linux-glibc2.5-x86_64 mysql
cd mysql
apt-get install libaio1 libaio-dev
scripts/mysql_install_db –user=mysql –datadir=/usr/local/mysql/data

修改文件权限
chown -R root:mysql .
chown -R mysql data

与管理节点上一样,我们希望的 DataBase 引擎自动启动,因此,我们需要创建 init.d 命令
cp support-files/mysql.server /etc/init.d/
chmod 755 /etc/init.d/mysql.server

最后,复制 bin 文件夹到 /usr/bin 的位置,并创建一个符号链接,以保持能够正确的引用
cd /usr/local/mysql/bin
mv * /usr/bin
cd ../
rm -fr /usr/local/mysql/bin
ln -s /usr/bin /usr/local/mysql/bin

MySQL 配置文件目前不存在,所以我们需要自己创建它。该文件位于 /etc/ 中,并命名为 my.cnf 文件。使用你喜欢的文本编辑器,并添加以下几行
[mysqld]
ndbcluster
# IP address of the cluster management node
ndb-connectstring=192.168.67.10,192.168.67.11
[mysql_cluster]
# IP address of the cluster management node
ndb-connectstring=192.168.67.10,192.168.67.11

请注意,这两个管理节点的地址,使用逗号分隔。如果你只有一个管理节点,只需在列表中删除第二个。一旦 my.cnf 文件已保存,我们需要创建 MySQL 的数据文件夹
1 mkdir /var/lib/mysql-cluster

完成这些后,我们需要初始化集群并启动该服务。只有当你开始第一次的节点,或当在管理节点上的 /var/lib/mysql-cluster/config.ini 文件被更改时,需要做初始化
cd /var/lib/mysql-cluster
ndbd –-initial
/etc/init.d/mysql.server start

接下来,通过运行相应的脚本安装 MySQL
1 /usr/local/mysql/bin/mysql_secure_installation

最后,我们需要 NDB 自动启动
12 echo “ndbd” > /etc/init.d/ndbd
chmod 755 /etc/init.d/ndbd

好了,我们已经完成了第一个数据节点的配置,按照相同的方法和步骤去完成第二个数据节点的配置

4. 验证与测试

如果一切正常,在管理节点终端中执行命令  ndb_mgm,然后键入 show. 这个时候应该看到的数据库节点已填充的提示
root@MYSQL-MGM1:~# ndb_mgm
ndb_mgm> show
Cluster Configuration
———————
[ndbd(NDB)] 2 node(s)
id=3    @192.168.67.12  (mysql-5.6.14 ndb-7.3.3, Nodegroup: 0, *)
id=4    @192.168.67.13  (mysql-5.6.14 ndb-7.3.3, Nodegroup: 0)
[ndb_mgmd(MGM)] 2 node(s)
id=1    @192.168.67.10  (mysql-5.6.14 ndb-7.3.3)
id=2    @192.168.67.11  (mysql-5.6.14 ndb-7.3.3)
[mysqld(API)]  2 node(s)
id=5    @192.168.67.12  (mysql-5.6.14 ndb-7.3.3)
id=6    @192.168.67.13  (mysql-5.6.14 ndb-7.3.3)

如果你能够看到类似的输出,去尝试一些基本的 SQL 命令。登录到 SQL 数据库,并创建一个新的数据库,表,以验证数据同步。请注意,在创建数据库时,需使用 NDBCLUSTER 存储引擎。如果使用 InnoDB,数据将不会在集群节点之间被复制。在使用 NDBCLUSTER 引擎时,会有一些问题,请参阅 MySQL 官方网站
http://dev.mysql.com/doc/refman/5.5/en/mysql-cluster-limitations-unsupported.html
http://dev.mysql.com/doc/refman/5.5/en/mysql-cluster-limitations-syntax.html
mysql -u root -p
mysql> CREATE DATABASE mysqlclustertest;
mysql> USE mysqlclustertest;
mysql> CREATE TABLE testtable (i INT) ENGINE=NDBCLUSTER;
mysql> INSERT INTO testtable () VALUES (1);
mysql> SELECT * FROM testtable;
+——+
| i    |
+——+
|    1 |
+——+
1 row in set (0.01 sec)

连接到第二个数据库节点,我们看看,得到了相同的输出
mysql -u root -p
mysql> USE mysqlclustertest;
mysql> SELECT * FROM testtable;
+——+
| i    |
+——+
|    1 |
+——+
1 row in set (0.01 sec)

应该看到相同的输出。现在,如果你插入一个新条目表,它会被复制回的第一个节点
5. 负载均衡

在这篇文章的最后部分是为 MySQL 集群安装负载均衡服务器,负载均衡可以使用 mysql-proxy,很容易安装,当然你也可以使用其他服务
root@mysql-proxy:~# apt-get install mysql-proxy
root@mysql-proxy:~# mkdir /etc/mysql-proxy
root@mysql-proxy:~# cd /etc/mysql-proxy
root@mysql-proxy:/etc/mysql-proxy# nano mysql-proxy.conf

在 mysql-proxy.conf 文件中加入下面几行
[mysql-proxy]
daemon = true
proxy-address = 192.168.67.14:3306
proxy-skip-profiling = true
keepalive = true
event-threads = 50
pid-file = /var/run/mysql-proxy.pid
log-file = /var/log/mysql-proxy.log
log-level = debug
proxy-backend-addresses = 192.168.67.12:3306,192.168.67.13:3306
proxy-lua-script=/usr/lib/mysql-proxy/lua/proxy/balance.lua

对于自动启动的附加选项创建以下文件 /etc/default/mysql-proxy
ENABLED=”true”
OPTIONS=”–defaults-file=/etc/mysql-proxy.conf –plugins=proxy”

然后,你可以通过调用以下命令启动 mysql-proxy
/etc/init.d/mysql-proxy start/stop/status

完成后,你应该能够连接到 MySQL 服务器使用代理地址。记得这个工作,你需要创建一个新的用户具有特定的子网连接到它。还需要在 my.cnf 文件为 MySQL 服务器添加捆绑地址

SQL 用户不用复制,所以相同的用户有单独被添加到所有的数据库节点。在数据节点登录到 SQL shell,执行以下命令
CREATE USER ‘newuser’@’192.168.67.%’ IDENTIFIED BY ‘password’;
FLUSH PRIVILEGES;
SELECT * FROM mysql.user;

更改 newuser,IP 和密码,根据你的配置需求。%作为通配符,从而对整个子网的 IP 地址的行为,它允许远程连接到这个数据库节点。请记得在这个集群中的节点中添加相同的用户具有相同配置的其他所有数据库。

更多 Ubuntu 相关信息见Ubuntu 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=2

MySQL Cluster 是 MySQL 适合于分布式计算环境的高实用、高冗余版本。它采用了 NDB Cluster 存储引擎,允许在 1 个 Cluster 中运行多个 MySQL 服务器。通过无共享体系结构,系统能够使用廉价的硬件,而且对软硬件无特殊要求。此外,由于每个组件有自己的内存和磁盘,不存在单点故障。

开发者官方网站 www.Oracle.com
在这篇文章中,我会叙述如何 在 Ubuntu 12.04 LTS 构建高可用 MySQL 集群

1. SQL Cluster 虚拟主机
要创建一个功能齐全的集群,至少需要 3 台主机才可以完成。其中一个主机作为管理节点,另外两个做数据节点。如果数据节点脱机,群集仍然可以工作,但是一旦管理节点出现问题,将导致集群无法正常工作,所以在可能的情况下,建立两个管理节点。在我的例子中,我将使用二个管理节点的集群
这个例子中一共使用了 5 台主机,系统架构如下图所示

Ubuntu 12.04 LTS 构建高可用分布式 MySQL 集群

Ubuntu 12.04 LTS 构建高可用分布式 MySQL 集群

虚拟机群平台    VMware ESXi 4.1
虚拟机操作系统    Ubuntu 12.04.3 LTS (Precise Pangolin) 64-bit
所有虚拟机都在同一 192.168.67.0/24 网络地址段当中,请根据你的网络情况来具体配置 IP 地址,在开始之前请确保所有主机网络连接设置正常

2. 安装管理节点
首先,我们需要安装的 MySQL 集群的管理节点。我们将开始与 MySQL-MGM-1,配置完成后按照相同的步骤配置第二个管理节点,如果只设定一个管理节点,那么继续下一步的配置
在开始配置前,请访问 http://www.mysql.com/downloads/cluster/#downloads 确认当前安装文档的版本信息. 这里我所使用的 MySQL Cluster 版本是 7.3.3
首先,我们把 MySQL Cluster 安装包下载到管理主机上。进入到 /usr/src 文件夹并创建 mysql-mgm 目录

mkdir /usr/src/mysql-mgm
cd /usr/src/mysql-mgm

完成这一步后,在 MySQL 的官方网站下载最新的安装源代码,并解压软件包
wget http://cdn.mysql.com/Downloads/MySQL-Cluster-7.3/mysql-cluster-gpl-7.3.3-linux-glibc2.5-x86_64.tar.gz
tar xvfz mysql-cluster-gpl-7.3.3-linux-glibc2.5-x86_64.tar.gz

进入解压缩后的文件夹,然后移动二进制文件
cd mysql-cluster-gpl-7.3.3-linux-glibc2.5-x86_64
cp bin/ndb_mgm /usr/bin
cp bin/ndb_mgmd /usr/bin

更改目录的权限,并可以选择删除下载的源文件
chmod 755 /usr/bin/ndb_mg*
cd /usr/src
rm -rf /usr/src/mysql-mgm

接下来,我们创建管理节点配置文件,在 /var/lib/mysql-cluster/ 文件夹中,名字叫做 config.ini,这个文件夹事先不存在,创建它
mkdir /var/lib/mysql-cluster

在 config.ini 文件创建完成后,使用你喜欢的文本编辑器编辑此文件,内容类似于这样
[NDBD DEFAULT]
NoOfReplicas=2
DataMemory=80M
IndexMemory=18M
[MYSQLD DEFAULT]
[NDB_MGMD DEFAULT]
DataDir=/var/lib/mysql-cluster
[TCP DEFAULT]
# Section for the cluster management node
[NDB_MGMD]
NodeId=1
# IP address of the first management node (this system)
HostName=192.168.67.10
[NDB_MGMD]
NodeId=2
#IP address of the second management node
HostName=192.168.67.11
# Section for the storage nodes
[NDBD]
# IP address of the first storage node
HostName=192.168.67.12
DataDir= /var/lib/mysql-cluster
[NDBD]
# IP address of the second storage node
HostName=192.168.67.13
DataDir=/var/lib/mysql-cluster
# one [MYSQLD] per storage node
[MYSQLD]
[MYSQLD]

所有主机都定义在这个里,即使我们只安装第一个。请注意,管理主机节点需要设定 NodeId,而 NDBD 节点不需要设定.
完成这步操作后,可以用下面的命令启动管理节点
ndb_mgmd -f /var/lib/mysql-cluster/config.ini –configdir=/var/lib/mysql-cluster/

完成这步操作后, 你可以通过下面的命令向 init.d 中添加一个条目,以自动启动程序
echo “ndb_mgmd -f /var/lib/mysql-cluster/config.ini –configdir=/var/lib/mysql-cluster/” > /etc/init.d/ndb_mgmd
chmod 755 /etc/init.d/ndb_mgmd

如果一切顺利,第二个管理节点上遵循相同的步骤,并使用相同的配置。请不要改变的节点配置文件中的 ID
你可以使用 ndb_mgm 命令来验证管理节点的运行,(只需要在终端中输入 ndb_mgm),并通过键入 show,启动配置实用程序。此时 NDBD 节点和 MySQL 节点处于断开状态,需要将所有节点配置完成才可以输出正确的状态。

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2013-11/93019p2.htm

推荐阅读

搭建基于 Corosync+DRBD 的高可用 MySQL 集群 http://www.linuxidc.com/Linux/2013-10/91386.htm

Corosync+Pacemaker+DRBD+MySQL 实现高可用 (HA) 的 MySQL 集群 http://www.linuxidc.com/Linux/2013-08/89036p3.htm

Heartbeat+MySQL+NFS 实现高可用 (HA) 的 MySQL 集群 http://www.linuxidc.com/Linux/2013-08/88663.htm

Hadoop 集群(第 10 期)_MySQL 关系数据库 http://www.linuxidc.com/Linux/2012-12/76706.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计9530字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7979963
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛 NAS 硬件 02:某鱼 6 张左右就可拿下 5 盘位的飞牛圣体 NAS 前言 大家好,我是星...
Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集 在云原生体系中,Prometheus 已成为最主流的监控与报警...
开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

  开源 MoneyPrinterTurbo 利用 AI 大模型,一键生成高清短视频! 在短视频内容...
仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

还在忍受动辄数百兆的“全家桶”监控软件?后台偷占资源、界面杂乱冗余,想查个 CPU 温度都要层层点选? 今天给...
每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站 - 手机博物馆 -CHAZ 3D Experience 一句话介绍:一个用 3D 方式重温...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face 免费服务器 +Docker 快速部署 HertzBeat 监控平台 ...
Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集 在云原生体系中,Prometheus 已成为最主流的监控与报警...
4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

  4 盘位、4K 输出、J3455、遥控,NAS 硬件入门性价比之王 开篇 在 NAS 市场中,威...
星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

  星哥带你玩飞牛 NAS-16:不再错过公众号更新,飞牛 NAS 搭建 RSS 对于经常关注多个微...
手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板 前言 大家好,我是星哥。星哥发现很多新手刚接触服务器时,都会被“选购...