PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Kann im MySQL-Cluster keine Tabellen anlegen



theton
20.09.2005, 10:29
Ich habe gerade ein kleines MySQL-Cluster (2 Speicherknoten, 4 API-Knoten, 1 Management-Konsole) aufgesetzt. Die einzelnen Nodes scheinen problemlos zu laufen, zumindest, wenn man der Management-Konsole glauben kann. Diese zeigt bei 'show' folgendes an:



ndb_mgm> show
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 @192.168.1.4 (Version: 4.1.14, starting, Nodegroup: 0, Master)
id=3 @123.123.123.123 (Version: 4.1.14, starting, Nodegroup: 0, Master)

[ndb_mgmd(MGM)] 1 node(s)
id=1 @213.160.80.35 (Version: 4.1.14)

[mysqld(API)] 4 node(s)
id=4 (not connected, accepting connect from any host)
id=5 (not connected, accepting connect from any host)
id=6 (not connected, accepting connect from any host)
id=7 (not connected, accepting connect from any host)


Die IP 123.123.123.123 habe ich hier geaendert, sie verweist normalerweise auf einen Server ausserhalb unseres LANs.
Das Problem ist nur, dass ich auf den Speicherknoten keine Tabellen anlegen kann. Wenn ich das versuche, wird mir gesagt, dass die Tabelle bereits existiert, obwohl die Datenbank, mit der ich arbeite, komplett leer ist. Das ganze sieht dann wie folgt aus:



Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2 to server version: 4.1.14-max

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> \u foo
Database changed
mysql> show tables;
Empty set, 1 warning (0.00 sec)

mysql> create table tester (i int) engine=ndbcluster;
ERROR 1050 (42S01): Table 'tester' already exists
mysql>


Kann sich irgendwer erklaeren, wie sowas moeglich ist? Oder hatte vielleicht schon jemand von euch ein aehnliches Problem und eine passende Loesung? Jeder noch so kleine Hinweis kann helfen!

theton
22.09.2005, 11:31
So, ich habe das Cluster jetzt soweit, dass erkannt wird, ob eine Tabelle existiert oder nicht. Trotzdem kann ich immer noch keine Tabellen anlegen. Anlegen von Datenbanken funktioniert problemlos. Wenn ich eine neue Tabelle in einer DB anlegen will, passiert aber folgendes:



Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 4.1.9-max

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> \u foo
Database changed
mysql> create table test1 (i int) engine=ndbcluster;
ERROR 1005 (HY000): Can't create table './foo/test1.frm' (errno: 4009)


show warnings gibt folgendes aus:



+-------+------+-------------------------------------------+
| Level | Code | Message |
+-------+------+-------------------------------------------+
| Error | 1296 | Got error 4009 'Cluster Failure' from NDB |
| Error | 1296 | Got error 4009 'Cluster Failure' from NDB |
+-------+------+-------------------------------------------+
2 rows in set (0.01 sec)


Hier mal die Konfigurationen, die ich verwende (natuerlich mit gaenderten IP-Adressen). Auf den Speicherknoten existiert die /etc/my.cnf, die folgendermassen aussieht:



[mysqld]
ndbcluster
default-table-type=NDBCLUSTER
ndb-connectstring='host=192.168.1.1' # Management Console
[mysql_cluster]
ndb-connectstring='host=192.168.1.1' # Management Console


Die config.ini der Management-Konsole sieht wie folgt aus:



[NDBD DEFAULT]
NoOfReplicas=2

[MYSQLD DEFAULT]
[NDB_MGMD DEFAULT]
[TCP DEFAULT]

# Management Server
[NDB_MGMD]
HostName=123.123.123.121

# Storage Nodes
[NDBD]
HostName=192.168.1.4
DataDir=/var/lib/mysql-cluster
[NDBD]
HostName=123.123.123.123
DataDir=/var/lib/mysql-cluster

# Setup node IDs for MySQL API servers (clients of the cluster)
[MYSQLD]
[MYSQLD]
[MYSQLD]
[MYSQLD]


Auf allen Knoten benutze ich MySQL-Max-4.1.9 (bei Version 4.1.14 bekam ich die seltsamen Fehler, dass nicht vorhandene Tabellen schon existieren) unnd zwar die Binary-Version von mysql.com.
Wo liegt hier das Problem? Habe ich irgendwas in einer Config vergessen?