데이터 베이스 MySQL 튜토리얼 Ubuntu 12.04 LTS 构建高可用分布式 MySQL 集群_MySQL

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

Jun 01, 2016 pm 01:28 PM
영문

UbuntuMysql集群

bitsCN.com

本文的英文版本链接是 http://www.mrxuri.com/index.php/2013/11/20/install-mysql-cluster-on-ubuntu-12-04-lts.html

Install MySQL Cluster on Ubuntu 12.04 LTS

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

开发者官方网站 www.oracle.com

在这篇文章中,我会叙述如何 在 Ubuntu 12.04 LTS 构建高可用 MySQL 集群。

1. SQL Cluster 虚拟主机

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

这个例子中一共使用了 5 台主机,系统架构如下图所示

Install MySQL Cluster on Ubuntu 12.04 LTS

 

Install MySQL Cluster on Ubuntu 12.04 LTS

虚拟机群平台     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
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Chrome을 중국어 모드로 변경하는 방법은 무엇입니까? Chrome을 중국어 모드로 변경하는 방법은 무엇입니까? Mar 13, 2024 pm 07:31 PM

Chrome에서 중국어를 영어로 바꾸는 방법은 무엇입니까? 어떤 친구들은 사용하는 동안 지속적으로 영어 실력을 향상시킬 수 있도록 Chrome을 영어로 설정하고 싶어합니다. 그럼 영어로 어떻게 설정하나요? Chrome은 기본적으로 중국어입니다. 아래에서는 Chrome의 언어를 영어로 설정하는 방법을 살펴보겠습니다. 설정 단계: 1. 아래 그림과 같이 [Google Chrome]을 엽니다. 2. 아래 그림과 같이 Google Chrome 인터페이스 오른쪽 상단에 있는 [점 3개] 메뉴를 클릭합니다. 3. 메뉴 페이지에 진입한 후, 아래 그림과 같이 [설정]을 찾습니다. 4. 설정 페이지에 진입한 후, 아래 그림과 같이 [언어] 옵션을 클릭하세요. 5. 아래 그림과 같이 언어 인터페이스에서 [언어 추가]를 선택합니다.

Windows 10 컴퓨터 부팅 시 영어가 나오는 문제 해결 방법 Windows 10 컴퓨터 부팅 시 영어가 나오는 문제 해결 방법 Jul 11, 2023 pm 04:57 PM

많은 친구들이 컴퓨터를 사용할 때 항상 다양한 문제에 직면합니다. 예를 들어, 컴퓨터를 켰을 때 컴퓨터 전체가 중국어로 다시 설정하는 방법을 모르는 경우가 많습니다. win10 컴퓨터를 설정하려면 컴퓨터를 켤 때 영어가 나타나는 문제를 해결하는 방법입니다. 1. 컴퓨터를 켠 후 왼쪽 하단의 "시작 - 설정"을 클릭하세요. 그림과 같이: 2. Windows 설정 인터페이스에 들어간 후 "시간 및 언어"를 클릭합니다. 그림과 같이: 3. 시간 및 언어 인터페이스를 입력한 후 "지역 및 언어"를 클릭합니다. 그림과 같이: 4. 지역 및 언어 인터페이스를 입력한 후 "언어 설정 관리"를 클릭합니다. 그림에 표시된 대로: 5. 관리 인터페이스에 들어간 후 "설정 복사"를 클릭합니다. 그림과 같이: 6. 시작 화면 설정을 입력합니다.

Win11에서 영어 키보드를 숨기는 방법 Win11에서 영어 키보드를 숨기는 방법 Jan 03, 2024 pm 09:45 PM

일부 친구는 영어 키보드를 사용할 필요가 없고 중국어 키보드만 사용해야 합니다. 이때 영어 키보드가 매우 번거로워 숨기고 싶어할 수 있지만 직접 삭제할 수는 있습니다. 영어 입력 방법을 살펴보겠습니다. win11에서 영어 키보드 숨기는 방법 1. 영어 키보드는 숨길 수 없지만 입력 방법에서 직접 삭제할 수 있습니다. 2. 먼저 시작 메뉴를 통해 "설정"으로 들어갑니다. 3. 그런 다음 "시간 및 언어"를 선택합니다. 4. 그런 다음 "언어 및 지역"을 입력하고 아래의 "Addakeyboard"를 클릭하여 키보드 단축키를 추가합니다. 5. 그런 다음 원하는 입력 방법을 클릭한 후 왼쪽 하단에 있는 화살표를 클릭하여 해당 입력 방법으로 이동합니다.

Windows 10에 기본 제공되는 입력 방법을 영어로 수정하는 방법 Windows 10에 기본 제공되는 입력 방법을 영어로 수정하는 방법 Jan 15, 2024 pm 01:48 PM

컴퓨터 작업을 하는 많은 친구들은 영어 입력 방식을 사용하여 작업합니다. 이때 영어 입력을 잠가야 합니다. 그러면 어떻게 잠글 수 있을까요? 아래에서 자세한 방법을 살펴보겠습니다. win10에 포함된 입력 방법을 영어로 잠그는 방법: 1. 바탕 화면 오른쪽 하단에 있는 입력 방법 로고를 클릭한 다음 "언어 기본 설정"을 클릭합니다. 2. 그런 다음 기본 언어 아래에 있는 "기본 언어 추가"를 클릭하세요. 3. 대화 상자에 영어를 입력하고 클릭하여 언어를 설치하세요. 4. 설치가 완료되면 "기본 언어로 설정"을 클릭하세요.

Win10 컴퓨터 아이콘의 영어 표시 문제를 해결하는 방법 Win10 컴퓨터 아이콘의 영어 표시 문제를 해결하는 방법 Dec 23, 2023 pm 09:59 PM

컴퓨터를 사용할 때 많은 사용자들이 컴퓨터 화면의 모든 아이콘이 영어로 되어 있고, 심지어 메뉴까지 영어로 되어 있는 것을 발견합니다. 그래도 작동하지 않으면 지역을 변경하면 됩니다. win10에서 내 컴퓨터 아이콘이 영어로 변경된 것으로 표시되면 어떻게 해야 합니까? 해결 방법: 1. 시작 메뉴에서 설정을 열고 선택합니다. 2. 그런 다음 아래를 선택하고 클릭하세요. 3. 위의 작업으로 문제가 해결되지 않으면 제어판에서 변경할 수 있습니다.

Windows 10 Home Edition의 언어를 영어로 설정하는 방법 Windows 10 Home Edition의 언어를 영어로 설정하는 방법 Feb 14, 2024 pm 07:36 PM

Windows 운영 체제에서는 다양한 언어를 쉽게 활성화하여 시스템 표시를 용이하게 함으로써 사용자 경험과 통신 효율성을 더욱 향상시킬 수 있습니다. 시스템 설정 인터페이스를 열고 "입력 방법 및 키보드" 옵션을 선택한 다음 클릭하여 이 인터페이스에 선택한 언어를 추가합니다. Windows 10 Home Edition 언어를 영어로 설정하는 방법 1. 시작을 클릭하여 설정으로 들어갑니다. 시간 및 언어를 입력하려면 3. "지역 및 언어"를 선택한 다음 "언어 추가"를 클릭하세요. 4. 영어(미국)를 선택하세요.

PHP 프로그래밍에서 월을 영어로 변환하기 위한 구현 계획 공유 PHP 프로그래밍에서 월을 영어로 변환하기 위한 구현 계획 공유 Mar 22, 2024 am 08:24 AM

PHP 프로그래밍에서는 월을 영어로 변환해야 하는 경우가 많습니다. 이는 월별 보고서 생성, 달력 표시 등과 같은 일부 프로젝트에서 특히 일반적입니다. 구체적인 코드 예시를 통해 월을 영어로 변환하는 방법을 보여주는 구현 계획을 공유해 보겠습니다. PHP에서는 월의 숫자와 해당 영어 이름 간의 매핑 관계를 설정하여 월 변환을 수행할 수 있습니다. 먼저, 모든 달의 영어 이름을 포함하는 배열을 정의한 다음, 월 번호를 기준으로 배열에서 해당 영어 이름을 찾을 수 있습니다. //월의 영어 이름을 포함하는 배열을 정의합니다.

PHP 프로그래밍 기술: 영어 작문 문제 다루기 PHP 프로그래밍 기술: 영어 작문 문제 다루기 Mar 06, 2024 pm 06:06 PM

PHP 프로그래밍 팁: 영어로 작성된 문제 처리 PHP는 웹 개발 분야에서 널리 사용되는 강력한 서버측 스크립팅 언어입니다. PHP 프로그래밍 과정에서 영어 쓰기 처리 문제에 직면하는 경우가 많습니다. 특히 파일 IO 작업이나 데이터베이스 작업을 처리할 때 더욱 그렇습니다. 이 기사에서는 PHP에서 영어 쓰기 문제를 처리하는 방법을 살펴보고 구체적인 코드 예제를 제공합니다. 1. 유니코드 인코딩 문제 영어 쓰기 문제를 다룰 때는 먼저 유니코드 인코딩을 이해해야 합니다. 유니코드는 단어이다

See all articles