2

CentOS で mysql クラスターを構成しようとしていますが、解決方法がわからない問題がいくつかありました。助けていただければ幸いです。

mysql クラスター環境:

DB1 - 192.168.50.101 - Management Server (MGM) node.
DB2 - 192.168.50.102 - Storage Server (NDBD) node 1.
DB3 - 192.168.50.103 - Storage Server (NDBD) node 2.

クラスター全体を構成するために私が従った手順:

  1. 管理サーバー ノード (192.168.50.101) を構成します。

1.1 mysql サーバーをインストールして起動します。

# yum install mysql mysql-server
# chkconfig --levels 235 mysqld on
# /etc/init.d/mysqld start

1.2 クラスター パッケージをインストールします。

# rpm -ivh MySQL-ndb-management-5.0.90-1.glibc23.i386.rpm
# rpm -ivh MySQL-ndb-tools-5.0.90-1.glibc23.i386.rpm

1.3 クラスタ ディレクトリと config.ini ファイルを作成する

# mkdir /var/lib/mysql-cluster
# cd /var/lib/mysql-cluster
# vi config.ini

1.4 config.ini にクラスター構成の内容を書き込む

[NDBD DEFAULT]
NoOfReplicas=2
DataMemory=80M # How much memory to allocate for data storage
IndexMemory=18M # How much memory to allocate for index storage
# For DataMemory and IndexMemory, we have used the
# default values. Since the .world. database takes up
# only about 500KB, this should be more than enough for
# this example Cluster setup.
[MYSQLD DEFAULT]
[NDB_MGMD DEFAULT]
[TCP DEFAULT]

# Management Section (MGM)
[NDB_MGMD]
#NodeId = 1
# IP address of the management node
HostName=192.168.50.101

# Storage Server Section (NDBD)
[NDBD]
#NodeId = 2
# IP address of the Storage Server (NDBD) node 1
HostName=192.168.50.102
DataDir=/var/lib/mysql
BackupDataDir=/var/lib/backup
DataMemory=100M

[NDBD]
#NodeId = 3
# IP address of the Storage Server (NDBD) node 2
HostName=192.168.50.103
DataDir=/var/lib/mysql
BackupDataDir=/var/lib/backup
DataMemory=100M

# one [MYSQLD] per storage node
# 2 Clients MySQL
[MYSQLD]
#NodeId = 5
[MYSQLD]
#NodeId = 6

1.5 管理サービスの開始

# ndb_mgmd

1.6 管理コンソールに入る

# ndb_mgm

1.7 コマンド SHOW を使用してノードのステータスを確認する

ndb_mgm> show

Connected to Managemente Server at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 nodes
id=2 (not connected, accepting connect from 192.168.50.102)
id=3 (not connected, accepting connect from 192.168.50.103)

[ndb_mgmd(MGM)] 1 node
id=1 @192.168.50.101 (Version: 5.0.95)

[mysqld(API)] 2 nodes
id=5 (not connected, accepting connect from any host)
id=6 (not connected, accepting connect from any host)
  1. 管理ノードの構成はOKなので、1台のStorage Serverノード(192.168.50.102)を構成してみましょう。

2.1 ステップ 1.1 のように、mysql サーバーをインストールします。

2.2 " http://dev.mysql.com/downloads/cluster/ "から MYSQL Cluster をダウンロードします。

2.3 コンテンツを抽出し、ファイル ndb を /usr/bin/ にコピーします。

2.4 ストレージ サーバー ノードを管理サーバーに接続します。

ndbd --connect-string=192.168.50.101 --initial -n

そして、ここに問題があります。管理サーバーでは、次のエラーが表示されます。

ndb_mgm > Node 2: Forced node shutdown completed. Ocurred during startphase 0. 
Caused by error 2350: 'Invalid configuration received from Management 
Server(Configuration error). Permanent error, external action needed'.

Storage Server ノードでは、次の警告が表示されます。

[ndbd] INFO    -- Angel connected to '102.168.50.101:1186'
[ndbd] INFO    -- Angel allocated nodeid: 2
[ndbd] WARNING -- Configuration didn't contain generation (likely old ndb_mgmd

問題を解決するために何をすべきか誰かが知っていますか?

ありがとうございました!

4

1 に答える 1

2

他の誰かに役立つ場合は、MySQL フォーラムでの回答をここに貼り付けます...


リポジトリ (非常に古いバージョン) の管理ノード バイナリと非クラスター MySQL サーバー (許可されていません) を mysql.com (非常に新しい) のデータ ノードと混在させようとしているようです。

最初のステップは、mysql.com のすべてのノードにバイナリを使用することです。

ブラウザ駆動の自動インストーラを試して作業を簡素化したい場合は、http : //www.clusterdb.com/mysql-cluster/auto-installer-labs-release/ をご覧ください。手動でセットアップしたい場合は、http: //www.clusterdb.com/mysql-cluster/deploying-mysql-cluster-over-multiple-hosts/ を参照してください。


アンドリューさん、こんにちは。

ご返事ありがとうございます。実際、私は mgm ノードで古いバージョンの mysql を使用していました。

http://www.mysql.com/downloads/cluster/からすべてをダウンロードし、前に述べたようにすべてのノードを設定し、次を使用してデータ ノードを管理ノードに接続しました。

shell> /usr/local/mysql/bin/ndbd --connect-string=192.168.56.101 -- Angel は 192.168.56.101:1186 に接続されました -- Angel は nodeid を割り当てました: 2

また、コマンド show を使用して管理ノードを確認しました。

ndb_mbm> ショー

クラスタ構成

[ndbd(NDB)] 2 ノード id=2 @192.168.50.102(mysql-5-5.29 ndb-7.2.10, starting, Nodegroup:0) id=3 (未接続、192.168.50.103 からの接続を受け入れる)

[ndb_mgmd(MGM)] 1 ノード ID=1 @192.168.50.101 (バージョン: 5.0.95)

[mysqld(API)] 2ノード id=5 (未接続、どのホストからの接続も受け付ける) id=6 (未接続、どのホストからの接続も受け付ける)

ご覧のとおり、データ ノード (id 2) は mgm ノードに接続していますが、データ ノード (id 2) mysql を起動しようとすると、起動しません...

shell> /etc/init.d/mysql start MySQL の起動.................................................サーバーが停止せずに終了するPID ファイルの更新 (/usr/loca/mysql/data/localhost.node2-1.{FAILED])

問題を確認したところ、mysql は /etc/my.cnf に記述した構成を気に入らないようです。

最初に私が持っていた:

-- my.cnf --

[mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock ユーザー=mysql シンボリックリンク=0

[mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid

そして、ndbcluster 構成を追加した後:

-- my.cnf --

[クライアント] ポート = 3306 ソケット = /tmp/mysql.sock

[mysqld] ポート = 3306 ndbcluster ndb-connectstring=192.168.56.107 [mysqld_cluster] ndb-connectstring=192.168.56.107

datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock

[mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid

ndbluster の部分をコメントアウトすると、mysql は正しく起動しますが、ndbcluster 行または ndb-connectstring 行をコメントアウトしないと、mysql が起動します。私は何をすべきか?ndbcluster 構成があるときに mysql が起動しない理由がわかりません。何か問題がありますか?


2 つの ndbd プロセスのうち 1 つしか実行されていないことに気付きました (まだ開始状態です)。これにより、mysqld がクラスターに接続できなくなるため、最初に 2 番目の ndbd を開始し、ndb_mgm が両方が実行状態であると報告するまで待機する必要があります。


また、両方の nbdb を最初に接続しようとしましたが、最初の段階でスタックします。

ndb_mgm> ショー

クラスタ構成

[ndbd(NDB)] 2 ノード id=2 @192.168.50.102(mysql-5-5.29 ndb-7.2.10、開始、ノードグループ:0) id=3 @192.168.50.103(mysql-5-5.29 ndb-7.2. 10、開始、ノードグループ:0)

[ndb_mgmd(MGM)] 1 ノード ID=1 @192.168.50.101 (mysql-5-5.29 ndb-7.2.10)

[mysqld(API)] 2ノード id=5 (未接続、どのホストからの接続も受け付ける) id=6 (未接続、どのホストからの接続も受け付ける)

mgm ログ (ndb_l_cluster.log) を確認しました。

[MgmtSrvr] INFO -- ノード 3: 初期起動、2 の接続を待機中、ノード [すべて: 2 および 3 接続: 3 no-wait:] [MgmtSrvr] INFO -- ノード 2: 初期起動、3 の接続を待機中、ノード [すべて: 2 および 3 接続済み: 3 待機なし:]

私もmgmからそれらを開始しようとしました:

ndb_mgm> 2 start データベース ノード 2 を起動しています。

ndb_mgm> 3 start データベース ノード 3 を起動しています。

しかし、「ノード 2 : 開始が開始されました」というメッセージはありません...

CentOS 6.3 を使用して 3 つの仮想マシンでクラスターを実行しています。それは問題ですか?もしかして設定ファイル?


通常、このタイプの起動時の問題は、ファイアウォール ルールがクラスタ内の別のノードにあるランダムに高いポートへのアクセスをブロックしているために発生します。Ndbd ノードはこれらを使用して相互に通信します。

解決策は、これらのホスト間のすべての接続を許可するか、ServerPort で定義された特定のポートへの接続を許可することです。

参照: http://dev.mysql.com/doc/refman/5.5/en/mysql-cluster-ndbd-definition.html#ndbparam-ndbd-serverport および http://johanandersson.blogspot.com/2009/05/ cluster-fails-to-start-self-diagnosis.html


マシュー、あなたは正しかった!すべてのノード間のポートを許可し、すべて正常に動作しています!

どうもありがとう、マシューとアンドリュー!

于 2013-03-01T16:11:35.597 に答える