Ubuntu 12.04 LTS 构建高可用分布式 MySQL 集群_MySQL
UbuntuMysql集群
bitsCN.com本文的英文版本链接是 http://www.mrxuri.com/index.php/2013/11/20/install-mysql-cluster-on-ubuntu-12-04-lts.html
MySQL Cluster 是 MySQL 适合于分布式计算环境的高实用、高冗余版本。它采用了 NDB Cluster 存储引擎,允许在1个 Cluster 中运行多个MySQL服务器。通过无共享体系结构,系统能够使用廉价的硬件,而且对软硬件无特殊要求。此外,由于每个组件有自己的内存和磁盘,不存在单点故障。
开发者官方网站 www.oracle.com
在这篇文章中,我会叙述如何 在 Ubuntu 12.04 LTS 构建高可用 MySQL 集群。
1. SQL Cluster 虚拟主机
要创建一个功能齐全的集群,至少需要3 台主机才可以完成。其中一个主机作为管理节点,另外两个做数据节点。如果数据节点脱机,群集仍然可以工作,但是一旦管理节点出现问题,将导致集群无法正常工作,所以在可能的情况下,建立两个管理节点。在我的例子中,我将使用二个管理节点的集群。
这个例子中一共使用了 5 台主机,系统架构如下图所示
虚拟机群平台 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-mgmcd /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.gztar 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_64cp bin/ndb_mgm /usr/bincp bin/ndb_mgmd /usr/bin
更改目录的权限,并可以选择删除下载的源文件
chmod 755 /usr/bin/ndb_mg*cd /usr/srcrm -rf /usr/src/mysql-mgm
接下来,我们创建管理节点配置文件,在 /var/lib/mysql-cluster/ 文件夹中,名字叫做 config.ini ,这个文件夹事先不存在,创建它
mkdir /var/lib/mysql-cluster
在 config.ini 文件创建完成后,使用你喜欢的文本编辑器编辑此文件,内容类似于这样
[NDBD DEFAULT] NoOfReplicas=2DataMemory=80MIndexMemory=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 nodeHostName=192.168.67.11 # Section for the storage nodes[NDBD]# IP address of the first storage nodeHostName=192.168.67.12DataDir= /var/lib/mysql-cluster[NDBD]# IP address of the second storage nodeHostName=192.168.67.13DataDir=/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_mgmdchmod 755 /etc/init.d/ndb_mgmd
如果一切顺利,第二个管理节点上遵循相同的步骤,并使用相同的配置。请不要改变的节点配置文件中的 ID
你可以使用 ndb_mgm 命令来验证管理节点的运行,(只需要在终端中输入 ndb_mgm ) ,并通过键入 show,启动配置实用程序。此时 NDBD 节点和 MySQL 节点处于断开状态,需要将所有节点配置完成才可以输出正确的状态。
3. 数据节点
创建数据节点与创建管理节点的过程是类似的。让我们开始创建一个 mysql 组,将用户 mysql 添加到 mysql 组中
groupadd mysqluseradd -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.gztar 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 mysqlcd mysqlapt-get install libaio1 libaio-devscripts/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/binmv * /usr/bincd ../rm -fr /usr/local/mysql/binln -s /usr/bin /usr/local/mysql/bin
MySQL 配置文件目前不存在,所以我们需要自己创建它。该文件位于 /etc/ 中,并命名为 my.cnf 文件。使用你喜欢的文本编辑器,并添加以下几行
[mysqld]ndbcluster# IP address of the cluster management nodendb-connectstring=192.168.67.10,192.168.67.11[mysql_cluster]# IP address of the cluster management nodendb-connectstring=192.168.67.10,192.168.67.11
请注意,这两个管理节点的地址,使用逗号分隔。如果你只有一个管理节点,只需在列表中删除第二个。一旦 my.cnf 文件已保存,我们需要创建 MySQL 的数据文件夹
mkdir /var/lib/mysql-cluster
完成这些后,我们需要初始化集群并启动该服务。只有当你开始第一次的节点,或当在管理节点上的 /var/lib/mysql-cluster/config.ini 文件被更改时,需要做初始化
cd /var/lib/mysql-clusterndbd –-initial/etc/init.d/mysql.server start
接下来,通过运行相应的脚本安装 MySQL
/usr/local/mysql/bin/mysql_secure_installation
最后,我们需要 NDB 自动启动
echo "ndbd" > /etc/init.d/ndbdchmod 755 /etc/init.d/ndbd
好了,我们已经完成了第一个数据节点的配置,按照相同的方法和步骤去完成第二个数据节点的配置
4.验证与测试
如果一切正常,在管理节点终端中执行命令 ndb_mgm ,然后键入 show. 这个时候应该看到的数据库节点已填充的提示
root@MYSQL-MGM1:~# ndb_mgmndb_mgm> showCluster 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 -pmysql> 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 -pmysql> 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-proxyroot@mysql-proxy:~# mkdir /etc/mysql-proxyroot@mysql-proxy:~# cd /etc/mysql-proxyroot@mysql-proxy:/etc/mysql-proxy# nano mysql-proxy.conf
在 mysql-proxy.conf 文件中加入下面几行
[mysql-proxy]daemon = trueproxy-address = 192.168.67.14:3306proxy-skip-profiling = truekeepalive = trueevent-threads = 50pid-file = /var/run/mysql-proxy.pidlog-file = /var/log/mysql-proxy.loglog-level = debugproxy-backend-addresses = 192.168.67.12:3306,192.168.67.13:3306proxy-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地址的行为,它允许远程连接到这个数据库节点。请记得在这个集群中的节点中添加相同的用户具有相同配置的其他所有数据库
撰写本文参考了这篇文章 MySQL NDB Cluster setup on Ubuntu 12.04 LTS, 做了一些改动。
如果有哪里有误,欢迎指正,这篇文章的英文版本在我的个人网站 www.mrxuri.com 上,链接是 http://www.mrxuri.com/index.php/2013/11/20/install-mysql-cluster-on-ubuntu-12-04-lts.html 欢迎大家访问。
bitsCN.com
热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

很多小伙伴在使用电脑时,总会遇到一些各种各样的问题,例如电脑开机后发现整个电脑都变成英文了,很多小伙伴不知道怎么设置回中文,下面小编就教大家win10电脑开机出现英文怎么解决。 1.脑开机后,点击左下角的“开始—设置”。如图所示: 2.进入Windows设置界面后,点击“时间和语言”。如图所示: 3.进入时间和语言界面后,点击“区域和语言”。如图所示: 4.进入区域和语言界面后,点击“管理语言设置”。如图所示: 5.进入管理界面后,点击“复制设置”。如图所示: 6.进入欢迎屏幕设

谷歌浏览器如何把中文改成英文?一些小伙伴想要将谷歌浏览器设置为英文,这样就能够在使用过程中不断的提高自己的英文了。那么设置为英文该如何操作呢?谷歌浏览器默认是中文的,下面小编给大家带来谷歌浏览器设置语言为英文的方法,一起来看看吧。 设置步骤 1、打开【谷歌浏览器】,如下图所示。 2、点击谷歌浏览器右上角界面【三点】菜单,如下图所示。 3、进入到菜单页面后,找到【设置】,如下图所示。 4、进入到设置页面后,点击【语言】选项,如下图所示。 5、在语言界面选择【添加语言】,如下图所示。

一些朋友不需要使用英文键盘,只需要使用中文键盘,这时候就会觉得英文键盘非常麻烦,想要隐藏它,不过我们无法隐藏它,但是可以直接删除英文输入法,下面就跟着小编一起来看一下吧。win11怎么隐藏英文键盘1、英文键盘是无法隐藏的,但是我们可以直接在输入法中将它删除。2、首先通过开始菜单进入“设置”3、然后在其中选择“Time&Language”4、接着进入其中的“语言&区域”,然后点击下方的“Addakeyboard”,就可以添加键盘快捷键了。5、接着点击我们想要的输入法,再点击左下角箭头将它移到

在电脑上办公的小伙伴很多都会使用英文输入法进行工作,这时候就需要锁定英文输入,那么该怎么锁定呢?下面就给你们带来了详细方法一起看看吧。win10自带的输入法怎么锁定英文:1、点击桌面右下角的输入法标识,然后点击“语言首选项”。2、之后再首选语言下面点击“添加首选的语言”。3、在对话框中输入英语,点击后安装语言。4、安装完成后点击“设置为默认语言”即可。

很多用户们在使用电脑的发现自己电脑屏幕上所有的图标都变成英文了,甚至菜单都变成英文了,我们只需要去修改一下系统默认语言就可以了,不行的话再改一下地区。win10显示我的电脑图标变成英文怎么办解决方法:1、从开始菜单打开设置,然后选择。2、然后在中,选择,点击下方的。3、如果以上操作未解决的话,我们可以从控制面板中更改。

在Windows操作系统中,我们可轻松启用各类语言以便于系统显示,从而进一步加强用户体验以及交流效率。打开系统设置界面,接着选择“输入法和键盘”选项,随后在此界面下点击添加选定的语言windows10家庭版语言怎么设为英文1、点击开始进入设置2、点击进入时间和语言3、选择“区域和语言”,然后点击“添加语言”4、选择English(unitedstates)

月份在PHP编程中经常需要转换为英文,这在一些项目中尤其常见,比如生成月度报表、展示日历等。下面分享一种实现方案,通过具体的代码示例演示如何将月份转换为英文。在PHP中,可以通过将月份的数字和对应的英文名称建立一个映射关系来实现月份转换。首先,可以定义一个包含所有月份英文名称的数组,然后根据月份数字在数组中查找对应的英文名称。//定义包含月份英文名称的数组

PHP编程技巧:处理英文写入的问题PHP是一种功能强大的服务器端脚本语言,广泛应用于Web开发领域。在PHP编程过程中,经常会遇到处理英文写入的问题,特别是在处理文件IO操作或者数据库操作时。本文将探讨如何在PHP中处理英文写入的问题,并提供具体的代码示例。一、Unicode编码问题在处理英文写入的问题时,首先要了解Unicode编码。Unicode是一种字
