0

Windows 7 で実行している 2 台のコンピューターがあり、MySQL データベースのレプリケーションを試してみました。構成は以下の通りです。2 mgt ノード 2 データ ノード 2 mysqlid ノード

ファイルconfig.iniを構成しました

[ndbd default]
noofreplicas=2

[ndbd]
hostname=192.168.0.1
NodeId=1

[ndbd]
hostname=192.168.0.2
NodeId=2

[ndb_mgmd]
hostname=192.168.0.1
NodeId=101

[ndb_mgmd]
hostname=192.168.0.2
NodeId=102

[mysqld]
NodeId=51
hostname=192.168.0.1

[mysqld]
NodeId=52
hostname=192.168.0.2

および my.cnf(.1)

[mysqld]
ndb-nodeid=51
ndbcluster
datadir=c:\\Users\\Brian\\my_cluster\\mysqld_data
basedir=c:\\Users\\Brian\\mysqlc
port=5000
server-id=51
log-bin

および my.cnf(.2)

[mysqld]
ndb-nodeid=52
ndbcluster
datadir=c:\\Users\\Brian\\my_cluster\\mysqld_data
basedir=c:\\Users\\Brian\\mysqlc
port=5000
server-id=52
log-bin

ただし、ノード(マスター)のデータベースにログインして新しいデータベースを作成し、新しいテーブルを挿入すると、他のノードが同期できないことに気付きました。

誰かがこの問題に対処するのを手伝ってくれますか?

4

1 に答える 1

3

ブライアン、

まず、用語を確認するために、「MySQL レプリケーション」(これはmysqlds 間でデータを非同期的に複製します)。

mysqlds は MySQL Cluster パッケージに付属しているものと仮定します (「通常の」mysqlds は正しく動作しません)。

テーブルをローカルの mysqld ではなくデータ ノードに格納する (したがって、すべての mysqlds から見えるようにする) には、使用するストレージ エンジンとして MySQL Cluster を指定する必要があります: "CREATE TABLE mytab (... .) エンジン=NDBCLUSTER;". そうしないと、テーブルは InnoDB ストレージ エンジンで作成され、各 mysqld に対してローカルになります。

MySQL Cluster を完全にフォールト トレラントにする場合は、ndb_mgmds をデータ ノードと同じ場所に配置するのではなく、独自のホストに移動する必要があることに注意してください。この理由については、MySQL Cluster のフォールト トレランス - 展開の決定の影響 で説明されています。

アンドリュー。

于 2012-09-25T08:56:19.627 に答える