Wie richte ich MySQL-Cluster ein?

7

Ich versuche in den letzten 3 Wochen mysql-cluster-gpl-7.1.17-linux-i686-glibc23.tar.gzauf dem ubuntu 10.04Server einzurichten und bin noch nicht erfolgreich.

Die Links, denen ich folgte, sind:

http://stepbysteparticles.com/index.php?option=com_content&view=article&id=48&Itemid=54

http://cyrenity.wordpress.com/2010/08/12/howto-setup-mysql-cluster-beginners-tutorial/

http://tech.jocke.no/2011/03/13/mysql-cluster-how-to-with-load-balancing-failover/

http://www.lod.com/whitepapers/mysql-cluster-howto.html

http://blog.rimuhosting.com/2011/07/06/building-database-clusters-with-mysql/

Alle Konfigurationen in den obigen Links sind mit einigen geringfügigen Änderungen fast gleich, und ich habe nur alle ausprobiert, wenn überhaupt, aber keine.

Ich habe bereits einen Beitrag in Serverfault verfasst, kann ihn aber immer noch nicht zum Laufen bringen.

Ich komme immer wieder hierher, wenn nach vielen Versuchen nichts klappt und jetzt bin ich es.

Außerdem verstehe ich nicht, ob die Installation zusammen mit else allein für die Ausführung auf SQL-Knoten ausreicht mysql-serveroder mysql-clienterforderlich ist . In meinem Fall ist das Setup .mysql-clustermysql-clustermysqld3 nodes=(data1+sql1 + data2+sql2 + mgmt node)

Häufige Fehler :

/etc/init.d/mysql.server start

Ausgabe:

Starting MySQL
 * Couldn't find MySQL manager (/usr/bin/mysqlmanager) or server (/usr/bin/mysqld_safe)

Ich habe sogar versucht zu kopieren /usr/local/mysql/bin/*, /usr/binaber es hat immer noch keinen Sinn, da es . * Manager of pid-file quit without updating file.beim Versuch zu starten aufschlussreich war!

Beim Versuch, den MySQL-Daemon auf dem Daten- / SQL-Knoten zu starten

cd / usr / local / mysql

./bin/mysqld_safe --user = mysql --defaults-file = / etc / my.cnf &

Ausgabe:

[1] 2338
root@web2:/usr/local/mysql# 111208 15:53:47 mysqld_safe Logging to syslog.
111208 15:53:47 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
111208 15:53:47 mysqld_safe mysqld from pid file /var/lib/mysql/web2.pid ended

[1]+  Done                    ./bin/mysqld_safe --user=mysql --defaults-file=/etc/my.cnf

Jemand nimmt auf und hilft mir bitte hier?. Hat jemand geklärt, ob es ein Problem mit Ubuntu oder mit der Cluster-Konfiguration gibt?. Ich muss dies auf Cloud-Servern implementieren, sobald ich erfolgreich bin.

Vielen Dank!

Update : 1

Jetzt auf SQL / Data-Knoten, die ich bereits entfernt hatte mysql-serverund mysql-clientdie ich im Allgemeinen als Basispaket für jede Neuinstallation installiere. Ich habe sie durch Ausführen des folgenden Befehls entfernt und es ist nur auf beiden Knoten mysql-clusterverfügbar, die ich nicht einrichten konnte:

apt-get entfernen mysql-client mysql-client-5.1 mysql-client-core-5.1 mysql-common mysql-server mysql-server-5.1 mysql-server-core-5.1

Update : 2

Ich habe die Probleme behoben, die ich hatte. Jetzt muss ich noch Folgendes tun.

  1. Was ist die beste Methode zum Hinzufügen / Entfernen mgmt, SQL/DATAwenn Knoten online sind?

    BEARBEITEN : Ich habe MySQL- Dokumente zum Hinzufügen von Knoten online ausprobiert, war aber verwirrt und funktionierte nur, wenn ich alle Knoten heruntergefahren und die Protokolle unter /var/lib/mysql-clusterallen Knoten entfernt habe.

  2. Welche zusätzlichen Konfigurationen sollte ich in meine my.confDatei aufnehmen, um eine optimale Leistungsoptimierung zu erzielen, DataMemoryund IndexMemorywenn jemand sie für die Produktion verwendet, kann er sie hier empfehlen oder einfügen?

Update : 3

  1. Wie konvertiere ich alle Tabellen-Engines der Datenbank in NDB, die auch Fremdschlüssel haben?

    BEARBEITEN : Ich habe ein Skript zum Konvertieren aller Tabellenmodule gefunden, aber alle Tabellen meiner Datenbank werden nicht wie für den Fehler konvertiert: FEHLER 1217 (23000) in Zeile 11: Eine übergeordnete Zeile kann nicht gelöscht oder aktualisiert werden: Eine Fremdschlüsseleinschränkung schlägt fehl

  2. Gibt es eine Möglichkeit, die Funktionen von NDB und InnoDB mit Cluster- und Multi-Master-Replikation ohne Risiko (Ausfallzeit) zu nutzen?

user3215
quelle
Löschen von MySQL Cluster, da es nicht vollständig für Webanwendungen geeignet ist (langsam joins, keine Unterstützung für Foreign keys...). Vielen Dank!
user3215

Antworten:

6

Oh .., nach mehreren Versuchen habe ich es selbst zum Laufen gebracht und es hat bis jetzt gedauert. Die Links sind sehr nette Tutorials und ich konnte die Probleme beheben, die ich auf diese Weise hatte.

Außerdem verstehe ich nicht, ob MySQL-Server oder MySQL-Client zusammen mit MySQL-Cluster installiert werden müssen, sonst reicht MySQL-Cluster allein aus, um MySQL auf SQL-Knoten auszuführen.

A : Ich bin nicht sicher, ob es mysql-clusterfunktioniert mysql-serverund mysql-clientwelche bereits installiert sind, aptaber ich bin sicher, dass diese oder ein zusätzliches Paket für mysql-cluster unter Ubuntu NICHT erforderlich sind, da es selbst alle Pakete enthält. Ich kann also mysqldvon einem Cluster-extrahierten Paket ausführen , und es ist nichts erforderlich, um dies zusätzlich für SQL-Knoten zu installieren.

./bin/mysqld_safe --user = mysql --defaults-file = / etc / my.cnf &

A : Sie müssen nicht mysqldmanuell ausgeführt werden und können stattdessen das /etc/init.d/mysql.server startKopieren von verwenden /usr/local/mysql/support-files/mysql.server, um den mysqld / SQL-Knoten zu starten.

Starten von MySQL * MySQL-Manager (/ usr / bin / mysqlmanager) oder Server (/ usr / bin / mysqld_safe) konnte nicht gefunden werden.

A : Die oben war der Fehler aufgetreten beim Versuch zu starten mysql.serverund das war , weil ich hatte mysql-serverund mysql-clientbereits installiert. Diese sollten vollständig entfernt werden (ich bin nicht sicher, ob Cluster zusammen mit ihnen erfolgreich ausgeführt werden kann), und ich habe es getan. Diese wurden nicht vollständig entfernt (wahrscheinlich muss ich verwenden apt --purge remove). Überprüfen Sie mit dpkg --get-selections | grep mysql, wenn Sie feststellen, dass deinstalldiese nicht vollständig deinstalliert sind, was sein sollte, sonst muss man oben Fehler sehen. Durch Ausführen des folgenden Befehls wurden sie vollständig entfernt und ich konnte mysql.server ohne Fehler starten.

aptitude purge $(dpkg --get-selections | grep deinstall | sed s/deinstall//) #To completely remove all deinstall package
pkill -9 mysqld
/etc/init.d/mysql.server

............ * Manager der PID-Datei beenden, ohne die Datei zu aktualisieren.

A : Beim Testen habe ich den obigen Fehler viele Male festgestellt mysql.server. Ich konnte dies vermeiden, indem ich datadem MySQL-Benutzer einfach die Berechtigung erteilte. chown -R mysql:mysql /usr/local/mysql/dataDieser Fehler war darauf zurückzuführen, dass ich mehrmals versucht habe, den MySQL-Cluster neu zu extrahieren, und daher der Fehler, da der Benutzer mysqlkeine PID-Datei im Datenverzeichnis ohne Berechtigung und Fehlerprotokoll erstellen konnte unter /var/lib/mysql-clusteron sql / data node hat mir geholfen, dies zu verfolgen.

Sollte bei der Zuweisung zu / usr / local / mysql / data sehr spezifisch sein. Wenn Sie dies nur tun chown -R mysql:mysql /usr/local/mysqlund ruhig bleiben, funktioniert es nicht und der gleiche Fehler wird ausgelöst!

Überprüfen Sie nach Erteilung der Berechtigung, ob mysqld funktioniert und ausgeführt wird /usr/local/mysql/bin/mysql -uroot -p. Selbst nach Eingabe des Passworts können Sie keine Verbindung herstellen und werfen einen Fehler aus. Dann ist das MySQL-Root-Passwort nicht festgelegt oder Sie haben es vergessen. Verwenden Sie den folgenden Befehl, um das MySQL-Root-Passwort zurückzusetzen, und versuchen Sie dann erneut, eine Verbindung herzustellen:

/usr/local/mysql/bin/mysqladmin -uroot password your-new-password-here

Weder bin ich mit der Antwort zufrieden, noch bin ich bereit, mich selbst zu akzeptieren und zu prämieren, da ich in diesem Clustering noch viel mehr zu tun habe. Ich bin bereit, meine Frage mit weiteren Fragen zu aktualisieren und warte darauf, Punkte an andere zu vergeben, die antworten werden. AKTUALISIERTE FRAGE!

Vielen Dank!

Aktualisieren

Wir haben darüber nachgedacht, MySQL Cluster für Produktionswebserver zu verwenden, auf denen Apache-Tomcat einige statische und JSP-Seiten bereitstellt, aber aufgrund der langsamen joins, nicht unterstützten Unterstützung foreign keysusw. Ich beende die Verwendung des MySQL-Clusters und schaue wieder auf die Replikation zurück, obwohl es Synchronisierungsprobleme gibt. Vielen Dank!

user3215
quelle
Es ist nicht sehr schwierig, Googeln oder in der MySQL-Dokumentation zu finden oder direkt verwendete Mysql Workbenchoder Mysql AdministratorGUI-Tools zu verwenden, wenn Sie es installiert haben. Vom Terminal aus können Sie versuchen CREATE USER 'jeffrey'@'localhost' IDENTIFIED BY 'mypass';, Benutzer zu erstellen und select * from mysql.user;Benutzer aufzulisten. Stellen Sie sicher , dass sie in der mysql - Shell - Prompt in diesem Fall ausführen , /usr/local/mysql/bin/mysql -uroot -pum sich auf mysql
user3215
Anstatt mysql-client zu entfernen, habe ich es überhaupt nicht installiert. Derzeit scheint meine Konfiguration einwandfrei zu funktionieren.
Metdos
Haben Sie jemals darüber nachgedacht, ob es eine Möglichkeit gibt, Datenbanken von zwei verschiedenen Engines (NDO & Innodb) zu replizieren / zu synchronisieren, da mysql-cluster die NDB-Engine verwendet?
user3215
1
In der Dokumentation heißt es, dass "Replikation von NDB auf Nicht-NDB-Tabellen möglich ist. Es ist möglich, NDB-Tabellen aus einem MySQL-Cluster, der als Master fungiert, mit anderen MySQL-Speicher-Engines wie InnoDB oder MyISAM auf einem Slave-MySQL zu replizieren Aufgrund der Unterschiede zwischen der mit MySQL Cluster bereitgestellten und der mit MySQL Server 5.1 enthaltenen Version von mysqld muss der Slave-Server auch eine mysqld-Binärdatei aus der MySQL Cluster-Distribution verwenden. "ref: dev.mysql.com/doc/refman/5.1/en/ mysql-cluster-replication.html Aber ich habe es nicht versucht.
Metdos
Oh ... Danke 'metdos', ich habe nur darüber nachgedacht, ob es möglich ist und du hast die Spur davon gezeigt. Ich werde diesen Link versuchen. Vielen Dank!
user3215