検索
ホームページデータベースmysql チュートリアルMySQL の最適化 - クラスター構築コードの手順の詳細な説明 (図)

1 概要


MySQL Cluster は、分散コンピューティング環境に適した、非常に実用的でスケーラブル、高性能、高冗長な MySQL バージョンです。その研究開発の本来の目的は、最も厳しいアプリケーション要件を満たすことです。多くの業界では、これらのアプリケーションではデータベース操作の信頼性が 99.999% に達することが必要とされます。 MySQL Cluster を使用すると、シェアード ナッシング システムで「インメモリ」データベース クラスタを展開できます。シェアード ナッシング アーキテクチャにより、システムは安価なハードウェアを使用でき、ソフトウェアやハードウェアに特別な要件はありません。さらに、各コンポーネントには独自のメモリとディスクがあるため、単一障害点はありません。

実際、MySQL Cluster は、NDB と呼ばれるメモリ クラスター ストレージ エンジンを標準の MySQL サーバーと統合しています。これは、MySQL サーバー、データ ノード、管理サーバー、および独自のデータ アクセス プログラムを含む 1 つ以上のプロセスをそれぞれ実行する一連のコンピューターで構成されます。

MySQL Cluster には、さまざまなフェイルオーバーおよび負荷分散オプションを使用して NDB ストレージ エンジンを構成する機能がありますが、これをクラスター レベルのストレージ エンジンで行うのが最も簡単です。以下は、MySQL クラスターの構造図です。


MySQL は、構造的な観点から見ると、次の 3 種類のノード (コンピューターまたはプロセス) で構成されています。

管理ノード: 他のノードの構成を提供するために使用されます。クラスター全体の管理、調停、その他の機能。理論的には、1 つのサーバーを通じてサービスを提供できれば十分です。

データ ノード: MySQL Cluster の中核であり、データ、ログを保存し、データのさまざまな管理サービスを提供します。ノードが 2 つを超えると、クラスターの高可用性が保証されますが、DB ノードの数が増えると、クラスターの処理速度が遅くなります。

SQL ノード (API): MySQL Cluster データにアクセスし、外部アプリケーション サービスを提供するために使用されます。 API ノードを追加すると、クラスター全体の同時アクセス速度と全体的なスループットが向上します。ノードは、Web アプリケーション サーバー、専用サーバー、または DB と同じサーバーにデプロイできます。

2 NDB エンジン


MySQL Cluster は専用のメモリベースのストレージ エンジン、つまり NDB エンジンを使用します。ただし、メモリに基づいているため、高速であり、ディスク I/O ボトルネックがないことです。データベース NDB を実行する MySQL サーバーに 4G、8G、さらには 16G などの十分なメモリが必要な場合、スケールはシ​​ステムの合計メモリによって制限されます。 NDB エンジンは分散されており、データの信頼性と拡張性を実現するために複数のサーバーに構成できます。理論的には、2 つの NDB ストレージ ノードを構成することで、データベース クラスター全体の冗長性を実現し、単一障害点の問題を解決できます。 。


2.1 欠点


  • メモリに基づいて、データベースのサイズはクラスターの合計メモリ サイズによって制限されます

    メモリに基づいて、停電後にデータが失われる可能性があります。これはテストによって確認する必要があります。

    複数のノードがネットワークを介して通信、データ同期、クエリ、その他の操作を実装するため、整合性はネットワーク速度に影響されます

    そのため、速度は比較的遅いです

    2.2 利点


    • 複数のノード地理的に異なる場所に分散できるため、分散データベースを実装するためのソリューションでもあります。

      拡張性が非常に優れており、ノードを追加することでデータベースクラスターを拡張できます。

      冗長性は非常に優れており、複数のノードに完全なデータベース データがあるため、ノードのダウンタイムによってサービスが中断されることはありません。

      高可用性の実装コストは比較的低く、共有ストレージ デバイスと専用ソフトウェアを必要とする従来の高可用性ソリューションとは異なり、NDB は十分なメモリがある限り実装できます。

2. クラスターの構築

最も単純な MySQL Cluster システムが構築されます。設定方法のすべてのコマンドは root アカウントで実行されます。この MySQL Cluster には 1 つの管理ノード、2 つのデータ ノード、および 2 つの SQL ノードが含まれており、これら 5 つのノードはそれぞれ 5 つの仮想マシンにインストールされます。

管理ノード

mysql-mgm

192.168.124 .141

データノード 1

mysql-ndbd-1

192.168.124.142

データノード 2

mysql-ndbd- 2

192.168.124.143

SQLノード 1

mysql-sql-1

192.168.124.144

SQLNode2

mysql-sql-2

192.168.124.145

1. パブリック設定

ここでの設定項目を 3 つの仮想マシンにそれぞれ設定してください。

1. 仮想マシンをインストールします

仮想マシンのオペレーティング システムは、CentOS 6.4 の x86_64 バージョンをインストールし、NAT ネットワークを使用し、vmware-tools もインストールします。ここでは、具体的なインストール方法については詳しく説明しません。

2. mysql クラスターをコピーします

次のバージョンの MySQL-Cluster をダウンロードします:

http://www.php.cn/

ダウンロードした圧縮パッケージを仮想マシンの /root/Downloads ディレクトリにコピーします。次に、シェルで次のコマンドを実行します:

cd /root/Downloads
tar -xvzf mysql-cluster-gpl-7.3.4-linux-glibc2.5-x86_64.tar.gz
mv mysql-cluster-gpl-7.3.4-linux-glibc2.5-x86_64 /usr/local/mysql

3. セキュリティ ポリシーをオフにします

iptables ファイアウォールを閉じます (またはファイアウォールの 1186 ポートと 3306 ポートを開きます)。シェルで次のコマンドを実行します:

chkconfig --level 35 iptables off

SELinux をオフにし、シェルで次のコマンドを実行します:

gedit /etc/selinux/config

設定ファイル変更した設定ファイルの内容は以下の通りです:

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

最後にシステムを再起動します

2. 構成管理ノード (192.168.124.141)

1. config.ini 設定ファイルを設定します

シェルコマンドで以下を実行します:

mkdir /var/lib/mysql-cluster
cd /var/lib/mysql-cluster
gedit config.ini


設定ファイル config.ini の内容は次のとおりです:

りー

2. 管理ノードをインストールします

管理ノードをインストールします。いいえ、mysqld バイナリ ファイルが必要で、MySQL Cluster サーバー プログラム (ndb_mgmd) とリッスン クライアント プログラム (ndb_mgm) のみが必要です。シェルで次のコマンドを実行します:

[ndbd default]
NoOfReplicas=2
DataMemory=80M
IndexMemory=18M
[ndb_mgmd]
NodeId=1
hostname=192.168.124.141
datadir=/var/lib/mysql-cluster
[ndbd]
NodeId=2
hostname=192.168.124.142
datadir=/usr/local/mysql/data
[ndbd]NodeId=3hostname=192.168.124.143datadir=/usr/local/mysql/data
[mysqld]NodeId=4hostname=192.168.124.144
[mysqld]
NodeId=5
hostname=192.168.124.145

3. データノードを構成します (192.168.124.142、192.168.124.143)

1. QL グループとユーザー

実行シェルで次のコマンドを実行します:

cp /usr/local/mysql/bin/ndb_mgm* /usr/local/bin
cd /usr/local/bin
chmod +x ndb_mgm*

2. my.cnf 構成ファイルを構成します

シェルで次のコマンドを実行します:

groupadd mysql
useradd -g mysql mysql

プロファイル my.cnf の内容は次のとおりです。

gedit /etc/my.cnf

3. システム データベースを作成します

シェルで次のコマンドを実行します:

[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/sock/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[mysql_cluster]
ndb-connectstring=192.168.124.141

4. データディレクトリを設定します

シェルで次のコマンドを実行します:

cd /usr/local/mysql
mkdir sock
scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

5. MySQL サービスを設定します

シェルで次のコマンドを実行します:

chown -R root .
chown -R mysql.mysql /usr/local/mysql/data
chown -R mysql.mysql /usr/local/mysql/sock
chgrp -R mysql .

4. SQL ノードを構成します (192.168.124.144、192.168.124.145)

1. ql グループとユーザー

シェルで次のコマンドを実行します。

cp support-files/mysql.server /etc/rc.d/init.d/
chmod +x /etc/rc.d/init.d/mysql.server
chkconfig --add mysql.server

2. my.cnf 構成ファイルを構成します

シェルで次のコマンドを実行します:

groupadd mysql
useradd -g mysql mysql

設定ファイルの内容.cnf は次のとおりです:

gedit /etc/my.cnf

3. システム データベースを作成します

シェルで次のコマンドを実行します:

[client]
socket=/usr/local/mysql/sock/mysql.sock
[mysqld]
ndbcluster
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/sock/mysql.sock
ndb-connectstring=192.168.124.141
[mysql_cluster]
ndb-connectstring=192.168.124.141

4. 设置数据目录

在shell中运行以下命令:

chown -R root .
chown -R mysql.mysql /usr/local/mysql/data
chown -R mysql.mysql /usr/local/mysql/sock
chgrp -R mysql .

5. 配置MySQL服务

在shell中运行以下命令:

cp support-files/mysql.server /etc/rc.d/init.d/
chmod +x /etc/rc.d/init.d/mysql.server
chkconfig --add mysql.server

五、Cluster环境启动

注意启动顺序:首先是管理节点,然后是数据节点,最后是SQL节点。

1. 启动管理结点

在shell中运行以下命令:

ndb_mgmd -f /var/lib/mysql-cluster/config.ini

还可以使用ndb_mgm来监听客户端,如下:

ndb_mgm

2. 启动数据结点

首次启动,则需要添加--initial参数,以便进行NDB节点的初始化工作。在以后的启动过程中,则是不能添加该参数的,否则ndbd程序会清除在之前建立的所有用于恢复的数据文件和日志文件。

/usr/local/mysql/bin/ndbd --initial

如果不是首次启动,则执行下面的命令。

/usr/local/mysql/bin/ndbd

3. 启动SQL结点

若MySQL服务没有运行,则在shell中运行以下命令:

/usr/local/mysql/bin/mysqld_safe --user=mysql &

4. 启动测试

查看管理节点,启动成功:

六、集群测试

1. 测试一

现在我们在其中一个SQL结点上进行相关数据库的创建,然后到另外一个SQL结点上看看数据是否同步。

在SQL结点1(192.168.124.144)上执行:

shell> /usr/local/mysql/bin/mysql -u root -p
mysql>show databases;
mysql>create database aa;
mysql>use aa;
mysql>CREATE TABLE ctest2 (i INT) ENGINE=NDB; //这里必须指定数据库表的引擎为NDB,否则同步失败
mysql> INSERT INTO ctest2 () VALUES (1);
mysql> SELECT * FROM ctest2;

然后在SQL结点2上看数据是否同步过来了

经过测试,在非master上创建数据,可以同步到master上

查看表的引擎是不是NDB,>show create table 表名;

2. 测试二

关闭一个数据节点 ,在另外一个节点写输入,开启关闭的节点,看数据是否同步过来。

首先把数据结点1重启,然后在结点2上添加数据

在SQL结点2(192.168.124.145)上操作如下:

mysql> create database bb;
mysql> use bb;
mysql> CREATE TABLE ctest3 (i INT) ENGINE=NDB;
mysql> use aa;
mysql> INSERT INTO ctest2 () VALUES (3333);
mysql> SELECT * FROM ctest2;

等数据结点1启动完毕,启动数据结点1的服务

#/usr/local/mysql/bin/ndbd --initial#service mysqld start


然后登录进去查看数据

# /usr/local/mysql/bin/mysql -u root –p


可以看到数据已经同步过来了,说明数据可以双向同步了。

七、关闭集群

1. 关闭管理节点和数据节点,只需要在管理节点(ClusterMgm--134)里执行:

shell> /usr/local/mysql/bin/ndb_mgm -e shutdown

显示

Connected to Management Server at: localhost:1186
2 NDB Cluster node(s) have shutdown.
Disconnecting to allow management server to shutdown.

2. 然后关闭Sql节点(135,136),分别在2个节点里运行:

shell> /etc/init.d/mysql.server stop
Shutting down MySQL... SUCCESS!

注意:要再次启动集群,就按照第五部分的启动步骤即可,不过这次启动数据节点的时候就不要加”-initial”参数了。


以上がMySQL の最適化 - クラスター構築コードの手順の詳細な説明 (図)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
图文详解mysql架构原理图文详解mysql架构原理May 17, 2022 pm 05:54 PM

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于架构原理的相关内容,MySQL Server架构自顶向下大致可以分网络连接层、服务层、存储引擎层和系统文件层,下面一起来看一下,希望对大家有帮助。

mysql怎么替换换行符mysql怎么替换换行符Apr 18, 2022 pm 03:14 PM

在mysql中,可以利用char()和REPLACE()函数来替换换行符;REPLACE()函数可以用新字符串替换列中的换行符,而换行符可使用“char(13)”来表示,语法为“replace(字段名,char(13),'新字符串') ”。

mysql怎么去掉第一个字符mysql怎么去掉第一个字符May 19, 2022 am 10:21 AM

方法:1、利用right函数,语法为“update 表名 set 指定字段 = right(指定字段, length(指定字段)-1)...”;2、利用substring函数,语法为“select substring(指定字段,2)..”。

mysql的msi与zip版本有什么区别mysql的msi与zip版本有什么区别May 16, 2022 pm 04:33 PM

mysql的msi与zip版本的区别:1、zip包含的安装程序是一种主动安装,而msi包含的是被installer所用的安装文件以提交请求的方式安装;2、zip是一种数据压缩和文档存储的文件格式,msi是微软格式的安装包。

mysql怎么将varchar转换为int类型mysql怎么将varchar转换为int类型May 12, 2022 pm 04:51 PM

转换方法:1、利用cast函数,语法“select * from 表名 order by cast(字段名 as SIGNED)”;2、利用“select * from 表名 order by CONVERT(字段名,SIGNED)”语句。

MySQL复制技术之异步复制和半同步复制MySQL复制技术之异步复制和半同步复制Apr 25, 2022 pm 07:21 PM

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于MySQL复制技术的相关问题,包括了异步复制、半同步复制等等内容,下面一起来看一下,希望对大家有帮助。

带你把MySQL索引吃透了带你把MySQL索引吃透了Apr 22, 2022 am 11:48 AM

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了mysql高级篇的一些问题,包括了索引是什么、索引底层实现等等问题,下面一起来看一下,希望对大家有帮助。

mysql怎么判断是否是数字类型mysql怎么判断是否是数字类型May 16, 2022 am 10:09 AM

在mysql中,可以利用REGEXP运算符判断数据是否是数字类型,语法为“String REGEXP '[^0-9.]'”;该运算符是正则表达式的缩写,若数据字符中含有数字时,返回的结果是true,反之返回的结果是false。

See all articles

ホット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ヘンタイを無料で生成します。

ホットツール

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境