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

MySQL の最適化 - クラスター構築コードの手順の詳細な説明 (図)

Mar 10, 2017 am 10:54 AM

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 までご連絡ください。

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

MySQL:簡単な学習のためのシンプルな概念 MySQL:簡単な学習のためのシンプルな概念 Apr 10, 2025 am 09:29 AM

MySQLは、オープンソースのリレーショナルデータベース管理システムです。 1)データベースとテーブルの作成:createdatabaseおよびcreateTableコマンドを使用します。 2)基本操作:挿入、更新、削除、選択。 3)高度な操作:参加、サブクエリ、トランザクション処理。 4)デバッグスキル:構文、データ型、およびアクセス許可を確認します。 5)最適化の提案:インデックスを使用し、選択*を避け、トランザクションを使用します。

phpmyadminを開く方法 phpmyadminを開く方法 Apr 10, 2025 pm 10:51 PM

次の手順でphpmyadminを開くことができます。1。ウェブサイトコントロールパネルにログインします。 2。phpmyadminアイコンを見つけてクリックします。 3。MySQL資格情報を入力します。 4.「ログイン」をクリックします。

MySQL:世界で最も人気のあるデータベースの紹介 MySQL:世界で最も人気のあるデータベースの紹介 Apr 12, 2025 am 12:18 AM

MySQLはオープンソースのリレーショナルデータベース管理システムであり、主にデータを迅速かつ確実に保存および取得するために使用されます。その実用的な原則には、クライアントリクエスト、クエリ解像度、クエリの実行、返品結果が含まれます。使用法の例には、テーブルの作成、データの挿入とクエリ、および参加操作などの高度な機能が含まれます。一般的なエラーには、SQL構文、データ型、およびアクセス許可、および最適化の提案には、インデックスの使用、最適化されたクエリ、およびテーブルの分割が含まれます。

なぜMySQLを使用するのですか?利点と利点 なぜMySQLを使用するのですか?利点と利点 Apr 12, 2025 am 12:17 AM

MySQLは、そのパフォーマンス、信頼性、使いやすさ、コミュニティサポートに選択されています。 1.MYSQLは、複数のデータ型と高度なクエリ操作をサポートし、効率的なデータストレージおよび検索機能を提供します。 2.クライアントサーバーアーキテクチャと複数のストレージエンジンを採用して、トランザクションとクエリの最適化をサポートします。 3.使いやすく、さまざまなオペレーティングシステムとプログラミング言語をサポートしています。 4.強力なコミュニティサポートを提供し、豊富なリソースとソリューションを提供します。

単一のスレッドレディスの使用方法 単一のスレッドレディスの使用方法 Apr 10, 2025 pm 07:12 PM

Redisは、単一のスレッドアーキテクチャを使用して、高性能、シンプルさ、一貫性を提供します。 I/Oマルチプレックス、イベントループ、ノンブロッキングI/O、共有メモリを使用して同時性を向上させますが、並行性の制限、単一の障害、および書き込み集約型のワークロードには適していません。

MySQLおよびSQL:開発者にとって不可欠なスキル MySQLおよびSQL:開発者にとって不可欠なスキル Apr 10, 2025 am 09:30 AM

MySQLとSQLは、開発者にとって不可欠なスキルです。 1.MYSQLはオープンソースのリレーショナルデータベース管理システムであり、SQLはデータベースの管理と操作に使用される標準言語です。 2.MYSQLは、効率的なデータストレージと検索機能を介して複数のストレージエンジンをサポートし、SQLは簡単なステートメントを通じて複雑なデータ操作を完了します。 3.使用の例には、条件によるフィルタリングやソートなどの基本的なクエリと高度なクエリが含まれます。 4.一般的なエラーには、SQLステートメントをチェックして説明コマンドを使用することで最適化できる構文エラーとパフォーマンスの問題が含まれます。 5.パフォーマンス最適化手法には、インデックスの使用、フルテーブルスキャンの回避、参加操作の最適化、コードの読み取り可能性の向上が含まれます。

MySQLの場所:データベースとプログラミング MySQLの場所:データベースとプログラミング Apr 13, 2025 am 12:18 AM

データベースとプログラミングにおけるMySQLの位置は非常に重要です。これは、さまざまなアプリケーションシナリオで広く使用されているオープンソースのリレーショナルデータベース管理システムです。 1)MySQLは、効率的なデータストレージ、組織、および検索機能を提供し、Web、モバイル、およびエンタープライズレベルのシステムをサポートします。 2)クライアントサーバーアーキテクチャを使用し、複数のストレージエンジンとインデックスの最適化をサポートします。 3)基本的な使用には、テーブルの作成とデータの挿入が含まれ、高度な使用法にはマルチテーブル結合と複雑なクエリが含まれます。 4)SQL構文エラーやパフォーマンスの問題などのよくある質問は、説明コマンドとスロークエリログを介してデバッグできます。 5)パフォーマンス最適化方法には、インデックスの合理的な使用、最適化されたクエリ、およびキャッシュの使用が含まれます。ベストプラクティスには、トランザクションと準備された星の使用が含まれます

SQLデータベースの構築方法 SQLデータベースの構築方法 Apr 09, 2025 pm 04:24 PM

SQLデータベースの構築には、DBMSの選択が必要です。 DBMSのインストール。データベースの作成。テーブルの作成;データの挿入;データの取得。データの更新。データの削除。ユーザーの管理。データベースのバックアップ。

See all articles