Vorheriges Thema: N-Ebenen-Anwendung mit Master-Master-Replikation über mehrere Knoten (für Lastenausgleich geeignet)

Nächstes Thema: PGSQL64 - PostgreSQL-Datenbank-Appliance


N-Tier-Anwendung, die auf unterschiedlichen Einrichtungen ausgeführt werden (für Lastenausgleich und Failover geeignet)

Das folgende Diagramm zeigt eine typische Verwendung der MYSQLR64-Appliance in einer Webanwendung, die in mehr als einer Einrichtung ausgeführt wird. Bei diesem Setup können Sie zwei oder mehr identische Anwendungen in unterschiedlichen Einrichtungen ausführen, wobei die Datenbank auf alle Anwendungen im Master-Master-Setup repliziert wird. Dies ist in zwei Fällen nützlich:

Master-Anwendung

N-Ebenen-Anwendung, die auf unterschiedlichen Einrichtungen ausgeführt wird (für Lastenausgleich und Failover geeignet)

Slave-Anwendung

Slave-Anwendung

Verwendete Appliances:

Clientanfrage kommt auf der Benutzer-Gateway an. Die Gateway leitet die Anfrage an das Lastenausgleichsmodul "web_lb" weiter, das die Anfrage an einen der Webserver "web1" und "web2" leitet. Die Webserver greifen auf die Masterdatenbank zu. Die master-Appliance ist mit der Remote-(Slave-)Anwendung verbunden (die eine identische Kopie ist, der einzige Unterschied besteht in der server_id "slave" und der Netzwerkeinrichtung), um die Datenbank zu replizieren. Die Remote-Anwendung ist mit der Master-Appliance über das vpn-Gateway verbunden, das so konfiguriert ist, dass nur der Anschluss vom vpn-Gateway der Remote-Anwendung möglich ist. Die Master- und Slave-Appliances in den beiden Anwendungen werden in einer Master-Master-Einrichtung ausgeführt, sodass sie immer über identische Daten verfügen.

Beispiel-Eigenschaftskonfiguration (Eigenschaften, die nicht aufgelistet werden, sollten mit den Standardwerten belassen werden):

Der Webzugriff erfolgt über admin-Gateway auf Port 8080.

master

Eigenschaftsname

Value

Hinweise

auto_create

1

Datenbank erstellen, wenn die Volumes leer sind.

error_log_filename

master-db.error

Name der Fehlerprotokolldatei, die auf dem Protokolldaten-Volume gespeichert werden soll.

error_log_level

Fehler

Fehlerprotokollierungs-Ebene

server_id

1

Masterserver (muss nicht 1 sein, sollte einen anderen Wert als die server_id auf dem Slave haben)

rpl_mode

master

Binäre Protokolle schreiben, um die Replikation zu ermöglichen

master vpn

Eigenschaftsname

Value

Hinweise

mode

server

Als Server funktionieren.

tunnel

certificates

Verwendung von SSL-Zertifikaten.

tcp_ports

3306,22

Von MYSQLR64 benötigte Ports zulassen.

ip_addr

master_vpn_ip

IP-Adresse des VPN in der Master-Anwendung.

remote_host

slave_vpn_ip

IP-Adresse des VPN in der Slave-Anwendung.

slave

Eigenschaftsname

Value

Hinweise

auto_create

1

Datenbank erstellen, wenn die Volumes leer sind.

error_log_filename

slave-db.error

Name der Fehlerprotokolldatei, die auf dem Protokolldaten-Volume gespeichert werden soll.

error_log_level

Fehler

Fehlerprotokollierungs-Ebene

server_id

2

Masterserver (muss nicht 2 sein, sollte einen anderen Wert als die server_id auf dem Slave haben)

rpl_mode

slave

Verbindung mit Master herstellen

slave vpn

Eigenschaftsname

Value

Hinweise

mode

Client

Als Client funktionieren.

tunnel

certificates

Verwendung von SSL-Zertifikaten.

auth_path

"client1"

Pfad zur SSL-Zertifikatdatei.

ip_addr

slave_vpn_ip

IP-Adresse des VPN in der Slave-Anwendung.

remote_host

master_vpn_ip

IP-Adresse des VPN in der Master-Anwendung.

Die Remote-Anwendung ist eine genaue Kopie, der einzige Unterschied besteht in der Netzwerkeinrichtung der Benutzer-, Admin- und VPN-Appliances, Verbindungen zwischen der VPN-Appliance und Master=/=Slave und der server_id und Master=/=Slave-Appliance (sollte eindeutig sein).

Migrieren von MYSQLR nach MYSQLR64 (und umgekehrt)

Wenn Sie von MYSQLR nach MYSQLR64 migrieren müssen (und umgekehrt), sollten Sie nicht nur die Volumes von der 32-Bit-Appliance auf einer 64-Bit-Version (oder umgekehrt) verwenden, da dies Datenbeschädigungen verursachen könnte. Es wird empfohlen, die Datenbank auf der alten Appliance zu sichern, die gesicherte Datei auf die neue Appliance zu übertragen und die Datenbank dann in die neue Appliance zu importieren.

Der gleiche Vorgang kann verwendet werden, um eine Datenbank aus einer älteren Datenbank-Appliance (MYSQL, MYSQL5, MYSQL64) oder eine MySQL-Datenbank zu migrieren, die nicht auf einer CA AppLogic-Appliance ausgeführt werden.

So migrieren Sie die Datenbank:

Hinweise

Beachten Sie Folgendes:

Wichtig! Stellen Sie bei der Erstellung von Benutzern für die Datenbank sicher, dass alle Benutzer ohne Einschränkungen auf dem Host erstellt werden, von dem aus sie sich verbinden. Zum Beispiel:

mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%'
    ->     IDENTIFIED BY 'some_pass' WITH GRANT OPTION;
In der Appliance verwendete Open-Source-Software von Drittanbietern

MYSQLR64 verwendet zusätzlich zu den Drittanbieter-Open-Source-Paketen der jeweiligen Basisklasse LUX64 die folgenden Drittanbieter-Open-Source-Pakete.

Software

Version

Geändert

Lizenz

Hinweise

aspell

0.60.3-7.1

Nein

LGPLv2.1

N/A

aspell-En

6.0-2.1

Nein

LGPLv2.1

N/A

curl

7.15.5-2

Nein

MIT

N/A

device-mapper-event

1.02.32-1

Nein

GPLv2

N/A

freetype

1.02.32-1

Nein

FTL

N/A

gmp

4.1.4-10.el5

Nein

LGPLV2.1

N/A

libidn

0.6.5-1.1

Nein

LGPLv2.1

N/A

libjpeg

6b-37

Nein

Distributable

N/A

libpng

1.2.10-7.0.2

Nein

zlib/libpng

N/A

lvm2

2.6.26-2.1.2.8

Nein

GPLv2.0

N/A

mysql

5.0.77-3.el5

Nein

GPL

N/A

mysql-server

5.0.77-3.el5

Nein

GPLv2

N/A

perl-DBD-MySQL

3.0007-2.el5

Nein

Artistic

N/A

perl-DBI

1.52-2.el5

Nein

Artistic

N/A

php-cli

5.1.6-23.el5

Nein

PHPv3.01

N/A

php-common

5.1.6-23.el5

Nein

PHPv3.01

N/A

php-gd

5.1.6-23.el5

Nein

PHPv3.01

N/A

php-mbstring

5.1.6-23.el5

Nein

PHPv3.01

N/A

php-mysql

5.1.6-23.el5

Nein

PHPv3.01

N/A

php-pdo

5.1.6-23.el5

Nein

PHPv3.01

N/A

rsync

2.6.8-3.1

Nein

GPLv2

N/A

samba-client

3.0.28-1.el5_2.1

Nein

GPLv2

N/A

samba-common

3.0.28-1.el5_2.1

Nein

GPLv2

N/A

sudo

1.6.8p12-10

Nein

ISC

N/A

lighttpd

1.4.18-1.el5.rf

Nein

BSD

N/A

perl-IPC-Run

0.84-1.el5.rf

Nein

Artistic

N/A

perl-Time-Duration

1.06-1.el5.rf

Nein

Artistic

N/A

phpMyAdmin

2.11.10-1

Nein

GPLv2

N/A

MYSQLR-Fehlerbehebung

MYSQLR-Appliance "hängt" beim Neustart

Ab MYSQLR 1.6.2 können Sie ein Kennwort für das Stammdatenbankkonto festlegen/ändern. Allerdings hat die MSYQLR-Appliance ein paar Stammkonten mit unterschiedlichen Hostnamen. Zum Festlegen/Ändern eines Kennworts sollten Sie immer das Konto "root@%" verwenden. Das Konto "root@%" ist das Konto, das Appliances, die mit dem Eingabe-Terminal von MYSQLR verbunden sind, für die Authentifizierung verwenden. Die anderen Stammkonten werden nur von lokalen Benutzern verwendet. Für diese Konten sollte niemals ein Kennwort festgelegt werden, da die MYSQLR-Appliance anderenfalls nicht gestartet werden kann.

Hinweis: Wenn Sie für das Konto "root@localhost" kein Kennwort festlegen, stellt dies kein Sicherheitsproblem dar, weil dieses Konto nur von lokalen Benutzern auf der Appliance verwendet werden kann und jeder Benutzer mit Zugriff auf die Appliance das Kennwort ändern kann.

Wiederherstellen einer MYSQLR-Appliance, die nach dem Ändern des Stammdatenbankkennworts nicht gestartet werden kann

Um eine Appliance wiederherzustellen, die durch Ändern des Kennworts für die Stammdatenbank nicht gestartet werden kann, führen Sie die folgenden Schritte aus:

  1. Starten Sie die Appliance oder Anwendung im Debug-Modus.
    Befehl zum Starten der Appliance
    comp start main.MYSQLR --debug 
    
    Befehl zum Starten der Anwendung
    app start --debug 
    

    Einige Minuten nach dem Starten der Appliance sollte die Anmeldung bei der Appliance möglich sein. Sie müssen warten, bis das Zeitlimit für die Appliance einsetzt.

  2. Melden Sie sich über SSH bei die Appliance an, und führen Sie die folgenden Befehle aus:
    mysql -p -e "update mysql.user set Password='' where User='root'" 
    mysqladmin -p flush-privileges 
    mysql -e 'update mysql.user set password=PASSWORD("NEWPASSWORD") where User="root" and Host="%"' 
    mysqladmin flush-privileges
    
  3. Starten Sie die Appliance neu, um zu überprüfen, ob sie neu gestartet wird und ob für die mysql-Verbindungen auf dem Eingabe-Terminal für den Benutzerstamm ein Kennwort benötigt wird.